Bug fix. The mode of the Inverted Gamma -- type 1 distribution was wrong.

git-svn-id: https://www.dynare.org/svn/dynare/trunk@2722 ac1d8469-bf42-47a9-8791-bf33cf982152
time-shift
stepan 2009-06-05 08:30:26 +00:00
parent 38c7176206
commit 2dee7d4c9e
2 changed files with 5 additions and 5 deletions

View File

@ -69,7 +69,7 @@ function m = compute_prior_mode(hyperparameters,shape)
case 4
% s = hyperparameters(1)
% nu = hyperparameters(2)
m = sqrt((hyperparameters(2)-1)/hyperparameters(1));
m = 1/sqrt((hyperparameters(2)+1)/hyperparameters(1));%sqrt((hyperparameters(2)-1)/hyperparameters(1))
if length(hyperparameters)>2
m = m + hyperparameters(3);
end

View File

@ -119,13 +119,13 @@ function [mu, parameters] = mode_and_variance_to_mean(m,s2,distribution,lower_bo
m = m - lower_bound ;
if isinf(s2)
nu = 2;
s = 1/(m*m);
s = 3*(m*m);
else
[mu, parameters] = mode_and_variance_to_mean(m,s2,2);
nu = sqrt(parameters(1));
nu2 = 2*nu;
nu1 = 2;
err = s2*(m*m) - (nu-1)/(nu-2) + .5*(nu-1)*(gamma((nu-1)/2)/gamma(nu/2))^2;
err = s2/(m*m) - (nu+1)/(nu-2) + .5*(nu+1)*(gamma((nu-1)/2)/gamma(nu/2))^2;
while abs(nu2-nu1) > 1e-12
if err < 0
nu1 = nu;
@ -139,9 +139,9 @@ function [mu, parameters] = mode_and_variance_to_mean(m,s2,distribution,lower_bo
nu2 = nu;
end
nu = (nu1+nu2)/2;
err = s2*(m*m) - (nu-1)/(nu-2) + .5*(nu-1)*(gamma((nu-1)/2)/gamma(nu/2))^2;
err = s2/(m*m) - (nu+1)/(nu-2) + .5*(nu+1)*(gamma((nu-1)/2)/gamma(nu/2))^2;
end
s = (nu-1)/(m*m) ;
s = (nu+1)*(m*m) ;
end
parameters(1) = nu;
parameters(2) = s;