org.apache.commons.math3.distribution
public class GammaDistribution extends AbstractRealDistribution
Modifier and Type | Field and Description |
---|---|
static double |
DEFAULT_INVERSE_ABSOLUTE_ACCURACY
Default inverse cumulative probability accuracy.
|
private double |
densityPrefactor1
The constant value of
shape / scale * sqrt(e / (2 * pi * (shape + g + 0.5))) / L(shape) ,
where L(shape) is the Lanczos approximation returned by
Gamma.lanczos(double) . |
private double |
densityPrefactor2
The constant value of
shape * sqrt(e / (2 * pi * (shape + g + 0.5))) / L(shape) ,
where L(shape) is the Lanczos approximation returned by
Gamma.lanczos(double) . |
private double |
maxLogY
Upper bound on
log(y) (y = x / scale ) for the selection
of the computation method in density(double) . |
private double |
minY
Lower bound on
y = x / scale for the selection of the computation
method in density(double) . |
private double |
scale
The scale parameter.
|
private static long |
serialVersionUID
Serializable version identifier.
|
private double |
shape
The shape parameter.
|
private double |
shiftedShape
|
private double |
solverAbsoluteAccuracy
Inverse cumulative probability accuracy.
|
random, randomData, SOLVER_DEFAULT_ABSOLUTE_ACCURACY
Constructor and Description |
---|
GammaDistribution(double shape,
double scale)
Creates a new gamma distribution with specified values of the shape and
scale parameters.
|
GammaDistribution(double shape,
double scale,
double inverseCumAccuracy)
Creates a new gamma distribution with specified values of the shape and
scale parameters.
|
GammaDistribution(RandomGenerator rng,
double shape,
double scale,
double inverseCumAccuracy)
Creates a Gamma distribution.
|
Modifier and Type | Method and Description |
---|---|
double |
cumulativeProbability(double x)
For a random variable
X whose values are distributed according
to this distribution, this method returns P(X <= x) . |
double |
density(double x)
Returns the probability density function (PDF) of this distribution
evaluated at the specified point
x . |
double |
getAlpha()
Deprecated.
as of version 3.1,
getShape() should be preferred.
This method will be removed in version 4.0. |
double |
getBeta()
Deprecated.
as of version 3.1,
getScale() should be preferred.
This method will be removed in version 4.0. |
double |
getNumericalMean()
Use this method to get the numerical value of the mean of this
distribution.
|
double |
getNumericalVariance()
Use this method to get the numerical value of the variance of this
distribution.
|
double |
getScale()
Returns the scale parameter of
this distribution. |
double |
getShape()
Returns the shape parameter of
this distribution. |
protected double |
getSolverAbsoluteAccuracy()
Returns the solver absolute accuracy for inverse cumulative computation.
|
double |
getSupportLowerBound()
Access the lower bound of the support.
|
double |
getSupportUpperBound()
Access the upper bound of the support.
|
boolean |
isSupportConnected()
Use this method to get information about whether the support is connected,
i.e.
|
boolean |
isSupportLowerBoundInclusive()
Whether or not the lower bound of support is in the domain of the density
function.
|
boolean |
isSupportUpperBoundInclusive()
Whether or not the upper bound of support is in the domain of the density
function.
|
double |
sample()
This implementation uses the following algorithms:
|
cumulativeProbability, inverseCumulativeProbability, probability, probability, reseedRandomGenerator, sample
public static final double DEFAULT_INVERSE_ABSOLUTE_ACCURACY
private static final long serialVersionUID
private final double shape
private final double scale
private final double shiftedShape
private final double densityPrefactor1
shape / scale * sqrt(e / (2 * pi * (shape + g + 0.5))) / L(shape)
,
where L(shape)
is the Lanczos approximation returned by
Gamma.lanczos(double)
. This prefactor is used in
density(double)
, when no overflow occurs with the natural
calculation.private final double densityPrefactor2
shape * sqrt(e / (2 * pi * (shape + g + 0.5))) / L(shape)
,
where L(shape)
is the Lanczos approximation returned by
Gamma.lanczos(double)
. This prefactor is used in
density(double)
, when overflow occurs with the natural
calculation.private final double minY
y = x / scale
for the selection of the computation
method in density(double)
. For y <= minY
, the natural
calculation overflows.private final double maxLogY
log(y)
(y = x / scale
) for the selection
of the computation method in density(double)
. For
log(y) >= maxLogY
, the natural calculation overflows.private final double solverAbsoluteAccuracy
public GammaDistribution(double shape, double scale) throws NotStrictlyPositiveException
shape
- the shape parameterscale
- the scale parameterNotStrictlyPositiveException
- if shape <= 0
or
scale <= 0
.public GammaDistribution(double shape, double scale, double inverseCumAccuracy) throws NotStrictlyPositiveException
shape
- the shape parameterscale
- the scale parameterinverseCumAccuracy
- the maximum absolute error in inverse
cumulative probability estimates (defaults to
DEFAULT_INVERSE_ABSOLUTE_ACCURACY
).NotStrictlyPositiveException
- if shape <= 0
or
scale <= 0
.public GammaDistribution(RandomGenerator rng, double shape, double scale, double inverseCumAccuracy) throws NotStrictlyPositiveException
rng
- Random number generator.shape
- the shape parameterscale
- the scale parameterinverseCumAccuracy
- the maximum absolute error in inverse
cumulative probability estimates (defaults to
DEFAULT_INVERSE_ABSOLUTE_ACCURACY
).NotStrictlyPositiveException
- if shape <= 0
or
scale <= 0
.@Deprecated public double getAlpha()
getShape()
should be preferred.
This method will be removed in version 4.0.this
distribution.public double getShape()
this
distribution.@Deprecated public double getBeta()
getScale()
should be preferred.
This method will be removed in version 4.0.this
distribution.public double getScale()
this
distribution.public double density(double x)
x
. In general, the PDF is
the derivative of the CDF
.
If the derivative does not exist at x
, then an appropriate
replacement should be returned, e.g. Double.POSITIVE_INFINITY
,
Double.NaN
, or the limit inferior or limit superior of the
difference quotient.x
- the point at which the PDF is evaluatedx
public double cumulativeProbability(double x)
X
whose values are distributed according
to this distribution, this method returns P(X <= x)
. In other
words, this method represents the (cumulative) distribution function
(CDF) for this distribution.
The implementation of this method is based on:
x
- the point at which the CDF is evaluatedx
protected double getSolverAbsoluteAccuracy()
getSolverAbsoluteAccuracy
in class AbstractRealDistribution
public double getNumericalMean()
alpha
and scale parameter beta
, the
mean is alpha * beta
.Double.NaN
if it is not definedpublic double getNumericalVariance()
alpha
and scale parameter beta
, the
variance is alpha * beta^2
.Double.POSITIVE_INFINITY
as
for certain cases in TDistribution
) or Double.NaN
if it
is not definedpublic double getSupportLowerBound()
inverseCumulativeProbability(0)
. In other words, this
method must return
inf {x in R | P(X <= x) > 0}
.
public double getSupportUpperBound()
inverseCumulativeProbability(1)
. In other words, this
method must return
inf {x in R | P(X <= x) = 1}
.
public boolean isSupportLowerBoundInclusive()
getSupporLowerBound()
is finite and
density(getSupportLowerBound())
returns a non-NaN, non-infinite
value.public boolean isSupportUpperBoundInclusive()
getSupportUpperBound()
is finite and
density(getSupportUpperBound())
returns a non-NaN, non-infinite
value.public boolean isSupportConnected()
true
public double sample()
This implementation uses the following algorithms:
For 0 < shape < 1:
Ahrens, J. H. and Dieter, U., Computer methods for
sampling from gamma, beta, Poisson and binomial distributions.
Computing, 12, 223-246, 1974.
For shape >= 1:
Marsaglia and Tsang, A Simple Method for Generating
Gamma Variables. ACM Transactions on Mathematical Software,
Volume 26 Issue 3, September, 2000.
sample
in interface RealDistribution
sample
in class AbstractRealDistribution
Copyright (c) 2003-2013 Apache Software Foundation