← Back to all sparks
E

epinowcast

ANALYTICS
Velocity0.0

A Bayesian Framework for Real-time Infectious Disease Surveillance

epinowcast added Gaussian processes to its formula interface and made the sampler twice as fast

rbayesianstanepidemiologynowcastinggaussian process
Current state
epinowcast is a Bayesian nowcasting toolkit for right-truncated epidemiological count data, built on Stan with a brms-style formula interface. Over 2025-2026 it moved from experimental to stable, prepared for CRAN, and broadened past nowcasting proper — 0.6.0's max_delay = 1 support allows purely retrospective fitting of fully reported counts. 0.7.0 in July 2026 is the largest modelling release in the window.
Where it's heading
The package is converging on a general formula-driven latent process toolkit rather than a single nowcasting model. rw() and arima() were joined in 0.7.0 by gp(), a Hilbert-space reduced-rank Gaussian process placeable on any module's linear predictor with selectable kernels and an integration order matching arima()'s d. Alongside it, the fixed-effects design and integrated residuals are now centred against the module intercept, which the notes report roughly doubles sampling speed on a weekly random-walk growth model.
Prediction
With CRAN preparation done in 0.6.0 and the model surface substantially widened in 0.7.0, the next release is likely a CRAN submission plus consolidation of the gp() kernels. The release notes repeatedly benchmark against EpiNow2's behaviour, suggesting continued convergence between the two codebases.

Recent moves

  1. 1mo ago

    gp() brings Gaussian processes to every module, and centring doubles sampling speed

    ⚡ SPARK

    A gp() formula helper places an approximate Gaussian process on any module's linear predictor — growth rate, latent-to-observation proportion, both delay forms, report hazards and missing-reference proportion — using a Hilbert-space reduced-rank approximation with five selectable kernels. Separately, the fixed-effects design and integrated residuals are centred against the module intercept, decorrelating intercept from slopes and latent drift.

    View source ↗
  2. 3mo ago

    CRAN preparation, inspection methods, and retrospective-only fitting

    Moves cmdstanr and scoringutils to Suggests, adds print(), summary(), plot() and enw_get_data() accessors, and restructures the getting-started vignette around three competing models to present the package as a toolkit rather than one model. max_delay = 1 support means it can now fit fully reported counts with no nowcasting at all, widening the use case beyond right-truncation.

    View source ↗
  3. 7mo ago

    Structural reporting patterns for non-daily reporting cycles

    Adds enw_structural_reporting_metadata() and enw_dayofweek_structural_reporting() so weekly or other non-daily reporting cycles can be modelled over a daily generative process, with precomputed sparse index lookups for the aggregation. Closes a gap the features vignette had listed as in development.

    View source ↗
  4. 10mo ago

    Lifecycle moves to stable; pathfinder and negative binomial support

    The package declares interface stability, adds experimental pathfinder support for rapid prototyping and HMC initialisation, and introduces a negative binomial observation model with a linear mean-variance relationship. Sparse design matrices address memory pressure on larger models. The stability declaration is the notable part — it signals the formula interface is now something to build on.

    View source ↗
  5. 2y ago

    Non-parametric reference date models and a stricter max_delay default

    Adds support for non-parametric reference date models alongside the existing parametric form, and changes the max_delay default to the maximum observed delay with a warning, pushing users to set it from their data. Broad contributor list on this release relative to the ones around it.

    View source ↗
  6. 3y ago

    Fix initial conditions for cmdstan 2.32.1 compatibility

    Passes optional initial conditions as arrays to satisfy a cmdstan 2.32.1 change, plus input checking on max_delay. Required to use newer cmdstan, but no modelling change.

    View source ↗