--- title: "Model definition: estimate_truncation()" output: rmarkdown::html_vignette bibliography: library.bib csl: https://raw.githubusercontent.com/citation-style-language/styles/master/apa-numeric-superscript-brackets.csl vignette: > %\VignetteIndexEntry{Model definition: estimate_truncation()} %\VignetteEngine{knitr::rmarkdown} %\VignetteEncoding{UTF-8} --- ```{r, include = FALSE} knitr::opts_chunk$set( collapse = TRUE, comment = "#>" ) ``` This model deals with the problem of _nowcasting_, or adjusting for right-truncation in reported count data. This occurs when the quantity being observed, for example cases, hospitalisations or deaths, is reported with a delay, resulting in an underestimation of recent counts. The `estimate_truncation()` model infers parameters of the underlying delay distribution from multiple snapshots of past data. This can be thought of as a Bayesian form of the chain-ladder nowcasting approach implemented in the [baselinenowcast](https://baselinenowcast.epinowcast.org/) package, with the added benefit of joint uncertainty quantification and delay estimation. For settings requiring time-varying delays or more detailed reporting structure, see the [epinowcast](https://package.epinowcast.org) package. Both `estimate_truncation()` and `estimate_dist()` return a delay distribution that downstream functions such as `estimate_infections()`, `estimate_secondary()`, or a further call to `estimate_truncation()` can consume. The main difference is the data they expect: `estimate_truncation()` takes successive snapshots of the same aggregate counts (a reporting triangle), while `estimate_dist()` takes individual-level (linelist) data with primary and secondary event dates. Because it works from aggregate counts rather than individual records, `estimate_truncation()` also fits an observation model for the counts on top of the delay, whereas `estimate_dist()` estimates the delay distribution alone. As a rough decision rule, use `estimate_dist()` when you have a linelist and `estimate_truncation()` when you have repeated snapshots of aggregate counts. ## Model Given snapshots $C^{i}_{t}$ reflecting reported counts for time $t$ where $i=1\ldots S$ is in order of recency (earliest snapshots first) and $S$ is the number of past snapshots used for estimation, we infer the parameters $\boldsymbol{\theta}$ of a discrete truncation distribution with cumulative mass function $Z(\tau | \boldsymbol{\theta})$. The truncation distribution can be any family supported by `dist_spec` (e.g. log-normal, gamma). The model assumes that final counts $D_{t}$ are related to observed snapshots via the truncation distribution such that \begin{equation} C^{i < S}_{t} \sim F\left(Z(T_i - t | \boldsymbol{\theta}) \cdot D(t) + \sigma\right) \end{equation} where $T_i$ is the date of the final observation in snapshot $i$, $Z(\tau)$ is defined to be zero for negative values of $\tau$, $\sigma$ is an additive noise term (controlled via the `noise` argument), and $F$ is the observation model (Poisson or negative binomial, controlled via `obs_opts()`). The final counts $D_{t}$ are estimated from the most recent snapshot as \begin{equation} D_t = \frac{C^{S}_{t}}{Z(T_S - t | \boldsymbol{\theta})} \end{equation} ### Priors \begin{align} \boldsymbol{\theta} &\sim \text{as specified by } \texttt{trunc\_opts()} \\ \varphi &\sim \text{as specified by } \texttt{obs\_opts()} \quad \text{(negative binomial only)} \\ \sigma &\sim \text{as specified by } \texttt{noise} \end{align}