This function uses convolution of time delay functions (which can themselves be a function of time, e.g. weekly periodicity) with incident infections to generate realistic looking outbreak metrics, including admission, death, symptom onset and testing.
Usage
sim_apply_delay.count_data(
df,
...,
fn_p_symptomatic = ~0.5,
fn_symptom_profile = cfg_gamma_ip_fn(~5),
fn_p_admitted = ~0.1,
fn_admission_profile = cfg_weekly_ip_fn(c(8, 8, 8, 8, 8, 9.5, 9)),
fn_p_died = ~0.05,
fn_death_profile = cfg_gamma_ip_fn(~14),
fn_p_tested = ~0.8,
fn_sample_profile = cfg_weekly_ip_fn(c(1, 1, 1, 1, 1, 1.5, 1.4)),
fn_result_profile = cfg_weekly_ip_fn(c(1, 1, 1, 1, 1, 1.6, 1.5)),
seed = Sys.time()
)
Arguments
- df
the output of
sim_poisson_model()
orsim_summarise_linelist()
, including acount
column and atime
column- fn_p_symptomatic, fn_p_admitted, fn_p_died, fn_p_tested
Function that returns a probability between 0 and 1 for each row of the input dataframe. A
purrr
style lambda is OK (e.g.~ 1
for always true) the first parameter of this will be time of infection. The function must be vectorised on its inputs (and consume additional inputs with...
)- fn_symptom_profile, fn_admission_profile, fn_death_profile
a function that takes time and returns the probability density of symptoms, admissions, or deaths over time since infection (i.e.
tau
) as an ip delay distribution. If possible it is a very good idea to pre-compute these distributions as they need to be assigned to every line in the input and this can be very slow.- fn_sample_profile
a function that takes time and returns the probability density of test sample being taken over time since symptoms.
- fn_result_profile
a function that takes time and returns the probability density of test result being available over time since test sampling.
- seed
RNG seed for reproducibility
Value
a long format set of counts of infections, symptom, admitted, death, sample (tests taken), results (test results).
Examples
tmp = sim_poisson_model(seed=100) %>% sim_apply_delay()
if(interactive()) {
plot_counts(tmp, mapping=ggplot2::aes(colour=statistic))+
ggplot2::geom_line()
}