{EpiNow2}
estimates the time-varying reproduction number, growth rate,
and doubling time using a range of open-source tools (Abbott et
al.), and current
best practices (Gostic et
al.). It aims to help
users avoid some of the limitations of naive implementations in a
framework that is informed by community feedback and is actively
supported.
Forecasting is also supported for the time-varying reproduction number, infections, and reported cases using the same generative process approach as used for estimation.
More details
{EpiNow2}
estimates the time-varying reproduction number on cases by
date of infection (using a similar approach to that implemented in
{EpiEstim}
). True infections,
treated as latent and unobserved, are estimated and then mapped to
observed data (for example cases by date of report) via one or more
delay distributions (in the examples in the package documentation these
are an incubation period and a reporting delay) and a reporting model
that can include weekly periodicity.
Uncertainty is propagated from all inputs into the final parameter estimates, helping to mitigate spurious findings. This is handled internally. The time-varying reproduction estimates and the uncertain generation time also give time-varying estimates of the rate of growth.
Models provided
{EpiNow2}
provides three models:
-
estimate_infections()
: Reconstruct cases by date of infection from reported cases. -
estimate_secondary()
: Estimate the relationship between primary and secondary observations, for example, deaths (secondary) based on hospital admissions (primary), or bed occupancy (secondary) based on hospital admissions (primary). -
estimate_truncation()
: Estimate a truncation distribution from multiple snapshots of the same data source over time. For more flexibility, check out the{epinowcast}
package.
The default model in estimate_infections()
uses a non-stationary
Gaussian process to estimate the time-varying reproduction number and
infer infections. Other options, which generally reduce runtimes at the
cost of the granularity of estimates or real-time performance, include:
- A stationary Gaussian process (faster to estimate but currently gives reduced performance for real time estimates).
- User specified breakpoints.
- A fixed reproduction number.
- A piecewise constant, combining a fixed reproduction number with breakpoints.
- A random walk, combining a fixed reproduction number with regularly spaced breakpoints (i.e weekly).
- A deconvolution/back-calculation method for inferring infections, followed with calculating the time-varying reproduction number.
- Adjustment for the remaining susceptible population beyond the forecast horizon.
The documentation for
estimate_infections
provides
examples of the implementation of the different options available.
{EpiNow2}
is designed to be used via a single function call to two
functions:
-
epinow()
: Estimate Rt and cases by date of infection and forecast these infections into the future. -
regional_epinow()
: Efficiently runepinow()
across multiple regions in an efficient manner.
These two functions call
estimate_infections()
, which
works to reconstruct cases by date of infection from reported cases.
For more details on using each function see the function documentation.
Install the released version of the package:
install.packages("EpiNow2")
Install the development version of the package with:
install.packages("EpiNow2", repos = "https://epiforecasts.r-universe.dev")
Alternatively, install the development version of the package with pak as follows (few users should need to do this):
# check whether {pak} is installed
if (!require("pak")) {
install.packages("pak")
}
pak::pkg_install("epiforecasts/EpiNow2")
If using pak
fails, try:
# check whether {remotes} is installed
if (!require("remotes")) {
install.packages("remotes")
}
remotes::install_github("epiforecasts/EpiNow2")
Windows users will need a working installation of Rtools in order to build the package from source. See here for a guide to installing Rtools for use with Stan (which is the statistical modelling platform used for the underlying model). For simple deployment/development a prebuilt docker image is also available (see documentation here).
Getting Started
The Getting Started vignette is your quickest entry point to the package. It provides a quick run through of the two main functions in the package and how to set up them up. It also discusses how to summarise and visualise the results after running the models.
Package website
The package website provides various resources for learning about the package, including the function reference, details about each model (model definition), workflows for each model (usage), and case studies or literature of applications of the package.
End-to-end workflows
The workflow vignette provides guidance on the end-to-end process of estimating reproduction numbers and performing short-term forecasts for a disease spreading in a given setting.
Model definitions
On the website, we provide the mathematical definition of each model.
For example, the model definition vignette for estimate_infections()
can be found here.
Example implementations
A simple example of using the package to estimate a national Rt for Covid-19 can be found here.
We welcome all contributions. If you have identified an issue with the package, you can file an issue here. We also welcome additions and extensions to the underlying model either in the form of options or improvements. If you wish to contribute in any form, please follow the package contributing guide.