diffuse filter: fixed bug when nonstationary variables aren't observed
parent
0952776e53
commit
897af97bff
|
@ -103,20 +103,15 @@ if i == nk+1
|
||||||
c = ST(nk+1,:)*(Pstar(:,nk+2:end)*ST(nk1,nk+2:end)')+ST(nk1,nk1)*ST(nk1,nk+2:end)*Pstar(nk+2:end,nk1);
|
c = ST(nk+1,:)*(Pstar(:,nk+2:end)*ST(nk1,nk+2:end)')+ST(nk1,nk1)*ST(nk1,nk+2:end)*Pstar(nk+2:end,nk1);
|
||||||
Pstar(nk1,nk1)=(B(nk1,nk1)+c)/(1-ST(nk1,nk1)*ST(nk1,nk1));
|
Pstar(nk1,nk1)=(B(nk1,nk1)+c)/(1-ST(nk1,nk1)*ST(nk1,nk1));
|
||||||
end
|
end
|
||||||
Z = QT(mf,:);
|
|
||||||
|
|
||||||
|
|
||||||
% stochastic trends with no influence on observed variables are
|
% stochastic trends with no influence on observed variables are
|
||||||
% arbitrarily initialized to zero
|
% arbitrarily initialized to zero
|
||||||
Pinf = zeros(np,np);
|
Pinf = zeros(np,np);
|
||||||
Pinf(1:nk,1:nk) = eye(nk);
|
Pinf(1:nk,1:nk) = eye(nk);
|
||||||
[QQ,RR,EE] = qr(Z*ST,0);
|
for k = 1:nk
|
||||||
k = find(abs(diag(RR)) < 1e-8);
|
if norm(QT(mf,k)) < 1e-8
|
||||||
if length(k) > 0
|
Pinf(k,k) = 0;
|
||||||
k1 = EE(:,k);
|
end
|
||||||
dd =ones(nk,1);
|
|
||||||
dd(k1) = zeros(length(k1),1);
|
|
||||||
Pinf(1:nk,1:nk) = diag(dd);
|
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue