In addition to the shedding load distribution, we also require a scaling factor that describes how much total genetic material is shed by the average infected individual and is detectable at the sampling site. We call this scaling factor shedding load per case because it scales the estimated number of infections in our model. The shedding load per case (gc/person) depends both on biological factors as well as on the sewage system and quantification method.
Fortunately, if we are only interested in the effective reproduction number, a rough estimate for the shedding load per case is sufficient: getting it wrong cannot strongly bias the reproduction number estimates, and will distort the uncertainty of estimates only in rather extreme cases.
Disclaimer on interpretation of estimated infections
One important aspect to keep in mind when interpreting the number of infections modeled in EpiSewer is that when modeling wastewater data, the reference population for the infection dynamics is often not clear:
- The population in the catchment does not have to be identical with the population relevant for the infection process. For example, if the catchment area of the sampled treatment plant covers only a certain region of a city, then the population relevant for shedding might only be a subset of the overall population in which relevant transmissions occur.
- The population in the catchment may also vary over time due to every-day mobility or special events.
- The same probably applies even to catchments covering a whole city if there is sufficient mixing with populations from other cities.
Ultimately, this means that the population modeled in the infection process might be substantially larger than the catchment population. EpiSewer currently has no specific functionality to represent this difference (although it is planned for future versions).
This is also another reason why the number of infections should not be interpreted in terms of true absolute incidence or prevalence (in addition to the fact that it ultimately depends on the assumed load per case, which is very difficult to specify correctly).
Calibration to minimum number of infections
By default, EpiSewer
will calibrate the load per case
such that the estimated number of infections does not go considerably
below 10 infections per day. This is a robust and conservative default
in the sense that it most likely underestimates the true number
of infections (see considerations above) - which in turns means that our
uncertainty of epidemiological parameters is potentially too large, but
not too small. You can adapt this default with the
min_cases
argument in sewer_assumptions()
:
ww_assumptions <- sewer_assumptions(
min_cases = 30
# add further assumptions here
)
or using the load_per_case_calibrate()
function:
load_per_case_calibrate(min_cases = 30)
## shedding
## |- load_per_case_calibrate
❗ Note that the default is deliberately not
min_cases=1
. This is because the continuous approximations
used by the stochastic infection model of EpiSewer start to break down
when infections numbers become extremely small. This can affect sampling
speed and accuracy of estimates. Aside from this, it is also rather
unlikely for most catchments to detect genetic material of a pathogen if
it is only shed by a single individual in the whole catchment.
Calibration to case data
If we also have case data available, we can provide this to EpiSewer via
ww_data <- sewer_data(
cases = SARS_CoV_2_Zurich$cases
# add further data here
)
or using the load_per_case_calibrate()
function:
load_per_case_calibrate(cases = SARS_CoV_2_Zurich$cases)
## shedding
## |- load_per_case_calibrate
This will calibrate the shedding load per case such that the estimated number of infections roughly matches the observed number of cases.
If you want to do and check this manually, you can use the function
suggest_load_per_case()
. The argument
ascertainment_prop
can be used to account for
underdetection of infections. For simplicity, we here assume
ascertainment_prop=1
, meaning that 100% of infections
become confirmed cases (which is often not realistic).
suggest_load_per_case(
SARS_CoV_2_Zurich$measurements,
SARS_CoV_2_Zurich$cases,
SARS_CoV_2_Zurich$flows,
ascertainment_prop = 1
)
## [1] 1.3e+11