# [R] unexpected result from KalmanRun (KalmanLike, StructTS)

From: charles loboz <charles_loboz_at_yahoo.com>
Date: Thu 01 Dec 2005 - 09:12:05 EST

(re-formulate, re-send, without html)

for vector y = c(1,2,3,4,5), H = 0.66 manual calculations
using the equations below give a =
c(1,1.66,2.55,3.51,4.50).
KalmanRun with these parameters gives res\$states =
(1,1,1,1,1)!

for Kalman Filter Durbin/Koopman give at p67 eqs 4.13:

v = y - Z a, F = Z P Z' + H, K = T P Z' / F + H,

a[t+1] = T a + K v, P[t+1] = T P L' + R Q R'

for P1 = 0, Q=0, T=Z=R=1 that reduces to:

v = y - a, F = H, K = H, a[t+1] = a + K v, P[t+1] = 0

(also equivalent to exponential moving average, Durbin/Koopman p49)

So I am getting a serious discrepancy between manual and KalmanRun computations. To make things more interesting, looking into the code of arima.c we have at line 109 an equivalent of

a[t+1] = anew + Pnew * resid0 / gain   where gain = mod\$h = H (by line 97), resid0 = y-a = v (by lines 94-96)
Since Pnew = 0, then a[t+1] = a, which explains why the computation
returns res\$states = c(1,1,1,1,1).

The help file says "'states', the contemporaneous state estimates",
which I assumed to mean 'a' in the equations above. But that
assumption does not agree with the numerical results. It also
does not agree with the coding(?) as a[t+1] = a + K v differs
substantially from a[t+1] = anew + Pnew * resid0 / gain. (all the previous lines of coding follow the kalman filter equations, but this one does not seem to - do we have some strong reformulation of the equations in the basic form?).

So, what does 'states' contain?

R-help@stat.math.ethz.ch mailing list