From 9208bcf049fb968121a88cb76d108a6a19f10e90 Mon Sep 17 00:00:00 2001 From: Johannes Pfeifer Date: Thu, 12 Dec 2019 11:49:57 +0100 Subject: [PATCH] Modified harmonic mean: Transform hard-coded tolerance to parameter Closes https://git.dynare.org/Dynare/dynare/issues/1666 --- matlab/default_option_values.m | 3 +++ matlab/marginal_density.m | 2 +- 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/matlab/default_option_values.m b/matlab/default_option_values.m index 4434a2666..c45124383 100644 --- a/matlab/default_option_values.m +++ b/matlab/default_option_values.m @@ -714,6 +714,9 @@ options_.convergence.geweke.geweke_interval=[0.2 0.5]; options_.convergence.rafterylewis.indicator=false; options_.convergence.rafterylewis.qrs=[0.025 0.005 0.95]; +%tolerance for Modified Harmonic Mean estimator +options_.marginal_data_density.harmonic_mean.tolerance = 0.01; + % Options for lmmcp solver options_.lmmcp.status = false; diff --git a/matlab/marginal_density.m b/matlab/marginal_density.m index 1e8728161..1179fb50c 100644 --- a/matlab/marginal_density.m +++ b/matlab/marginal_density.m @@ -100,7 +100,7 @@ while check_coverage marginal(linee,:) = [p, lpost_mode-log(tmp/((TotalNumberOfMhDraws-TODROP)*nblck))]; warning(warning_old_state); end - if abs((marginal(9,2)-marginal(1,2))/marginal(9,2)) > 0.01 || isinf(marginal(1,2)) + if abs((marginal(9,2)-marginal(1,2))/marginal(9,2)) > options_.marginal_data_density.harmonic_mean.tolerance || isinf(marginal(1,2)) fprintf('\n') if increase == 1 disp('Estimation::marginal density: The support of the weighting density function is not large enough...')