# NOT RUN {
if(requireNamespace("EpiSoon")){
if(requireNamespace("forecastHybrid")){
## Example case data
reported_cases <- EpiNow2::example_confirmed[1:40]
generation_time <- list(mean = EpiNow2::covid_generation_times[1, ]$mean,
mean_sd = EpiNow2::covid_generation_times[1, ]$mean_sd,
sd = EpiNow2::covid_generation_times[1, ]$sd,
sd_sd = EpiNow2::covid_generation_times[1, ]$sd_sd,
max = 30)
incubation_period <- list(mean = EpiNow2::covid_incubation_period[1, ]$mean,
mean_sd = EpiNow2::covid_incubation_period[1, ]$mean_sd,
sd = EpiNow2::covid_incubation_period[1, ]$sd,
sd_sd = EpiNow2::covid_incubation_period[1, ]$sd_sd,
max = 30)
reporting_delay <- list(mean = log(5),
mean_sd = log(2),
sd = log(2),
sd_sd = log(1.5),
max = 30)
## Estimate Rt and infections from data
out <- estimate_infections(reported_cases, family = "negbin",
generation_time = generation_time,
delays = list(incubation_period, reporting_delay),
rt_prior = list(mean = 1, sd = 1),
samples = 1000, warmup = 500,
cores = ifelse(interactive(), 4, 1), chains = 4,
estimate_rt = TRUE,
verbose = FALSE, return_fit = TRUE)
## Forecast Rt and infections from estimates
forecast <- forecast_infections(
infections = out$summarised[variable == "infections"],
rts = out$summarised[variable == "R"],
gt_mean = out$summarised[variable == "gt_mean"]$mean,
gt_sd = out$summarised[variable == "gt_sd"]$mean,
gt_max = 30,
forecast_model = function(y, ...){
EpiSoon::forecastHybrid_model(y = y[max(1, length(y) - 21):length(y)],
model_params = list(models = "aefz", weights = "equal"),
forecast_params = list(PI.combination = "mean"), ...)},
horizon = 14,
samples = 1000)
forecast$summarised
}
}
# }
Run the code above in your browser using DataLab