GAUSS kalmanFilter Example

Introduction

The following is an example of implementing the kalmanFilter GAUSS procedure. This follows the example in section 2.2.5 from Durbin, James, and Siem Jan Koopman. 2012. Time Series Analysis by State Space Methods: Second Edition. Oxford University Press.

The data contains readings of the river Nile annual flow volume at Aswan from 1871 to 1970 and is stored in the GAUSS dataset file "nile.dat".

Load data

This example loads the data using the GAUSS function loadd.

new;
library tsmt;

// Load all variables from 'nile.dat'
dataset = getGAUSSHome() $+ "pkgs/tsmt/examples/nile.dat";
y = loadd(dataset);

Set up the estimation

The GAUSS procedure kalmanFilter requires that models take a state space representation. In addition to the data, kalmanFilter requires the following inputs

Name Description
Z Matrix, pxM, design matrix
d Matrix, px1, observation intercept
H Matrix, pxp, observation disturbance covariance matrix
T Matrix, MxM, transition matrix
c Matrix, mx1, state intercept
R Matrix, mxr, selection matrix
Q Matrix, rxr, state disturbance covariance matrix
a_0 Matrix, mx1, initial prior state mean
p_0 Matrix, mxm, initial prior state covariance
sigma_e = 15099;
sigma_n = 1469.1;

Z = 1;
H = sigma_e;
T = 1;
Q = sigma_n;
R = 1;
d = 0;
c = 0;

a_0 = 0;
p_0 = 10e7;

Estimate The Model

The GAUSS function kalmanFilter implements the GAUSS Kalman filter.

// Declare 'rslt' to be a 'kalmanResult' structure
struct kalmanResult rslt;

// Perform estimation and fill 'rslt' with estimation results
rslt = kalmanFilter(y', Z, d, H, T, c, R, Q, a_0, p_0);

Output

Code for generating the plots below of the filtered data and state variance can be found here. Kalman Filter Nile Results

Have a Specific Question?

Get a real answer from a real person

Need Support?

Get help from our friendly experts.