# macroeco.models.dgamma¶

macroeco.models.dgamma = <macroeco.models._distributions.dgamma_gen object at 0x108653850>

A discrete gamma random variable.

$P(x) = k * x^{(\alpha - 1)} * e^{(-1 / \theta)*x}$

for x >= 1, \theta > 0. k is the normalizing constant. \alpha is analogous to the k_{agg} parameter in the zero-truncated negative binomial.

Parameters: x : array_like quantiles q : array_like lower or upper tail probability alpha, theta : array_like shape parameters loc : array_like, optional location parameter (default=0) size : int or tuple of ints, optional shape of random variates (default computed from input arguments ) moments : str, optional composed of letters [‘mvsk’] specifying which moments to compute where ‘m’ = mean, ‘v’ = variance, ‘s’ = (Fisher’s) skew and ‘k’ = (Fisher’s) kurtosis. (default=’mv’) Alternatively, the object may be called (as a function) to fix the shape and : location parameters returning a “frozen” discrete RV object: : rv = dgamma(alpha, theta, loc=0) : Frozen RV object with the same methods but holding the given shape and location fixed. alpha : float distribution parameter theta : float distribution parameter

Notes

This parameterization of the discrete gamma was taken from [1].

References

 [1] Frank, F. (2011). Measurement scale in maximum entropy models of species abundance. Journal of Evolutionary Biology, 24(3), 485-496

Examples

>>> import macroeco.models as md
>>> # dgamma takes two parameters
>>> dgamma_dist = md.dgamma(alpha=1, theta=2)
>>> # When alpha = 1 and theta = 2, should be similar to a to
>>> # zero_truncated NBD with mu = 2.541.
>>> dgamma_dist.pmf(np.arange(1, 10))
array([ 0.39346934,  0.23865122,  0.14474928,  0.08779488,  0.05325028,
0.03229793,  0.01958968,  0.01188174,  0.00720664])
>>> md.nbinom_ztrunc.pmf(np.arange(1, 10), mu=2.541, k_agg=1)
array([ 0.39354585,  0.23866751,  0.1447409 ,  0.08777872,  0.05323377,
0.03228384,  0.01957867,  0.01187357,  0.00720077])
>>> # Get the approximate mean and variance
>>> dgamma_dist.stats()
(array(2.541494082536799), array(3.917698089032762))
>>> # Draw random numbers from the discrete gamma distribution
>>> dgamma_dist.rvs(size=20)
array([5, 4, 2, 1, 1, 1, 3, 3, 3, 3, 1, 1, 2, 1, 1, 1, 3, 1, 1, 3])

Methods

 rvs(alpha, theta, loc=0, size=1) Random variates. pmf(x, alpha, theta, loc=0) Probability mass function. logpmf(x, alpha, theta, loc=0) Log of the probability mass function. cdf(x, alpha, theta, loc=0) Cumulative density function. logcdf(x, alpha, theta, loc=0) Log of the cumulative density function. sf(x, alpha, theta, loc=0) Survival function (1-cdf — sometimes more accurate). logsf(x, alpha, theta, loc=0) Log of the survival function. ppf(q, alpha, theta, loc=0) Percent point function (inverse of cdf — percentiles). isf(q, alpha, theta, loc=0) Inverse survival function (inverse of sf). stats(alpha, theta, loc=0, moments=’mv’) Mean(‘m’), variance(‘v’), skew(‘s’), and/or kurtosis(‘k’). entropy(alpha, theta, loc=0) (Differential) entropy of the RV. expect(func, alpha, theta, loc=0, lb=None, ub=None, conditional=False) Expected value of a function (of one argument) with respect to the distribution. median(alpha, theta, loc=0) Median of the distribution. mean(alpha, theta, loc=0) Mean of the distribution. var(alpha, theta, loc=0) Variance of the distribution. std(alpha, theta, loc=0) Standard deviation of the distribution. interval(alpha, alpha, theta, loc=0) Endpoints of the range that contains alpha percent of the distribution