Models for the latent paths that drive infection models, such as the log reproduction number in Renewal(). Each wraps the constructor of the same name in ComposableTuringIDModels.jl; see its documentation for the full model definitions. NULL arguments use the Julia default.

AR(damp = NULL, init = NULL, epsilon_t = NULL)

MA(theta = NULL, epsilon_t = NULL)

RandomWalk(init = NULL, epsilon_t = NULL)

IID(dist = Normal(0, 1))

Intercept(dist)

FixedIntercept(value)

HierarchicalNormal(mean = NULL, std = NULL)

DiffLatentModel(model, init = NULL)

Arguments

damp

Prior for the damping coefficients: a distribution, a list of distributions (one per lag) or, for order one, a latent model for a time-varying coefficient. The two are on different scales: a distribution is a prior on the coefficient itself, while a latent model is squashed through tanh to keep the process stationary.

init

Prior for the initial values: a distribution or a list of distributions (one per lag or difference).

epsilon_t

Model for the innovations, typically a HierarchicalNormal().

theta

Prior for the moving-average coefficients, as for damp.

dist

A distribution.

value

Numeric. The fixed value.

mean

Numeric. Mean of the process.

std

Prior for the standard deviation.

model

A latent model for the differenced process.

Value

An object of class julia_latent.

Details

Arguments that Julia spells with a Greek letter are spelled out here: epsilon_t is its innovation slot and theta its moving-average coefficients.

  • AR(): autoregressive process whose order is the number of damping priors.

  • MA(): moving-average process whose order is the number of coefficient priors.

  • RandomWalk(): random walk.

  • IID(): independent draws from a distribution.

  • Intercept(): a single draw repeated over time.

  • FixedIntercept(): a fixed value repeated over time.

  • HierarchicalNormal(): non-centred normal draws with an inferred standard deviation, the default innovation model.

  • DiffLatentModel(): a process whose differences follow model, giving e.g. ARIMA-style processes when model is an AR().

Examples

# AR(2) on log Rt, as in Mishra et al. (2020)
AR(
  damp = list(truncated(Normal(0.8, 0.05), 0, 1),
              truncated(Normal(0.1, 0.05), 0, 1)),
  init = list(Normal(0, 0.2), Normal(0, 0.2)),
  epsilon_t = HierarchicalNormal(std = HalfNormal(0.1))
)
#> <julia latent spec>
#> AR(;
#>     damp = [
#>         truncated(Normal(0.8, 0.05), 0.0, 1.0),
#>         truncated(Normal(0.1, 0.05), 0.0, 1.0)
#>     ],
#>     init = [Normal(0.0, 0.2), Normal(0.0, 0.2)],
#>     ϵ_t = HierarchicalNormal(; std = HalfNormal(0.1))
#> )

RandomWalk(init = Normal(0, 0.25))
#> <julia latent spec>
#> RandomWalk(; init = Normal(0.0, 0.25))