charles loboz
2005-Nov-30 22:12 UTC
[R] unexpected result from KalmanRun (KalmanLike, StructTS)
(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?