Fixed bug in Weibull prior.
Fixed inconsistencies in the ordering of the hyperparameters (shape and scale).time-shift
parent
3c7e60b744
commit
0459d1bcd4
|
@ -58,6 +58,8 @@ switch shape
|
||||||
m = m*(hyperparameters(4)-hyperparameters(3)) + hyperparameters(3) ;
|
m = m*(hyperparameters(4)-hyperparameters(3)) + hyperparameters(3) ;
|
||||||
end
|
end
|
||||||
case 2
|
case 2
|
||||||
|
% a = hyperparameters(1) [shape parameter]
|
||||||
|
% b = hyperparameters(2) [scale parameter]
|
||||||
if hyperparameters(1)<1
|
if hyperparameters(1)<1
|
||||||
m = 0;
|
m = 0;
|
||||||
else
|
else
|
||||||
|
@ -85,12 +87,12 @@ switch shape
|
||||||
m = m + hyperparameters(3) ;
|
m = m + hyperparameters(3) ;
|
||||||
end
|
end
|
||||||
case 8
|
case 8
|
||||||
% s = hyperparameters(1) [scale parameter]
|
% k = hyperparameters(1) [shape parameter]
|
||||||
% k = hyperparameters(2) [shape parameter]
|
% s = hyperparameters(2) [scale parameter]
|
||||||
if hyperparameters(2)<=1
|
if hyperparameters(1)<=1
|
||||||
m = 0;
|
m = 0;
|
||||||
else
|
else
|
||||||
m = hyperparameters(1)*((hyperparameters(2)-1)/hyperparameters(2))^(1/hyperparameters(2));
|
m = hyperparameters(2)*((hyperparameters(1)-1)/hyperparameters(1))^(1/hyperparameters(1));
|
||||||
end
|
end
|
||||||
if length(hyperparameters)>2
|
if length(hyperparameters)>2
|
||||||
% Add location parameter
|
% Add location parameter
|
||||||
|
@ -212,7 +214,7 @@ end
|
||||||
%$ % Weibull density
|
%$ % Weibull density
|
||||||
%$ try
|
%$ try
|
||||||
%$ m1 = compute_prior_mode([1 1],8);
|
%$ 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;
|
%$ t(1) = true;
|
||||||
%$ catch
|
%$ catch
|
||||||
%$ t(1) = false;
|
%$ t(1) = false;
|
||||||
|
|
|
@ -9,8 +9,8 @@ function [a, b] = gamma_specification(mu, sigma2, lb, name) % --*-- Unitary te
|
||||||
% - name [string] Name of the parameter (or random variable).
|
% - name [string] Name of the parameter (or random variable).
|
||||||
%
|
%
|
||||||
% OUTPUTS
|
% OUTPUTS
|
||||||
% - a [double] First hyperparameter of the Gamma density.
|
% - a [double] First hyperparameter of the Gamma density (shape).
|
||||||
% - b [double] Second hyperparameter of the Gamma density.
|
% - b [double] Second hyperparameter of the Gamma density (scale).
|
||||||
|
|
||||||
% Copyright (C) 2015 Dynare Team
|
% Copyright (C) 2015 Dynare Team
|
||||||
%
|
%
|
||||||
|
|
|
@ -4,8 +4,8 @@ function [ldens,Dldens,D2ldens] = lpdfgweibull(x,a,b,c) % --*-- Unitary tests -
|
||||||
%
|
%
|
||||||
% INPUTS
|
% INPUTS
|
||||||
% - x [double] m*n matrix of points where the (logged) density will be evaluated,
|
% - x [double] m*n matrix of points where the (logged) density will be evaluated,
|
||||||
% - a [double] m*n matrix of First 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,
|
% - 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).
|
% - c [double] m*n matrix of Third Weibull distribution parameters (location parameter, default is 0).
|
||||||
%
|
%
|
||||||
% OUTPUTS
|
% OUTPUTS
|
||||||
|
|
|
@ -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.
|
% 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))))
|
%$ disp(sprintf('... mu=%s and s2=%s', num2str(mu(j,i)),num2str(s2(j,i))))
|
||||||
%$ end
|
%$ end
|
||||||
%$ if ~isnan(mu(j,i)) && ~isnan(s2(j,i)) && ~isinf(mu(j,i)) && ~isinf(s2(j,i))
|
%$ 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)
|
%$ if isnan(scale)
|
||||||
%$ t = false;
|
%$ t = false;
|
||||||
%$ else
|
%$ else
|
||||||
|
@ -105,7 +105,7 @@ scale = mu/gamma(1+1/shape);
|
||||||
%$ t = false;
|
%$ t = false;
|
||||||
%$ end
|
%$ end
|
||||||
%$ end
|
%$ end
|
||||||
%$ if ~t
|
%$ if ~t && debug
|
||||||
%$ failed1 = [failed1; mu(j,i) s2(j,i)];
|
%$ failed1 = [failed1; mu(j,i) s2(j,i)];
|
||||||
%$ failed1_ = [failed1_; shapes(i) scales(j)];
|
%$ 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)))
|
%$ error('UnitTest','Cannot compute scale and shape hyperparameters for mu=%s and s2=%s', num2str(mu(j,i)), num2str(s2(j,i)))
|
||||||
|
|
|
@ -3,8 +3,8 @@ function [ldens,Dldens,D2ldens] = lpdfgam(x,a,b);
|
||||||
%
|
%
|
||||||
% INPUTS
|
% INPUTS
|
||||||
% x [double] m*n matrix of locations,
|
% x [double] m*n matrix of locations,
|
||||||
% a [double] m*n matrix or scalar, First 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,
|
% b [double] m*n matrix or scalar, Second GAMMA distribution parameters (scale),
|
||||||
%
|
%
|
||||||
% OUTPUTS
|
% OUTPUTS
|
||||||
% ldens [double] m*n matrix of logged GAMMA densities evaluated at x.
|
% ldens [double] m*n matrix of logged GAMMA densities evaluated at x.
|
||||||
|
|
Loading…
Reference in New Issue