time series - Kalman filter in R -
i'm trying use kalman filter in r , need in determining whether i've done correctly , on how measure effectiveness of filter. using dse package in r. i've included code below
- i've built simple state space model in r can summarized αt = 1.1*αt−1 + ηt state model , yt = αt + rt measurement model, ηt , rt gaussian noise models.
- in package dse, i've simulated using functions filter=dse::ss() formulate above state space model, used function simulation=simulate(filter,...) simulate observations model, , used function l(filter, simulate) build estimation model filter.
i'm not sure if last bullet think supposed do, or hope should doing. expect to, @ each time step, calculate revised estimate of model of true underlying path, based on observations (simulation=simulate()) based on noisy model fed (filter=dse:ss()). after run l(filter, simulation), expect output close simulated observations, , eventually, converge of underlying model filter=dse::ss().
i'm not sure whether happening, , i'm not sure how measure it. plotted curve of difference between model generated l(filter, simulation) , simulation = simulate(), , expected model curve gradually converge zero, doesn't converge, instead oscillated between large positive numbers , large negative numbers, , after 400 episodes goes 0 without gradual convergence.
- am correctly implementing kalman filter?
- if correctly doing so, how measure convergence?
please see code below:
formulating state transition model kalman filter:
set.seed(1) kalman.filter=dse::ss(f = matrix(1.1, 1, 1), q = matrix(0, 1, 1), h = matrix(1, 1, 1), r = matrix(1, 1, 1), z0 = matrix(1, 1, 1), p0 = matrix(1, 1, 1), ) now simulate 30 observations underlying state transition model specified above:
simulate.kalman.filter=simulate(kalman.filter, start = 1, freq =1, samplet = 30) now use kalman filter simulate forecast model estimate. call model "test":
test=l(kalman.filter, simulate.kalman.filter) now plot curve of difference between forecasted model called "test" , underlying state transition model. doesn't converge expect to:
difference=(test$estimates$pred-simulate.kalman.filter$state) plot(difference) now plot underlying state model (in black), observations (in green) , forecasts (in red). forecast model doesn't seem converging:
plot(simulate.kalman.filter$state) points(simulate.kalman.filter$output, col = 3) points(test$estimates$pred, col = 2)
Comments
Post a Comment