Calculates estimates from the Kalman filter (A.I. Glaser).
Option
PRINT = string tokens |
Controls printed output (xpredicted , xfiltered , deviance , residuals , gain , varpredictions , varfiltered , varresiduals ); default * |
---|
Parameters
Y = variates, matrices or pointers |
Time series data |
---|---|
YTRANSITIONMATRIX = scalars, matrices or pointers |
Observation transition matrix, mapping the relationship between the current value of the state vector and the observation |
YVCOVARIANCE = scalars, symmetricmatrices or pointers |
Observation error covariance matrix |
XSTATETRANSITIONMATRIX = scalars, matrices or pointers |
State transition matrix, mapping the relationship between the current value of the state vector and its previous value |
BXVCOVARIANCE = scalars, matrices or pointers |
State noise coefficient matrix |
XVCOVARIANCE = scalars, symmetricmatrices or pointers |
State error covariance matrix |
MEANINITIAL = scalars, variates or matrices |
Initial value of the mean of the state vector |
VARINITIAL = scalars or symmetricmatrices |
Initial value of the variance-covariance matrix of the state vector |
DEVIANCE = scalars |
To save the deviance of the model |
XPREDICTED = matrices |
Saves the predicted (a priori) state estimate matrix |
XFILTERED = matrices |
Saves the filtered (a posteriori) state estimate matrix |
RESIDUALS = matrices |
Saves the matrix of residuals |
GAIN = pointers |
Saves the Kalman gain matrix at each iteration |
VARPREDICTIONS = pointers |
Saves the variances of the predicted state estimate matrix at each iteration |
VARFILTERED = pointers |
Saves the variances of the filtered state estimate matrix at each iteration |
VARRESIDUALS= pointers |
Saves the variances of the residuals at each iteration |
SAVE = pointers |
Save structure which provides information for use in DKALMAN |
Description
KALMAN
performs the iterations from the time-varying or time-invariant Kalman filter using a square-root covariance filter algorithm.
The parameters contain the components of the state space model where data (Y) are assumed to be linked to an unknown state vector (X), see Method for further details.
The Y
parameter specifies the values of the observations as a variate, a matrix (where each row contains the values at a specific time point) or a pointer to a set of variates.
The YTRANSITIONMATRIX
parameter maps the state vector (X) onto the observation vector (Y), with residuals assumed to come from a (multivariate) Normal distribution with mean of zero and variance-covariance matrix YVCOVARIANCE
.
The XSTATETRANSITIONMATRIX
parameter gives the relationship between the state vector X at time t with that at time t-1. This is assumed to have residuals from a Normal distribution with mean zero and variance-covariance matrix specified by the BXVCOVARIANCE
and XVCOVARIANCE
parameters according to the equation
T(BXVCOVARIANCE) *+ XVCOVARIANCE *+ BXVCOVARIANCE
By default BXVCOVARIANCE
is the identity matrix. A description of all the default combinations of these parameters is given in the Method Section, below.
The state-space parameters YTRANSITIONMATRIX
, XSTATETRANSITIONMATRIX
and BXVCOVARIANCE
can be set to scalars, or to matrices, or to pointers containing scalars or matrices (if they are time-varying) where element t of the pointer contains the scalar or matrix at time t.
The covariance matrices, YVCOVARIANCE
and XVCOVARIANCE
, can be set to scalars or to symmetric matrices, or to pointers containing scalars or symmetric matrices (if they are time-varying) where element t of the pointer contains the scalar or symmetric matrix at time t.
You should only set XSTATETRANSITIONMATRIX
, BXVCOVARIANCE
and XVCOVARIANCE
to scalars when the state vector (X) is of dimension one. Likewise YVCOVARIANCE
should be set to a scalar only when the data vector (Y) is of dimension one, and YTRANSITIONMATRIX
should be set to a scalar only when both Y and X are of dimension one.
You can simplify the input when YTRANSITIONMATRIX
, YVCOVARIANCE
, XSTATETRANSITIONMATRIX
, BXVCOVARIANCE
and/or XVCOVARIANCE
are set to pointers, if there are only a few different values. You need then specify elements of the pointer only for the times when the values change (the omitted elements are assumed to be the same as the most recent previous value). For example, suppose there is a change at time 20 for the setting (say ystate
) of the YTRANSITIONMATRIX
parameter. You could then define ystate
with elements only for times 1 and 20, as shown below.
POINTER [SUFFIXES=!(1,20); VALUES=matrix1,matrix20] ystate
(Note that you must always specify an element for time 1.)
When YTRANSITIONMATRIX
, YVCOVARIANCE
, XSTATETRANSITIONMATRIX
, BXVCOVARIANCE
or XVCOVARIANCE
are set to pointers, then all elements of each pointer must be of the same type, e.g. if YTRANSITIONMATRIX
is a pointer and its first element is a scalar, then all of the other elements of YTRANSITIONMATRIX
must be scalars too.
Before running a Kalman filter, values must be defined for the mean and variance of the initial value of the state vector. These are supplied by the MEANINITIAL
and VARINITIAL
parameters respectively.
The PRINT
option controls printed output, with settings:
xpredicted |
predicted (a priori) state estimate matrix, |
---|---|
xfiltered |
filtered (a posteriori) state estimate matrix, |
deviance |
deviance of the model, |
residuals |
matrix of residuals, |
gain |
Kalman gain matrix at each iteration, |
varpredictions |
variance of predicted state estimate matrix, |
varfiltered |
variance of filtered state estimate matrix, and |
varresiduals |
variance of the residuals. |
By default nothing is printed.
The results can also be saved, using the parameters DEVIANCE
, XPREDICTED
, XFILTERED
, RESIDUALS
, GAIN
, VARPREDICTIONS
, VARFILTERED
and VARRESIDUALS
. The deviance is saved as a scalar. The XPREDICTED
, XFILTERED
and RESIDUALS
parameters save matrices, where each row corresponds to an individual time point. The others parameters save pointers, suffixed from 1…n, where n is the number of time points.
The SAVE
parameter saves various elements of the output for use by the DKALMAN
procedure, which plots fitted and original values of the data.
Option: PRINT
.
Parameters: Y
, YTRANSITIONMATRIX
, YVCOVARIANCE
, XSTATETRANSITIONMATRIX
, BXVCOVARIANCE
, XVCOVARIANCE
, MEANINITIAL
, VARINITIAL
, DEVIANCE
, XPREDICTED
, XFILTERED
, RESIDUALS
, GAIN
, VARPREDICTIONS
, VARFILTERED
, VARRESIDUALS
, SAVE
.
Method
Kalman filtering is a method of analysing multi-dimensional time series which can be written in the state-space form:
Yt = Ct Xt + Vt
Xt = At Xt–1 + Bt Wt
where:
Yt is the observed measurement vector (Y
),
Xt is the state vector,
Ct is the observation transition matrix (YTRANSITIONMATRIX
),
Vt is the observation error,
At is the state transition matrix (XSTATETRANSITIONMATRIX
),
Bt is the state noise coefficient matrix (BXVCOVARIANCE
) and
Wt is the state noise,
all measured at time t. When At, Bt and Ct are equal for all values of t, the model is assumed time invariant.
When BXVCOVARIANCE
is not set it is assumed to be the identity matrix.
The observation error and state noise terms are assumed to be uncorrelated, with zero mean, and covariance matrices given by YVCOVARIANCE
and XVCOVARIANCE
respectively. When XVCOVARIANCE
is not set, it is assumed to be the identity matrix.
The estimate of Xi given the observations Y1 to Yi–1 is known as the predicted (a priori) state estimate matrix, and is usually denoted as Xi|i-1. Similarly, the estimate of Xi given the observations Y1 to Yi is known as the filtered (a posteriori) state estimate matrix and is usually denoted as Xi|i.
The initial values X1|0 are assumed to be drawn from a multivariate Normal distribution with mean MEANINITIAL
and variance VARINITIAL
. If MEANINITIAL
is not set, it is assumed to be zero. If VARINITIAL
is unset then it is taken to be 100 times the identity matrix.
The NAG
algorithms G13EBF
(for time invariant matrices) or G13EAF
(for time varying matrices) are used to update one iteration from the Kalman filter.
Action with RESTRICT
Input structures must not be restricted.
See also
Procedure: DKALMAN
.
Commands for: Time series.
Example
CAPTION 'KALMAN example',\ !t('Annual flow of the river Nile at Ashwan 1871-1970. See Durbin &',\ 'Koopman (2001, Time Series Analysis by State Space',\ 'Methods, Oxford University Press).'); STYLE=meta,plain VARIATE [VALUES=1871...1970] Year VARIATE Nile READ Nile 1120 1160 963 1210 1160 1160 813 1230 1370 1140 995 935 1110 994 1020 960 1180 799 958 1140 1100 1210 1150 1250 1260 1220 1030 1100 774 840 874 694 940 833 701 916 692 1020 1050 969 831 726 456 824 702 1120 1100 832 764 821 768 845 864 862 698 845 744 796 1040 759 781 865 845 944 984 897 822 1010 771 676 649 846 812 742 801 1040 860 874 848 890 744 749 838 1050 918 986 797 923 975 815 1020 906 901 1170 912 746 919 718 714 740 : " Random walk plus noise model " SCALAR ytrans,yvcov,xstatetrans,xvcov; VALUE=1,0.8,1,0.1 SCALAR m0,p0; VALUE=1,100 KALMAN [PRINT=xpred] Y=Nile; YTRANSITIONMATRIX=1; YVCOVARIANCE=0.8;\ XSTATETRANSITIONMATRIX=1; XVCOVARIANCE=0.1;\ MEANINITIAL=0; VARINITIAL=100 DKALMAN [TIME=Year]