diff --git a/doc/manual/source/the-model-file.rst b/doc/manual/source/the-model-file.rst index 6fdcac9ffb7b5f063acbfa8e4965867a6d648143..86eb7b36a2867284340812824bfa82ff009c8996 100644 --- a/doc/manual/source/the-model-file.rst +++ b/doc/manual/source/the-model-file.rst @@ -5912,13 +5912,14 @@ observed variables. .. option:: PRIOR_3RD_PARAMETER A third parameter of the prior used for generalized beta - distribution, generalized gamma, generalized Weibull and for - the uniform distribution. Default: ``0``. + distribution, generalized gamma, generalized Weibull, the truncated normal, and for + the uniform distribution. Default: ``-Inf`` for normal distribution, ``0`` otherwise. .. option:: PRIOR_4TH_PARAMETER A fourth parameter of the prior used for generalized beta - distribution and for the uniform distribution. Default: ``1``. + distribution, the truncated normal, and for the uniform distribution. + Default: ``Inf`` for normal distribution, ``1`` otherwise. .. option:: SCALE_PARAMETER diff --git a/matlab/draw_prior_density.m b/matlab/draw_prior_density.m index c8b77e67f420ea1eee7bcbb623740de44dceb949..59a47195716b900ad0e34fae9a173ee701b71b07 100644 --- a/matlab/draw_prior_density.m +++ b/matlab/draw_prior_density.m @@ -54,8 +54,8 @@ switch pshape(indx) abscissa = linspace(infbound,supbound,steps); dens = density(abscissa,p6(indx),p7(indx),p3(indx)); case 3% Gaussian prior - infbound = norminv(truncprior,p6(indx),p7(indx)); - supbound = norminv(1-truncprior,p6(indx),p7(indx)); + infbound = max(p3(indx),norminv(truncprior,p6(indx),p7(indx))); + supbound = min(p4(indx),norminv(1-truncprior,p6(indx),p7(indx))); abscissa = linspace(infbound,supbound,steps); dens = normpdf(abscissa,p6(indx),p7(indx)); case 4% Inverse-gamma of type 1 prior diff --git a/matlab/prior_bounds.m b/matlab/prior_bounds.m index 8749f681824874ddfa9ad4b90f93169ee006ca55..c4871bc77275416f58bd094e6847a872e7b08fe8 100644 --- a/matlab/prior_bounds.m +++ b/matlab/prior_bounds.m @@ -93,11 +93,11 @@ for i=1:length(p6) end case 3 if prior_trunc == 0 - bounds.lb(i) = -Inf; - bounds.ub(i) = Inf; + bounds.lb(i) = max(-Inf,p3(i)); + bounds.ub(i) = min(Inf,p4(i)); else - bounds.lb(i) = norminv(prior_trunc,p6(i),p7(i)); - bounds.ub(i) = norminv(1-prior_trunc,p6(i),p7(i)); + bounds.lb(i) = max(norminv(prior_trunc,p6(i),p7(i)),p3(i)); + bounds.ub(i) = min(norminv(1-prior_trunc,p6(i),p7(i)),p4(i)); end case 4 if prior_trunc == 0 diff --git a/tests/estimation/fs2000.mod b/tests/estimation/fs2000.mod index f584d3ce968322863e03f29cf1a88ae24de10bcc..82ea58e95b8d895524571a05b04b033fbc778b88 100644 --- a/tests/estimation/fs2000.mod +++ b/tests/estimation/fs2000.mod @@ -70,7 +70,7 @@ estimated_params; alp, beta_pdf, 0.356, 0.02; bet, beta_pdf, 0.993, 0.002; gam, normal_pdf, 0.0085, 0.003; -mst, normal_pdf, 1.0002, 0.007; +mst, normal_pdf, 1.0002, 0.007,1.0002-3*0.007,1.0002+3*0.007; rho, beta_pdf, 0.129, 0.223; psi, beta_pdf, 0.65, 0.05; del, beta_pdf, 0.01, 0.005;