kalmanFilter: Kalman filter for state estimate in a linear Gaussian state...

Description Usage Arguments Value Note Author(s) References Examples

View source: R/stateEstimation.R

Description

Estimates the filtered state and the log-likelihood for a linear Gaussian state space model of the form x_{t} = φ x_{t-1} + σ_v v_t and y_t = x_t + σ_e e_t , where v_t and e_t denote independent standard Gaussian random variables, i.e.N(0,1).

Usage

1
kalmanFilter(y, theta, initialState, initialStateCovariance)

Arguments

y

Observations from the model for t=1,...,T.

theta

The parameters θ=\{φ,σ_v,σ_e\} of the LGSS model. The parameter φ scales the current state in the state dynamics. The standard deviations of the state process noise and the observation process noise are denoted σ_v and σ_e, respectively.

initialState

The initial state.

initialStateCovariance

The initial covariance of the state.

Value

The function returns a list with the elements:

Note

See Section 3 in the reference for more details.

Author(s)

Johan Dahlin uni@johandahlin.com

References

Dahlin, J. & Schon, T. B. "Getting Started with Particle Metropolis-Hastings for Inference in Nonlinear Dynamical Models." Journal of Statistical Software, Code Snippets, 88(2): 1–41, 2019.

Examples

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
# Generates 500 observations from a linear state space model with
# (phi, sigma_e, sigma_v) = (0.5, 1.0, 0.1) and zero initial state.
theta <- c(0.5, 1.0, 0.1)
d <- generateData(theta, noObservations=500, initialState=0.0) 

# Estimate the filtered state using Kalman filter
kfOutput <- kalmanFilter(d$y, theta, 
                         initialState=0.0, initialStateCovariance=0.01)

# Plot the estimate and the true state
par(mfrow=c(3, 1))
plot(d$x, type="l", xlab="time", ylab="true state", bty="n", 
  col="#1B9E77")
plot(kfOutput$xHatFiltered, type="l", xlab="time", 
  ylab="Kalman filter estimate", bty="n", col="#D95F02")
plot(d$x-kfOutput$xHatFiltered, type="l", xlab="time", 
  ylab="difference", bty="n", col="#7570B3")

Example output



pmhtutorial documentation built on May 2, 2019, 3:25 a.m.