Skip to content

Model

The model estimates four quantities jointly from the Epuyén line list: the incubation period of Andes hantavirus, the timing of each documented onward transmission relative to its source case's symptom onset, a weekly time-varying reproduction number R(t), and the over-dispersion of offspring counts per case.

Because exposure and symptom-onset dates in the line list are recorded as windows rather than exact dates, each case is given two latent variables: a true infection time T_inf and a true symptom-onset time T_onset. The model jointly explores these latent times together with the parameters governing the four quantities above.

Generation and serial intervals are not given separate priors. They are computed from the fitted incubation period and transmission timing distributions in post-processing: the generation interval is the transmission timing plus the source's incubation period, and the serial interval is the transmission timing plus the secondary's incubation period.

See the rendered analysis walkthrough for fitted results and the limitations page for known caveats.

Reproduction number

The R(t) reported here is the case reproduction number indexed by source symptom onset: the expected number of secondary infections produced by a case whose onset is at time t. Onset is the natural choice for these data: fitted transmission timing is tightly clustered around source onset (μ_δ ≈ 0, σ_δ ≈ 0.6 d), so a case's offspring are infected within roughly a day of the case becoming symptomatic. Because transmission is so concentrated at onset, this mostly coincides with the instantaneous reproduction number indexed by infection date.

Submodels

The joint model decomposes into independent components. Each subsection below states the math first and names the code entry point at the end. Notation: denotes a Normal truncated to non-negative values.

Incubation period

Implemented in incubation_model.

Transmission timing

The per-pair gap    can be negative (pre-symptomatic transmission).

Implemented in transmission_delta_model.

Latent infection and onset times

Each case has two continuous latents. is uniform over the recorded onset window . is uniform over the exposure window for sourced cases (or an 80-day pre-onset window for the index), capped above by :

where is the recorded exposure window. A per-pair constraint   enforces a positive generation interval. For each case the submodel adds

and, for sourced cases, also

Implemented in latent_times_model.

Real-time truncation

Active only when an obs_time cut-off is set. Two contributions.

First, the right-truncation on the index Inc, on the observation event   :

Sourced cases need no such factor; their exposure window already bounds below  .

Second, the per-pair offspring-completeness denominator. With    , each sourced case contributes

Implemented in truncation_model; uses the ConvolvedDelays distribution.

Reproduction number

evolves as a random walk on weekly knots  :

Between knots, is linearly interpolated. The reported is the case reproduction number indexed by source symptom onset. Implemented in random_walk_rt_model.

The   prior reflects our experience estimating transmission intensity across a range of outbreaks: at weekly knot spacing it puts the typical weekly innovation SD around 5 % per day, with the 95th percentile near 15 % per day — wide enough to accommodate outbreak-scale swings while ruling out biologically implausible per-week step sizes.

Negative-Binomial dispersion

The standard reparameterisation:

Implemented in nb_dispersion_model.

Case likelihood

For each case with onset falling in bin :

with the offspring-completeness   in retrospective mode and     in real-time mode. The Negative-Binomial is mean–dispersion parameterised so    and      . Implemented in case_model.

Inference

NUTS, 4 chains, 1000 post-warmup samples each, target_accept = 0.95. Default seed: 20260508. Reverse-mode AD via Mooncake.

Real-time predictions

Two counterfactual predictors give posterior-predictive future onset counts conditional on a real-time fit at cut-off obs_time. Both reuse the same Gamma–Poisson conjugate update on each source's true offspring rate.

For source with onset at let    (observation horizon) and the intervention horizon (defaults to ; equals under the natural chain). The latent rate of source 's offspring follows the conjugate posterior

with  . Future onsets are then

The controlled-outbreak default   gives    with  ; the natural-chain limit    gives   .