Make sure Zflag for augmented state space is correctly set when measurement error is correlated

time-shift
Johannes Pfeifer 2016-06-16 16:22:28 +02:00 committed by Stéphane Adjemian (Hermes)
parent f95619b46a
commit 178bf4165c
1 changed files with 18 additions and 2 deletions

View File

@ -425,7 +425,16 @@ switch DynareOptions.lik_init
else else
%Augment state vector (follows Section 6.4.3 of DK (2012)) %Augment state vector (follows Section 6.4.3 of DK (2012))
expanded_state_vector_for_univariate_filter=1; expanded_state_vector_for_univariate_filter=1;
Z = [Z, eye(pp)]; if Zflag
Z1=Z;
else
Z1=zeros(pp,size(T,2));
for jz=1:length(Z)
Z1(jz,Z(jz))=1;
end
end
Z = [Z1, eye(pp)];
Zflag=1;
T = blkdiag(T,zeros(pp)); T = blkdiag(T,zeros(pp));
Q = blkdiag(Q,H); Q = blkdiag(Q,H);
R = blkdiag(R,eye(pp)); R = blkdiag(R,eye(pp));
@ -433,6 +442,7 @@ switch DynareOptions.lik_init
Pinf = blkdiag(Pinf,zeros(pp)); Pinf = blkdiag(Pinf,zeros(pp));
H1 = zeros(pp,1); H1 = zeros(pp,1);
mmm = mm+pp; mmm = mm+pp;
end end
end end
@ -728,13 +738,19 @@ if (kalman_algo==2) || (kalman_algo==4)
end end
else else
if ~expanded_state_vector_for_univariate_filter if ~expanded_state_vector_for_univariate_filter
Z = [Z, eye(pp)]; Z1=zeros(pp,size(T,2));
for jz=1:length(Z)
Z1(jz,Z(jz))=1;
end
Z = [Z1, eye(pp)];
Zflag=1;
T = blkdiag(T,zeros(pp)); T = blkdiag(T,zeros(pp));
Q = blkdiag(Q,H); Q = blkdiag(Q,H);
R = blkdiag(R,eye(pp)); R = blkdiag(R,eye(pp));
Pstar = blkdiag(Pstar,H); Pstar = blkdiag(Pstar,H);
Pinf = blkdiag(Pinf,zeros(pp)); Pinf = blkdiag(Pinf,zeros(pp));
H1 = zeros(pp,1); H1 = zeros(pp,1);
Zflag=1;
end end
mmm = mm+pp; mmm = mm+pp;
if singularity_has_been_detected if singularity_has_been_detected