v4 prior_bounds.m, rndprior.m: uses now bayestopt_.p1 and p2

git-svn-id: https://www.dynare.org/svn/dynare/dynare_v4@1042 ac1d8469-bf42-47a9-8791-bf33cf982152
time-shift
michel 2006-11-05 13:46:26 +00:00
parent 73fef22aab
commit 26ff335c97
2 changed files with 10 additions and 15 deletions

View File

@ -3,6 +3,7 @@ global options_
pshape = bayestopt.pshape;
pmean = bayestopt.pmean;
p1 = bayestopt.p1;
p2 = bayestopt.p2;
p3 = bayestopt.p3;
p4 = bayestopt.p4;
@ -35,8 +36,8 @@ for i=1:n
bounds(i,1) = 1/sqrt(mj_qgamma(1-options_.prior_trunc,p2(i)/2)*beta);
bounds(i,2) = 1/sqrt(mj_qgamma(options_.prior_trunc,p2(i)/2)*beta);
case 5
bounds(i,1) = p3(i);
bounds(i,2) = p4(i);
bounds(i,1) = p1(i);
bounds(i,2) = p2(i);
otherwise
bounds(i,1) = -Inf;
bounds(i,2) = Inf;

View File

@ -2,6 +2,7 @@ function y = rndprior(bayestopt_)
pshape=bayestopt_.pshape;
pmean=bayestopt_.pmean;
p1=bayestopt_.p1;
p2=bayestopt_.p2;
p3=bayestopt_.p3;
p4=bayestopt_.p4;
@ -21,9 +22,8 @@ for i=1:length(pmean),
case 2 %'gamma'
mu = pmean(i)-p3(i);
B = mu/p2(i)^2; %gamm_rnd uses 1/B instead of B as param.
A = mu/B;
y(1,i) = gamm_rnd(1, A, B);
y(1,i) = y(1,i) + p3(i);
A = mu*B;
y(1,i) = gamm_rnd(1, A, B) + p3(i);
case 3 %'normal'
MU = pmean(i);
@ -32,21 +32,15 @@ for i=1:length(pmean),
case 4 %'invgamma'
nu = p2(i);
mu = pmean(i);
a = nu/2;;
b = ( gamma( (nu-1)/2 ) / mu / gamma( nu/2 ) )^2;
A = b/2;
B = 2/a;
y(1,i) = gamm_rnd(1, A, B);
y(1,i) = 1/y(1,i)^(0.5);
s = p1(i);
y(1,i) = 1/sqrt(gamm_rnd(1, nu/2, s/2)); %gamm_rnd uses 1/B
%instead of B as param.
case 5 %'uniform'
y(1,i) = rand*(p4(i)-p3(i)) + p3(i);
y(1,i) = rand*(p2(i)-p1(i)) + p1(i);
end
end
% initial version by Marco Ratto
% 11/17/03 MJ made Uniform case 5
% 11/17/03 MJ changed pstdd -> p2, lb -> p3, ub -> p4