0001 function bounds = prior_bounds(bayestopt) 0002 global options_ 0003 0004 pshape = bayestopt.pshape; 0005 pmean = bayestopt.pmean; 0006 p2 = bayestopt.p2; 0007 p3 = bayestopt.p3; 0008 p4 = bayestopt.p4; 0009 0010 n = length(pmean); 0011 bounds = zeros(n,2); 0012 0013 for i=1:n 0014 switch pshape(i) 0015 case 1 0016 mu = (pmean(i)-p3(i))/(p4(i)-p3(i)); 0017 stdd = p2(i)/(p4(i)-p3(i)); 0018 A = (1-mu)*mu^2/stdd^2 - mu; 0019 B = A*(1/mu - 1); 0020 bounds(i,1) = qbeta(options_.prior_trunc,A,B)*(p4(i)-p3(i))+p3(i); 0021 bounds(i,2) = qbeta(1-options_.prior_trunc,A,B)*(p4(i)-p3(i))+p3(i); 0022 case 2 0023 b = p2(i)^2/(pmean(i)-p3(i)); 0024 a = (pmean(i)-p3(i))/b; 0025 bounds(i,1) = mj_qgamma(options_.prior_trunc,a)*b+p3(i); 0026 bounds(i,2) = mj_qgamma(1-options_.prior_trunc,a)*b+p3(i); 0027 case 3 0028 bounds(i,1) = qnorm(options_.prior_trunc,pmean(i),p2(i)); 0029 bounds(i,2) = qnorm(1-options_.prior_trunc,pmean(i),p2(i)); 0030 case 4 0031 nu = p2(i); 0032 mu = pmean(i); 0033 beta = ( gamma( (nu-1)/2 ) / mu / gamma( nu/2 ) )^2; 0034 a=2/beta; 0035 bounds(i,1) = 1/sqrt(mj_qgamma(1-options_.prior_trunc,p2(i)/2)*beta); 0036 bounds(i,2) = 1/sqrt(mj_qgamma(options_.prior_trunc,p2(i)/2)*beta); 0037 case 5 0038 bounds(i,1) = p3(i); 0039 bounds(i,2) = p4(i); 0040 otherwise 0041 bounds(i,1) = -Inf; 0042 bounds(i,2) = Inf; 0043 end 0044 end