Fixed bug in Weibull prior.

Fixed inconsistencies in the ordering of the hyperparameters (shape and scale).
time-shift
Stéphane Adjemian (Hermes) 2016-02-11 21:35:29 +01:00
parent 3c7e60b744
commit 0459d1bcd4
5 changed files with 16 additions and 14 deletions

View File

@ -58,6 +58,8 @@ switch shape
m = m*(hyperparameters(4)-hyperparameters(3)) + hyperparameters(3) ;
end
case 2
% a = hyperparameters(1) [shape parameter]
% b = hyperparameters(2) [scale parameter]
if hyperparameters(1)<1
m = 0;
else
@ -85,12 +87,12 @@ switch shape
m = m + hyperparameters(3) ;
end
case 8
% s = hyperparameters(1) [scale parameter]
% k = hyperparameters(2) [shape parameter]
if hyperparameters(2)<=1
% k = hyperparameters(1) [shape parameter]
% s = hyperparameters(2) [scale parameter]
if hyperparameters(1)<=1
m = 0;
else
m = hyperparameters(1)*((hyperparameters(2)-1)/hyperparameters(2))^(1/hyperparameters(2));
m = hyperparameters(2)*((hyperparameters(1)-1)/hyperparameters(1))^(1/hyperparameters(1));
end
if length(hyperparameters)>2
% Add location parameter
@ -212,7 +214,7 @@ end
%$ % Weibull density
%$ try
%$ m1 = compute_prior_mode([1 1],8);
%$ m2 = compute_prior_mode([1 2 1],8); % Wolfram Alpha: WeibullDistribution[2,1]
%$ m2 = compute_prior_mode([2 1 1],8); % Wolfram Alpha: WeibullDistribution[2,1]
%$ t(1) = true;
%$ catch
%$ t(1) = false;

View File

@ -9,8 +9,8 @@ function [a, b] = gamma_specification(mu, sigma2, lb, name) % --*-- Unitary te
% - name [string] Name of the parameter (or random variable).
%
% OUTPUTS
% - a [double] First hyperparameter of the Gamma density.
% - b [double] Second hyperparameter of the Gamma density.
% - a [double] First hyperparameter of the Gamma density (shape).
% - b [double] Second hyperparameter of the Gamma density (scale).
% Copyright (C) 2015 Dynare Team
%

View File

@ -4,8 +4,8 @@ function [ldens,Dldens,D2ldens] = lpdfgweibull(x,a,b,c) % --*-- Unitary tests -
%
% INPUTS
% - x [double] m*n matrix of points where the (logged) density will be evaluated,
% - a [double] m*n matrix of First Weibull distribution parameters,
% - b [double] m*n matrix of Second Weibull distribution parameters,
% - a [double] m*n matrix of First Weibull distribution parameters (shape parameter, k),
% - b [double] m*n matrix of Second Weibull distribution parameters (scale parameter, λ),
% - c [double] m*n matrix of Third Weibull distribution parameters (location parameter, default is 0).
%
% OUTPUTS

View File

@ -1,4 +1,4 @@
function [scale, shape] = weibull_specification(mu, sigma2, lb, name) % --*-- Unitary tests --*--
function [shape, scale] = weibull_specification(mu, sigma2, lb, name) % --*-- Unitary tests --*--
% Returns the hyperparameters of the Weibull distribution given the expectation and variance.
%
@ -95,7 +95,7 @@ scale = mu/gamma(1+1/shape);
%$ disp(sprintf('... mu=%s and s2=%s', num2str(mu(j,i)),num2str(s2(j,i))))
%$ end
%$ if ~isnan(mu(j,i)) && ~isnan(s2(j,i)) && ~isinf(mu(j,i)) && ~isinf(s2(j,i))
%$ [scale, shape] = weibull_specification(mu(j,i), s2(j,i));
%$ [shape, scale] = weibull_specification(mu(j,i), s2(j,i));
%$ if isnan(scale)
%$ t = false;
%$ else
@ -105,7 +105,7 @@ scale = mu/gamma(1+1/shape);
%$ t = false;
%$ end
%$ end
%$ if ~t
%$ if ~t && debug
%$ failed1 = [failed1; mu(j,i) s2(j,i)];
%$ failed1_ = [failed1_; shapes(i) scales(j)];
%$ error('UnitTest','Cannot compute scale and shape hyperparameters for mu=%s and s2=%s', num2str(mu(j,i)), num2str(s2(j,i)))

View File

@ -3,8 +3,8 @@ function [ldens,Dldens,D2ldens] = lpdfgam(x,a,b);
%
% INPUTS
% x [double] m*n matrix of locations,
% a [double] m*n matrix or scalar, First GAMMA distribution parameters,
% b [double] m*n matrix or scalar, Second GAMMA distribution parameters,
% a [double] m*n matrix or scalar, First GAMMA distribution parameters (shape),
% b [double] m*n matrix or scalar, Second GAMMA distribution parameters (scale),
%
% OUTPUTS
% ldens [double] m*n matrix of logged GAMMA densities evaluated at x.