initial_estimation_checks.m: Add proper check for stochastic singularity
parent
68bc9cb9bb
commit
3f907efbcd
|
@ -130,7 +130,19 @@ ana_deriv = DynareOptions.analytic_derivation;
|
|||
DynareOptions.analytic_derivation=0;
|
||||
if ~isequal(DynareOptions.mode_compute,11) || ...
|
||||
(isequal(DynareOptions.mode_compute,11) && isequal(DynareOptions.order,1))
|
||||
[fval,info] = feval(objective_function,xparam1,DynareDataset,DatasetInfo,DynareOptions,Model,EstimatedParameters,BayesInfo,BoundsInfo,DynareResults);
|
||||
%shut off potentially automatic switch to diffuse filter for the
|
||||
%purpose of checking stochastic singularity
|
||||
use_univariate_filters_if_singularity_is_detected_old=DynareOptions.use_univariate_filters_if_singularity_is_detected;
|
||||
DynareOptions.use_univariate_filters_if_singularity_is_detected=0;
|
||||
[fval,info] = feval(objective_function,xparam1,DynareDataset,DatasetInfo,DynareOptions,Model,EstimatedParameters,BayesInfo,BoundsInfo,DynareResults);
|
||||
if info(1)==50
|
||||
fprintf('\ninitial_estimation_checks:: The forecast error variance in the multivariate Kalman filter became singular.\n')
|
||||
fprintf('initial_estimation_checks:: This is often a sign of stochastic singularity, but can also sometimes happen by chance\n')
|
||||
fprintf('initial_estimation_checks:: for a particular combination of parameters and data realizations.\n')
|
||||
error('initial_estimation_checks:: The forecast error variance in the multivariate Kalman filter became singular.')
|
||||
end
|
||||
%reset options
|
||||
DynareOptions.use_univariate_filters_if_singularity_is_detected=use_univariate_filters_if_singularity_is_detected_old;
|
||||
else
|
||||
info=0;
|
||||
fval = 0;
|
||||
|
|
Loading…
Reference in New Issue