Nothing
## ----include = FALSE----------------------------------------------------------
knitr::opts_chunk$set(
collapse = TRUE,
comment = "#>"
)
## ----setup, echo=FALSE, warning=FALSE-----------------------------------------
suppressMessages({
library(tidyr)
library(dplyr)
library(ggplot2) ; theme_set(theme_bw())
library(lubridate)
library(patchwork)
library(ern)
})
## ----load sample data---------------------------------------------------------
# Loading sample SARS-CoV-2 wastewater data
ww.conc = ern::ww.data
head(ww.conc)
## ----define fec shed and gi---------------------------------------------------
# Define SARS-CoV-2 fecal shedding and generation interval distributions
dist.fec = ern::def_dist(
dist = "gamma",
mean = 12.90215,
mean_sd = 1.136829,
shape = 1.759937,
shape_sd = 0.2665988,
max = 33
)
dist.gi = ern::def_dist(
dist = "gamma",
mean = 6.84,
mean_sd = 0.7486,
shape = 2.39,
shape_sd = 0.3573,
max = 15
)
## ----plot dist fecal, fig.width = 6-------------------------------------------
plot_dist(dist.fec) + labs(title = paste0("Mean fecal shedding distribution (", dist.fec$dist, ")"))
## ----plot dist gi, fig.width = 6----------------------------------------------
plot_dist(dist.gi) + labs(title = paste0("Mean generation interval distribution (", dist.gi$dist, ")"))
## ----initializing smoothing and Rt params-------------------------------------
# Initializing scaling factor
scaling.factor = 1
# Initializing smoothing parameters
prm.smooth = list(
align = 'center', # smoothing alignment
method = 'loess', # smoothing method
span = 0.30, # smoothing span (used for loess smoothing only)
floor = 5 # minimum smoothed concentration value (optional, loess smoothing only)
)
# Initialzing Rt settings
prm.R = list(
iter = 20, # number of iterations in Rt ensemble
CI = 0.95, # confidence interval
window = 10, # Time window for Rt calculations
config.EpiEstim = NULL # optional EpiEstim configuration for Rt calculations
)
## ----estimate rt--------------------------------------------------------------
r.estim = ern::estimate_R_ww(
ww.conc = ww.conc,
dist.fec = dist.fec,
dist.gi = dist.gi,
scaling.factor = scaling.factor,
prm.smooth = prm.smooth,
prm.R = prm.R,
silent = TRUE # suppress output messages
)
## ----plot rt, fig.width = 6, fig.height = 6, warning = FALSE------------------
g = ern::plot_diagnostic_ww(r.estim)
plot(g)
## ----load-data----------------------------------------------------------------
dat <- (ern::cl.data
|> dplyr::filter(
pt == "qc",
dplyr::between(date, as.Date("2021-07-01"), as.Date("2021-09-01"))
))
## ----load-dists---------------------------------------------------------------
# define reporting delay
dist.repdelay = ern::def_dist(
dist = 'gamma',
mean = 5,
mean_sd = 1,
sd = 1,
sd_sd = 0.1,
max = 10
)
# define reporting fraction
dist.repfrac = ern::def_dist(
dist = "unif",
min = 0.1,
max = 0.3
)
# define incubation period
dist.incub = ern::def_dist(
dist = "gamma",
mean = 3.49,
mean_sd = 0.1477,
shape = 8.5,
shape_sd = 1.8945,
max = 8
)
# define generation interval
dist.gi = ern::def_dist(
dist = "gamma",
mean = 6.84,
mean_sd = 0.7486,
shape = 2.39,
shape_sd = 0.3573,
max = 15
)
## ----plot-dist-repdelay, fig.width = 6----------------------------------------
plot_dist(dist.repdelay) + labs(title = paste0("Mean reporting delay distribution (", dist.repdelay$dist, ")"))
## ----plot-dist-incub, fig.width = 6-------------------------------------------
plot_dist(dist.incub) + labs(title = paste0("Mean incubation period distribution (", dist.incub$dist, ")"))
## ----plot-dist-gi, fig.width = 6----------------------------------------------
plot_dist(dist.gi) + labs(title = paste0("Mean generation interval distribution (", dist.gi$dist, ")"))
## ----init-prms----------------------------------------------------------------
# settings for daily report inference
prm.daily = list(
method = "renewal",
popsize = 1e7, # population size
# Here, low value for `burn` and `iter`
# to have a fast compilation of the vignette.
# For real-world applications, both `burn` and `iter`
# should be significantly increased (e.g., 10,000).
# Also, the number of chains should be at least 3
# (instead of 1 here) for real-world applications.
burn = 100,
iter = 200,
chains = 1,
prior_R0_shape = 2,
prior_R0_rate = 0.6,
prior_alpha_shape = 1,
prior_alpha_rate = 1
)
# settings for checks of daily inferred reports
prm.daily.check = list(
agg.reldiff.tol = 200
)
# smoothing settings for daily inferred reports
prm.smooth = list(
method = "rollmean",
window = 3,
align = 'center'
)
# Rt settings
prm.R = list(
iter = 10, # number of iterations in Rt ensemble
CI = 0.95, # 95% confidence interval
window = 7, # time window for each Rt estimate
config.EpiEstim = NULL
)
## ----est-rt-------------------------------------------------------------------
r.estim = estimate_R_cl(
cl.data = dat,
dist.repdelay = dist.repdelay,
dist.repfrac = dist.repfrac,
dist.incub = dist.incub,
dist.gi = dist.gi,
prm.daily = prm.daily,
prm.daily.check = prm.daily.check,
prm.smooth = prm.smooth,
prm.R = prm.R,
silent = TRUE # suppress output messages
)
## ----plot-rt, fig.width = 6, fig.height = 6, warning = FALSE------------------
g = plot_diagnostic_cl(r.estim)
plot(g)
Any scripts or data that you put into this service are public.
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.