ssKalmanSmooth#
Purpose#
Performs the Rauch-Tung-Striebel backward recursion smoother for state variables and state covariances.
Format#
- { a_smooth, p_smooth } = ssKalmanSmooth(ssm, y)#
- { a_smooth, p_smooth } = ssKalmanSmooth(ssm, kfRslt)
- Parameters:
ssm (Structure) – A filled instance of a
ssModel
structure.y (Matrix) – Optional, data. If a data matrix is passed, a first stage Kalman filtering will be performed.
y – Optional, a filled instance of the
kalmanResult
structure. If akalmanResult
structure is passed, no first stage Kalman filtering is performed.
- Returns:
a_smooth (Vector) – Smoothed state variable.
p_smooth (Array) – Smoothed state covariances.
Examples#
new;
library tsmt, sslib, cmlmt;
y = loadd(getGAUSSHome $+ "pkgs/tsmt/examples/nile.dat");
sigma_e = 15099;
sigma_n = 1469.1;
// Initialize Kalman filter
a_0 = 0;
p_0 = 10e7;
// Specify state-space system matrices
struct ssModel ssm;
ssm.Z = 1;
ssm.H = sigma_e;
ssm.T = 1;
ssm.Q = sigma_n;
ssm.R = 1;
ssm.d = 0;
ssm.c = 0;
struct kalmanResult rslt;
rslt = sskalmanFilter(y, ssm, a_0, p_0);
// Smooth data
{ a_smooth, p_smooth } = kalmanSmooth(ssm, rslt);
The first five observations of the filtered state variable compared to the smoothed state variable are:
rslt.filtered_state[1:5]
1119.830917
1140.845842
1072.750253
1117.275521
1129.948494
a_smooth[1:5]
1111.623497
1110.824812
1105.241488
1113.497953
1112.364977
Source#
ssmain.src
See also
Functions ssgetAICC()
, ssgetBIC()
, ssgetHQIC()