Plotting method for objects of class fkf
. This function
provides tools for graphical analysis of the Kalman filter output:
Visualization of the state vector, QQplot of the individual
residuals, QQplot of the Mahalanobis distance, auto as well as
crosscorrelation function of the residuals.
1 2 3 
x 
The output of 
type 
A string stating what shall be plotted (see Details). 
CI 
The confidence interval in case 
at.idx 
An vector giving the indexes of the predicted state variables
which shall be plotted if 
att.idx 
An vector giving the indexes of the filtered state variables
which shall be plotted if 
... 
Arguments passed to either 
The argument type
states what shall be plotted. type
must partially match one of the following:
state
The state variables are plotted. By the
arguments at.idx
and att.idx
, the user can specify
which of the predicted (at) and filtered
(att) state variables will be drawn.
resid.qq
Draws a QQplot for each residualseries invt
.
qqchisq
A ChiSquared QQplot will be drawn to graphically test for multivariate normality of the residuals based on the Mahalanobis distance.
acf
Creates a pairs plot with the autocorrelation
function (acf
) on the diagonal panels and the
crosscorrelation function (ccf
) of the residuals on the
offdiagnoal panels.
Invisibly returns an list with components:
distance  The Mahalanobis distance of the residuals as a vector of length n. 
std.resid  The standardized residuals as an d * nmatrix. It should hold that std.resid[i,j] iid N_d(0, I), 
where d denotes the dimension of the data and n the number of observations.
David Luethi, Philipp Erb, Simon Otziger
fkf
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37  ## Local level model for the treering width data.
## Transition equation:
## alpha[t+1] = alpha[t] + eta[t], eta[t] ~ N(0, HHt)
## Measurement equation:
## y[t] = alpha[t] + eps[t], eps[t] ~ N(0, GGt)
y < treering
y[c(3, 10)] < NA # NA values can be handled
## Set constant parameters:
dt < ct < matrix(0)
Zt < Tt < matrix(1)
a0 < y[1] # Estimation of the first width
P0 < matrix(100) # Variance of 'a0'
## Estimate parameters:
fit.fkf < optim(c(HHt = var(y, na.rm = TRUE) * .5,
GGt = var(y, na.rm = TRUE) * .5),
fn = function(par, ...)
fkf(HHt = matrix(par[1]), GGt = matrix(par[2]), ...)$logLik,
yt = rbind(y), a0 = a0, P0 = P0, dt = dt, ct = ct,
Zt = Zt, Tt = Tt, check.input = FALSE)
## Filter Nile data with estimated parameters:
fkf.obj < fkf(a0, P0, dt, ct, Tt, Zt, HHt = matrix(fit.fkf$par[1]),
GGt = matrix(fit.fkf$par[2]), yt = rbind(y))
## Plot the width together with fitted local levels:
plot(y, main = "Treering data")
lines(ts(fkf.obj$att[1, ], start = start(y), frequency = frequency(y)), col = "blue")
legend("top", c("Treering data", "Local level"), col = c("black", "blue"), lty = 1)
## Check the residuals for normality:
plot(fkf.obj, type = "resid.qq")
## Test for autocorrelation:
plot(fkf.obj, type = "acf", na.action = na.pass)

Questions? Problems? Suggestions? Tweet to @rdrrHQ or email at ian@mutexlabs.com.
All documentation is copyright its authors; we didn't write any of that.