transformSSM
transforms the general multivariate Gaussian state space model
to form suitable for sequential processing.
transformSSM(object, type = c("ldl", "augment"), tol)
Transformed model.
State space model object from function SSModel
.
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\).
Tolerance parameter for LDL decomposition (see ldl
). Default is
max(100, max(abs(apply(object$H, 3, diag)))) * .Machine$double.eps
.
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.