forecast_infections {EpiNow2} | R Documentation |
Forecast infections from a given fit and trajectory of the time-varying reproduction number
Description
This function simulates infections using an existing fit to observed cases
but with a modified time-varying reproduction number. This can be used to
explore forecast models or past counterfactuals. Simulations can be run in
parallel using future::plan()
.
Usage
forecast_infections(
estimates,
R = NULL,
model = NULL,
samples = NULL,
batch_size = 10,
backend = "rstan",
verbose = interactive()
)
Arguments
estimates |
The |
R |
A numeric vector of reproduction numbers; these will overwrite the
reproduction numbers contained in |
model |
A compiled stan model as returned by |
samples |
Numeric, number of posterior samples to simulate from. The
default is to use all samples in the |
batch_size |
Numeric, defaults to 10. Size of batches in which to simulate. May decrease run times due to reduced IO costs but this is still being evaluated. If set to NULL then all simulations are done at once. |
backend |
Character string indicating the backend to use for fitting stan models. Supported arguments are "rstan" (default) or "cmdstanr". |
verbose |
Logical defaults to |
Value
A list of output as returned by estimate_infections()
but based on
results from the specified scenario rather than fitting.
See Also
dist_spec()
generation_time_opts()
delay_opts()
rt_opts()
estimate_infections()
trunc_opts()
stan_opts()
obs_opts()
gp_opts()
Examples
# set number of cores to use
old_opts <- options()
options(mc.cores = ifelse(interactive(), 4, 1))
# get example case counts
reported_cases <- example_confirmed[1:50]
# fit model to data to recover Rt estimates
est <- estimate_infections(reported_cases,
generation_time = generation_time_opts(example_generation_time),
delays = delay_opts(example_incubation_period + example_reporting_delay),
rt = rt_opts(prior = list(mean = 2, sd = 0.1), rw = 7),
stan = stan_opts(control = list(adapt_delta = 0.9)),
obs = obs_opts(scale = list(mean = 0.1, sd = 0.01)),
gp = NULL, horizon = 0
)
# update Rt trajectory and simulate new infections using it
R <- c(rep(NA_real_, 26), rep(0.5, 10), rep(0.8, 14))
sims <- forecast_infections(est, R)
plot(sims)
# with a data.frame input of samples
R_dt <- data.frame(
date = seq(
min(summary(est, type = "parameters", param = "R")$date),
by = "day", length.out = length(R)
),
value = R
)
sims <- forecast_infections(est, R_dt)
plot(sims)
#' # with a data.frame input of samples
R_samples <- summary(est, type = "samples", param = "R")
R_samples <- R_samples[,
.(date, sample, value)][sample <= 1000][date <= "2020-04-10"
]
R_samples <- R_samples[date >= "2020-04-01", value := 1.1]
sims <- forecast_infections(est, R_samples)
plot(sims)
options(old_opts)