java.lang.Object
All Implemented Interfaces:
`Serializable`, `Distribution`, `ExponentialFamily`

public class GammaDistribution extends Object implements ExponentialFamily
The Gamma distribution is a continuous probability distributions with a scale parameter θ and a shape parameter k. If k is an integer then the distribution represents the sum of k independent exponentially distributed random variables, each of which has a rate parameter of θ). The gamma distribution is frequently a probability model for waiting times; for instance, the waiting time until death in life testing. The probability density function is f(x; k,θ) = xk-1e-x/θ / (θkΓ(k)) for `x > 0` and k, θ `> 0`.
• If X ∼ Γ(k=1, θ=1/λ), then X has an exponential distribution with rate parameter λ.
• If X ∼ Γ(k=ν/2, θ=2), then X is identical to Χ2(ν), the chi-square distribution with ν degrees of freedom. Conversely, if Q ∼ Χ2(ν), and c is a positive constant, then c ⋅ Q ∼ Γ(k=ν/2, θ=2c).
• If k is an integer, the gamma distribution is an Erlang distribution and is the probability distribution of the waiting time until the k-th "arrival" in a one-dimensional Poisson process with intensity 1/θ.
• If X2 ∼ Γ(3/2, 2a2), then X has a Maxwell-Boltzmann distribution with parameter a.
In Bayesian inference, the gamma distribution is the conjugate prior to many likelihood distributions: the Poisson, exponential, normal (with known mean), Pareto, gamma with known shape, and inverse gamma with known shape parameter.
• ## Field Summary

Fields
Modifier and Type
Field
Description
`final double`
`k`
The shape parameter.
`final double`
`theta`
The scale parameter.
• ## Constructor Summary

Constructors
Constructor
Description
```GammaDistribution(double shape, double scale)```
Constructor.
• ## Method Summary

Modifier and Type
Method
Description
`double`
`cdf(double x)`
Cumulative distribution function.
`double`
`entropy()`
Returns Shannon entropy of the distribution.
`static GammaDistribution`
`fit(double[] data)`
Estimates the distribution parameters by (approximate) MLE.
`int`
`length()`
Returns the number of parameters of the distribution.
`double`
`logp(double x)`
The density at x in log scale, which may prevents the underflow problem.
`Mixture.Component`
```M(double[] x, double[] posteriori)```
The M step in the EM algorithm, which depends on the specific distribution.
`double`
`mean()`
Returns the mean of distribution.
`double`
`p(double x)`
The probability density function for continuous distribution or probability mass function for discrete distribution at x.
`double`
`quantile(double p)`
The quantile, the probability to the left of quantile is p.
`double`
`rand()`
Only support shape parameter k of integer.
`double`
`sd()`
Returns the standard deviation of distribution.
`String`
`toString()`

`double`
`variance()`
Returns the variance of distribution.

### Methods inherited from class java.lang.Object

`clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait`

### Methods inherited from interface smile.stat.distribution.Distribution

`inverseTransformSampling, likelihood, logLikelihood, quantile, quantile, rand, rejectionSampling`
• ## Field Details

• ### theta

public final double theta
The scale parameter.
• ### k

public final double k
The shape parameter.
• ## Constructor Details

Constructor.
Parameters:
`shape` - the shape parameter.
`scale` - the scale parameter.
• ## Method Details

• ### fit

Estimates the distribution parameters by (approximate) MLE.
Parameters:
`data` - the training data.
Returns:
the distribution.
• ### length

public int length()
Description copied from interface: `Distribution`
Returns the number of parameters of the distribution. The "length" is in the sense of the minimum description length principle.
Specified by:
`length` in interface `Distribution`
Returns:
The number of parameters.
• ### mean

public double mean()
Description copied from interface: `Distribution`
Returns the mean of distribution.
Specified by:
`mean` in interface `Distribution`
Returns:
The mean.
• ### variance

public double variance()
Description copied from interface: `Distribution`
Returns the variance of distribution.
Specified by:
`variance` in interface `Distribution`
Returns:
The variance.
• ### sd

public double sd()
Description copied from interface: `Distribution`
Returns the standard deviation of distribution.
Specified by:
`sd` in interface `Distribution`
Returns:
The standard deviation.
• ### entropy

public double entropy()
Description copied from interface: `Distribution`
Returns Shannon entropy of the distribution.
Specified by:
`entropy` in interface `Distribution`
Returns:
Shannon entropy.
• ### toString

public String toString()
Overrides:
`toString` in class `Object`
• ### rand

public double rand()
Only support shape parameter k of integer.
Specified by:
`rand` in interface `Distribution`
Returns:
a random number.
• ### p

public double p(double x)
Description copied from interface: `Distribution`
The probability density function for continuous distribution or probability mass function for discrete distribution at x.
Specified by:
`p` in interface `Distribution`
Parameters:
`x` - a real number.
Returns:
the density.
• ### logp

public double logp(double x)
Description copied from interface: `Distribution`
The density at x in log scale, which may prevents the underflow problem.
Specified by:
`logp` in interface `Distribution`
Parameters:
`x` - a real number.
Returns:
the log density.
• ### cdf

public double cdf(double x)
Description copied from interface: `Distribution`
Cumulative distribution function. That is the probability to the left of x.
Specified by:
`cdf` in interface `Distribution`
Parameters:
`x` - a real number.
Returns:
the probability.
• ### quantile

public double quantile(double p)
Description copied from interface: `Distribution`
The quantile, the probability to the left of quantile is p. It is actually the inverse of cdf.
Specified by:
`quantile` in interface `Distribution`
Parameters:
`p` - the probability.
Returns:
the quantile.
• ### M

public Mixture.Component M(double[] x, double[] posteriori)
Description copied from interface: `ExponentialFamily`
The M step in the EM algorithm, which depends on the specific distribution.
Specified by:
`M` in interface `ExponentialFamily`
Parameters:
`x` - the input data for estimation
`posteriori` - the posteriori probability.
Returns:
the (unnormalized) weight of this distribution in the mixture.