Merge branch 'particle' into 'master'
non_linear_dsge_likelihood.m: filter out explosive initial simulation See merge request Dynare/dynare!1861time-shift
commit
77612e6bb7
|
@ -168,6 +168,8 @@ switch info(1)
|
|||
message = 'Aim: Problem in SPEIG.';
|
||||
case 201
|
||||
message = 'Particle Filter: Initial covariance of the states is not positive definite. Try a different nonlinear_filter_initialization';
|
||||
case 202
|
||||
message = 'Particle Filter: Initial covariance of the states based on simulation resulted in NaN/Inf. Use pruning or try a different nonlinear_filter_initialization';
|
||||
otherwise
|
||||
message = 'This case shouldn''t happen. Contact the authors of Dynare';
|
||||
end
|
|
@ -235,9 +235,9 @@ if ~isequal(DynareOptions.mode_compute,11) || ...
|
|||
fprintf('initial_estimation_checks:: If you think the latter is the case, you should try with different initial values for the estimated parameters.\n')
|
||||
error('initial_estimation_checks:: The forecast error variance in the multivariate Kalman filter became singular.')
|
||||
end
|
||||
if info(1)==201
|
||||
fprintf('initial_estimation_checks:: Initial covariance of the states is not positive definite. Try a different nonlinear_filter_initialization.\n')
|
||||
error('initial_estimation_checks:: Initial covariance of the states is not positive definite. Try a different nonlinear_filter_initialization.')
|
||||
if info(1)==201 || info(1)==202
|
||||
message=get_error_message(info,DynareOptions);
|
||||
error('initial_estimation_checks:: %s.',message)
|
||||
end
|
||||
%reset options
|
||||
DynareOptions.use_univariate_filters_if_singularity_is_detected=use_univariate_filters_if_singularity_is_detected_old;
|
||||
|
|
|
@ -152,7 +152,14 @@ switch DynareOptions.particle.initialization
|
|||
DynareOptions.pruning = DynareOptions.particle.pruning;
|
||||
y_ = simult(DynareResults.steady_state, dr,Model,DynareOptions,DynareResults);
|
||||
y_ = y_(dr.order_var(state_variables_idx),2001:5000); %state_variables_idx is in dr-order while simult_ is in declaration order
|
||||
StateVectorVariance = cov(y_');
|
||||
if any(any(isnan(y_))) || any(any(isinf(y_))) && ~ DynareOptions.pruning
|
||||
fval = Inf;
|
||||
info(1) = 202;
|
||||
info(4) = 0.1;
|
||||
exit_flag = 0;
|
||||
return;
|
||||
end
|
||||
StateVectorVariance = cov(y_');
|
||||
DynareOptions.periods = old_DynareOptionsperiods;
|
||||
DynareOptions.pruning = old_DynareOptionspruning;
|
||||
clear('old_DynareOptionsperiods','y_');
|
||||
|
|
Loading…
Reference in New Issue