Learn R Programming

KFAS (version 1.5.1)

transformSSM: Transform Multivariate State Space Model for Sequential Processing

Description

transformSSM transforms the general multivariate Gaussian state space model to form suitable for sequential processing.

Usage

transformSSM(object, type = c("ldl", "augment"), tol)

Value

model

Transformed model.

Arguments

object

State space model object from function SSModel.

type

Option "ldl" performs LDL decomposition for covariance matrix \(H_t\), and multiplies the observation equation with the \(L_t^{-1}\), so \(\epsilon_t^* \sim N(0,D_t)\). Option "augment" adds \(\epsilon_t\) to the state vector, so \(Q_t\) becomes block diagonal with blocks \(Q_t\) and \(H_t\).

tol

Tolerance parameter for LDL decomposition (see ldl). Default is max(100, max(abs(apply(object$H, 3, diag)))) * .Machine$double.eps.

Details

As all the functions in KFAS use univariate approach i.e. sequential processing, the covariance matrix \(H_t\) of the observation equation needs to be either diagonal or zero matrix. Function transformSSM performs either the LDL decomposition of \(H_t\), or augments the state vector with the disturbances of the observation equation.

In case of a LDL decomposition, the new \(H_t\) contains the diagonal part of the decomposition, whereas observations \(y_t\) and system matrices \(Z_t\) are multiplied with the inverse of \(L_t\). Note that although the state estimates and their error covariances obtained by Kalman filtering and smoothing are identical with those obtained from ordinary multivariate filtering, the one-step-ahead errors \(v_t\) and their variances \(F_t\) do differ. The typical multivariate versions can be obtained from output of KFS using mvInnovations function.

In case of augmentation of the state vector, some care is needed interpreting the subsequent filtering/smoothing results: For example the muhat from the output of KFS now contains also the smoothed observational level noise as that is part of the state vector.