Chapter Contents Previous Next
 Time Series Analysis and Control Examples

## Example 10.4: Diffuse Kalman Filtering

The nonstationary SSM is simulated to analyze the diffuse Kalman filter call KALDFF. The transition equation is generated using the following formula:

where . The transition equation is nonstationary since the transition matrix F has one unit root.
   proc iml;
z_1 = 0; z_2 = 0;
do i = 1 to 30;
z = 1.5*z_1 - .5*z_2 + rannor(1234567);
z_2 = z_1;
z_1 = z;
x =  z + .8*rannor(1234578);
if ( i > 10 ) then y = y // x;
end;

The KALDFF and KALCVF calls produce one-step prediction, and the result shows that two predictions coincide after the fifth observation (Output 10.4.1).
      t = nrow(y);
h = { 1 0 };
f = { 1.5 -.5, 1 0 };
rt = .64;
vt = diag({1 0});
ny = nrow(h);
nz = ncol(h);
nb = nz;
nd = nz;
a  = j(nz,1,0);
b  = j(ny,1,0);
int = j(ny+nz,nb,0);
coef = f // h;
var = ( vt || j(nz,ny,0) ) //
( j(ny,nz,0) || rt );
intd = j(nz+nb,1,0);
coefd = i(nz) // j(nb,nd,0);
at = j(t*nz,nd+1,0);
mt = j(t*nz,nz,0);
qt = j(t*(nd+1),nd+1,0);
n0 = -1;
call kaldff(kaldff_p,dvpred,initial,s2,y,0,int,
coef,var,intd,coefd,n0,at,mt,qt);
call kalcvf(kalcvf_p,vpred,filt,vfilt,y,0,a,f,b,h,var);
print kalcvf_p kaldff_p;


Output 10.4.1: Diffuse Kalman Filtering

 Diffuse Kalman Filtering

 KALCVF_P KALDFF_P 0 0 0 0 1.441911 0.961274 1.1214871 0.9612746 -0.882128 -0.267663 -0.882138 -0.267667 -0.723156 -0.527704 -0.723158 -0.527706 1.2964969 0.871659 1.2964968 0.8716585 -0.035692 0.1379633 -0.035692 0.1379633 -2.698135 -1.967344 -2.698135 -1.967344 -5.010039 -4.158022 -5.010039 -4.158022 -9.048134 -7.719107 -9.048134 -7.719107 -8.993153 -8.508513 -8.993153 -8.508513 -11.16619 -10.44119 -11.16619 -10.44119 -10.42932 -10.34166 -10.42932 -10.34166 -8.331091 -8.822777 -8.331091 -8.822777 -9.578258 -9.450848 -9.578258 -9.450848 -6.526855 -7.241927 -6.526855 -7.241927 -5.218651 -5.813854 -5.218651 -5.813854 -5.01855 -5.291777 -5.01855 -5.291777 -6.5699 -6.284522 -6.5699 -6.284522 -4.613301 -4.995434 -4.613301 -4.995434 -5.057926 -5.09007 -5.057926 -5.09007

The likelihood function for the diffuse Kalman filter under the finite initial covariance matrix is written

where y(#) is the dimension of the matrix (y'1, ... , y'T)'. The likelihood function for the diffuse Kalman filter under the diffuse initial covariance matrix is computed as , where the S matrix is the upper matrix of Qt. See the section "KALDFF Call" for more details on matrix notation. Output 10.4.2 displays the log likelihood and the diffuse log likelihood.
      d = 0;
do i = 1 to t;
dt = h*mt[(i-1)*nz+1:i*nz,]*h + rt;
d = d + log(det(dt));
end;
s = qt[(t-1)*(nd+1)+1:t*(nd+1)-1,1:nd];
log_l = -(t*log(s2) + d)/2;
dff_logl = log_l - log(det(s))/2;
print log_l dff_logl;
`

Output 10.4.2: Diffuse Likelihood Function

 LIKL Log L -11.42547

 LIKL_DFF Diffuse Log L -9.457596

 Chapter Contents Previous Next Top