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-bf33cf982152time-shift
parent
38c7176206
commit
2dee7d4c9e
|
@ -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
|
||||
|
|
|
@ -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;
|
||||
|
|
Loading…
Reference in New Issue