From cb81e4a99728ba1e2d51099c18c89c2c8ef7cd13 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?St=C3=A9phane=20Adjemian=20=28Sedna=29?= <stephane.adjemian@univ-lemans.fr> Date: Fri, 13 May 2011 12:46:11 +0200 Subject: [PATCH] Allow empty hessian in mode_check routine (options_.cova_compute==0) (cherry picked from commit 6302abd7bdf557557f6b8c630b23129d2bf71f18) --- matlab/dynare_estimation_1.m | 6 +++++- matlab/mode_check.m | 23 ++++++++++++++--------- 2 files changed, 19 insertions(+), 10 deletions(-) diff --git a/matlab/dynare_estimation_1.m b/matlab/dynare_estimation_1.m index dff1119751..b821aeb93a 100644 --- a/matlab/dynare_estimation_1.m +++ b/matlab/dynare_estimation_1.m @@ -438,7 +438,11 @@ if ~options_.mh_posterior_mode_estimation && options_.cova_compute end if options_.mode_check == 1 && ~options_.mh_posterior_mode_estimation && options_.cova_compute - mode_check(xparam1,0,hh,gend,data,lb,ub,data_index,number_of_observations,no_more_missing_observations); + if options_.cova_compute + mode_check(xparam1,0,hh,gend,data,lb,ub,data_index,number_of_observations,no_more_missing_observations); + else + mode_check(xparam1,0,[],gend,data,lb,ub,data_index,number_of_observations,no_more_missing_observations); + end end if ~options_.mh_posterior_mode_estimation && options_.cova_compute diff --git a/matlab/mode_check.m b/matlab/mode_check.m index b32eaefc37..b8eaa71fae 100644 --- a/matlab/mode_check.m +++ b/matlab/mode_check.m @@ -38,20 +38,25 @@ function mode_check(x,fval,hessian,gend,data,lb,ub,data_index,number_of_observat global bayestopt_ M_ options_ TeX = options_.TeX; -[ s_min, k ] = min(diag(hessian)) ; +if ~isempty(hessian); + [ s_min, k ] = min(diag(hessian)); +end if options_.dsge_var fval = DsgeVarLikelihood(x,gend); else fval = DsgeLikelihood(x,gend,data,data_index,number_of_observations,no_more_missing_observations); end -bayestopt_.penalty=fval; -disp(' ') -disp('MODE CHECK') -disp(' ') -disp(sprintf('Fval obtained by the minimization routine: %f', fval)) -disp(' ') -if s_min<eps - disp(sprintf('Most negative variance %f for parameter %d (%s = %f)', s_min, k , bayestopt_.name{k}, x(k))) +bayestopt_.penalty=fval; + +if ~isempty(hessian); + disp(' ') + disp('MODE CHECK') + disp(' ') + disp(sprintf('Fval obtained by the minimization routine: %f', fval)) + disp(' ') + if s_min<eps + disp(sprintf('Most negative variance %f for parameter %d (%s = %f)', s_min, k , bayestopt_.name{k}, x(k))) + end end [nbplt,nr,nc,lr,lc,nstar] = pltorg(length(x)); -- GitLab