DLM filtering
The functions applies Kalman filter to compute filtered
values of the state vectors, together with their
variance/covariance matrices. By default the function returns an object
of class "dlmFiltered"
. Methods for residuals
and tsdiag
for objects of class "dlmFiltered"
exist.
dlmFilter(y, mod, debug = FALSE, simplify = FALSE)
y |
the data. |
mod |
an object of class |
debug |
if |
simplify |
should the data be included in the output? |
The calculations are based on the singular value decomposition (SVD) of the relevant matrices. Variance matrices are returned in terms of their SVD.
Missing values are allowed in y
.
A list with the components described below. If simplify
is
FALSE
, the returned list has class "dlmFiltered"
.
y |
The input data, coerced to a matrix. This is present only if
|
mod |
The argument |
m |
Time series (or matrix) of filtered values of the state vectors. The series starts one time unit before the first observation. |
U.C |
See below. |
D.C |
Together with |
a |
Time series (or matrix) of predicted values of the state vectors given the observations up and including the previous time unit. |
U.R |
See below. |
D.R |
Together with |
f |
Time series (or matrix) of one-step-ahead forecast of the observations. |
The observation variance V
in mod
must be nonsingular.
Giovanni Petris GPetris@uark.edu
Zhang, Y. and Li, X.R., Fixed-interval smoothing algorithm
based on singular value decomposition, Proceedings of the 1996
IEEE International Conference on Control Applications.
Giovanni Petris (2010), An R Package for Dynamic Linear
Models. Journal of Statistical Software, 36(12), 1-16.
http://www.jstatsoft.org/v36/i12/.
Petris, Petrone, and Campagnoli, Dynamic Linear Models with R,
Springer (2009).
See dlm
for a description of dlm objects,
dlmSvd2var
to obtain a variance matrix from its SVD,
dlmMLE
for maximum likelihood estimation,
dlmSmooth
for Kalman smoothing, and
dlmBSample
for drawing from the posterior distribution
of the state vectors.
nileBuild <- function(par) { dlmModPoly(1, dV = exp(par[1]), dW = exp(par[2])) } nileMLE <- dlmMLE(Nile, rep(0,2), nileBuild); nileMLE$conv nileMod <- nileBuild(nileMLE$par) V(nileMod) W(nileMod) nileFilt <- dlmFilter(Nile, nileMod) nileSmooth <- dlmSmooth(nileFilt) plot(cbind(Nile, nileFilt$m[-1], nileSmooth$s[-1]), plot.type='s', col=c("black","red","blue"), ylab="Level", main="Nile river", lwd=c(1,2,2))
Please choose more modern alternatives, such as Google Chrome or Mozilla Firefox.