kalmanFilter#
Purpose#
Data filtering algorithm.
Format#
- kout = kalmanFilter(y, Z, d, H, T, c, R, Q, a_0, p_0)#
- Parameters:
yt (px1 matrix) – numerical vector of times series data.
Z (pxM matrix) – design matrix.
d (px1 matrix) – observation intercept.
H (pxp matrix) – observation disturbance covariance.
T (mxm matrix) – transition matrix.
c (px1 matrix) – state intercept.
R (mxr matrix) – selection matrix.
Q (rxr matrix) – state disturbance covariance matrix.
a_0 (mx1 matrix) – initial prior state mean.
p_0 (mxm matrix) – initial prior covariance matrix.
- Returns:
kout (struct) –
Instance of a
kalmanOut
structure. The following members of kout are referencing within this routine:kout.filtered_state
Matrix, pxT, filtered states.
kout.filtered_state_cov
Array, Txpxp, filtered state covariances.
kout.predicted_state
Matrix, px(T+1), predicted states.
kout.predicted_state_cov
Array, Txpxp, predicted state covariances.
kout.forecast
Matrix, pxT, forecasts.
kout.forecast_error
Matrix, pxT, forecast error.
kout.forecast_error_cov
Array, Txpxp, forecast error covariances.
kout.loglikelihood
Matrix, px(T+1), computed loglikelihood.
Example#
new;
cls;
library tsmt;
// Load data
y = loadd( getGAUSSHome() $+ "pkgs/tsmt/examples/nile.dat");
// Set up state space matrices
sigma_e = 15099;
sigma_n = 1469.1;
// Linear level model
Z = 1;
H = sigma_e;
T = 1;
Q = sigma_n;
R = 1;
d = 0;
c = 0;
// Initial state variables
a_0 = 0;
p_0 = 10e7;
struct kalmanResult rslt;
rslt = kalmanFilter(y', Z, d, H, T, c, R, Q, a_0, p_0);
Remarks#
The kalman filter inputs are based on the state space representation:
\(y_t = d_t + Z_t\alpha_t + \epsilon_t\)
\(\epsilon_t \sim N(0, H_t)\)
\(\alpha_{t+1} = c_t + T_t\alpha_t + R\eta_t\)
\(\eta_t \sim N(0, Q_t)\)
where the \(y_t\) equation is known as the observation or measurement equation, and the \(\alpha_t+1\) equation is the transition equation.
Library#
tsmt
Source#
kalman_filter.src