Added an option to decide if dsge_likelihood should call univariate filters when the covariance matrix of

the prediction error is singular (default is yes).
time-shift
Stéphane Adjemian (Charybdis) 2012-09-27 14:47:21 +02:00
parent 868afeb953
commit 894b3d69f4
2 changed files with 14 additions and 4 deletions

View File

@ -614,7 +614,7 @@ if ((kalman_algo==1) || (kalman_algo==3))% Multivariate Kalman Filter
kalman_tol, DynareOptions.riccati_tol, ...
DynareOptions.presample, ...
T,Q,R,H,Z,mm,pp,rr,Zflag,diffuse_periods);
end;
end
end
if analytic_derivation,
LIK1=LIK;
@ -623,10 +623,19 @@ if ((kalman_algo==1) || (kalman_algo==3))% Multivariate Kalman Filter
lik=lik1{1};
end
if isinf(LIK)
if kalman_algo == 1
kalman_algo = 2;
if DynareOptions.use_univariate_filters_if_singularity_is_detected
if kalman_algo == 1
kalman_algo = 2;
else
kalman_algo = 4;
end
else
kalman_algo = 4;
if isinf(LIK)
info = 66;
fval = objective_function_penalty_base+1;
exit_flag = 0;
return
end
end
else
if DynareOptions.lik_init==3

View File

@ -330,6 +330,7 @@ options_.filtered_vars = 0;
options_.first_obs = 1;
options_.kalman_algo = 0;
options_.kalman_tol = 1e-10;
options_.use_univariate_filters_if_singularity_is_detected = 1;
options_.riccati_tol = 1e-6;
options_.lik_algo = 1;
options_.lik_init = 1;