Learn R Programming

bssm (version 0.1.8)

nlg_ssm: General multivariate nonlinear Gaussian state space models

Description

Constructs an object of class nlg_ssm by defining the corresponding terms of the observation and state equation:

Usage

nlg_ssm(y, Z, H, T, R, Z_gn, T_gn, a1, P1, theta, known_params = NA,
  known_tv_params = matrix(NA), n_states, n_etas, log_prior_pdf,
  time_varying = rep(TRUE, 4), state_names = paste0("state",
  1:n_states))

Arguments

y

Observations as multivariate time series (or matrix) of length \(n\).

Z, H, T, R

An external pointers for the C++ functions which define the corresponding model functions.

Z_gn, T_gn

An external pointers for the C++ functions which define the gradients of the corresponding model functions.

a1

Prior mean for the initial state as a vector of length m.

P1

Prior covariance matrix for the initial state as m x m matrix.

theta

Parameter vector passed to all model functions.

known_params

Vector of known parameters passed to all model functions.

known_tv_params

Matrix of known parameters passed to all model functions.

n_states

Number of states in the model.

n_etas

Dimension of the noise term of the transition equation.

log_prior_pdf

An external pointer for the C++ function which computes the log-prior density given theta.

time_varying

Optional logical vector of length 4, denoting whether the values of Z, H, T, and R vary with respect to time variable (given identical states). If used, this can speed up some computations.

state_names

Names for the states.

Value

Object of class nlg_ssm.

Details

$$y_t = Z(t, \alpha_t, \theta) + H(t, \theta) \epsilon_t, (\textrm{observation equation})$$ $$\alpha_{t+1} = T(t, \alpha_t, \theta) + R(t, \theta)\eta_t, (\textrm{transition equation})$$

where \(\epsilon_t \sim N(0, I_p)\), \(\eta_t \sim N(0, I_m)\) and \(\alpha_1 \sim N(a_1, P_1)\) independently of each other, and functions \(Z, H, T, R\) can depend on \(\alpha_t\) and parameter vector \(\theta\).

Compared to other models, these general models need a bit more effort from the user, as you must provide the several small C++ snippets which define the model structure. See examples in the vignette.