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
parent
868afeb953
commit
894b3d69f4
|
@ -614,7 +614,7 @@ if ((kalman_algo==1) || (kalman_algo==3))% Multivariate Kalman Filter
|
||||||
kalman_tol, DynareOptions.riccati_tol, ...
|
kalman_tol, DynareOptions.riccati_tol, ...
|
||||||
DynareOptions.presample, ...
|
DynareOptions.presample, ...
|
||||||
T,Q,R,H,Z,mm,pp,rr,Zflag,diffuse_periods);
|
T,Q,R,H,Z,mm,pp,rr,Zflag,diffuse_periods);
|
||||||
end;
|
end
|
||||||
end
|
end
|
||||||
if analytic_derivation,
|
if analytic_derivation,
|
||||||
LIK1=LIK;
|
LIK1=LIK;
|
||||||
|
@ -623,10 +623,19 @@ if ((kalman_algo==1) || (kalman_algo==3))% Multivariate Kalman Filter
|
||||||
lik=lik1{1};
|
lik=lik1{1};
|
||||||
end
|
end
|
||||||
if isinf(LIK)
|
if isinf(LIK)
|
||||||
if kalman_algo == 1
|
if DynareOptions.use_univariate_filters_if_singularity_is_detected
|
||||||
kalman_algo = 2;
|
if kalman_algo == 1
|
||||||
|
kalman_algo = 2;
|
||||||
|
else
|
||||||
|
kalman_algo = 4;
|
||||||
|
end
|
||||||
else
|
else
|
||||||
kalman_algo = 4;
|
if isinf(LIK)
|
||||||
|
info = 66;
|
||||||
|
fval = objective_function_penalty_base+1;
|
||||||
|
exit_flag = 0;
|
||||||
|
return
|
||||||
|
end
|
||||||
end
|
end
|
||||||
else
|
else
|
||||||
if DynareOptions.lik_init==3
|
if DynareOptions.lik_init==3
|
||||||
|
|
|
@ -330,6 +330,7 @@ options_.filtered_vars = 0;
|
||||||
options_.first_obs = 1;
|
options_.first_obs = 1;
|
||||||
options_.kalman_algo = 0;
|
options_.kalman_algo = 0;
|
||||||
options_.kalman_tol = 1e-10;
|
options_.kalman_tol = 1e-10;
|
||||||
|
options_.use_univariate_filters_if_singularity_is_detected = 1;
|
||||||
options_.riccati_tol = 1e-6;
|
options_.riccati_tol = 1e-6;
|
||||||
options_.lik_algo = 1;
|
options_.lik_algo = 1;
|
||||||
options_.lik_init = 1;
|
options_.lik_init = 1;
|
||||||
|
|
Loading…
Reference in New Issue