
Random count data from a discrete gamma distribution
Source:R/standalone-distributions.R
rdiscgamma.Rd
For count data that is under-dispersed we can use a gamma distribution rounded
to the nearest whole number. This is the same as the method of discretisation
in make_gamma_ip
, and suits delay distributions where there is less variability
than can be represented with a Poisson or negative binomial distribution.
Source
dgamma
is computed via the Poisson density, using code contributed
by Catherine Loader (see dbinom
).
pgamma
uses an unpublished (and not otherwise documented)
algorithm ‘mainly by Morten Welinder’.
qgamma
is based on a C translation of
Best, D. J. and D. E. Roberts (1975). Algorithm AS91. Percentage points of the chi-squared distribution. Applied Statistics, 24, 385–388.
plus a final Newton step to improve the approximation.
rgamma
for shape >= 1
uses
Ahrens, J. H. and Dieter, U. (1982). Generating gamma variates by a modified rejection technique. Communications of the ACM, 25, 47–54,
and for 0 < shape < 1
uses
Ahrens, J. H. and Dieter, U. (1974). Computer methods for sampling from gamma, beta, Poisson and binomial distributions. Computing, 12, 223–246.
Arguments
- n
number of observations. If
length(n) > 1
, the length is taken to be the number required.- mean
the mean value on the true scale (vectorised)
- sd
the standard deviation on the true scale (vectorised)
- kappa
a coefficient of variation. where 0 is no variability and 1 is maximally variability (vectorised)
Value
dgamma
gives the density,
pgamma
gives the distribution function,
qgamma
gives the quantile function, and
rgamma
generates random deviates.
Invalid arguments will result in return value NaN
, with a warning.
The length of the result is determined by n
for
rgamma
, and is the maximum of the lengths of the
numerical arguments for the other functions.
The numerical arguments other than n
are recycled to the
length of the result. Only the first elements of the logical
arguments are used.
Details
If scale
is omitted, it assumes the default value of 1
.
The Gamma distribution with parameters shape
\(=\alpha\)
and scale
\(=\sigma\) has density
$$
f(x)= \frac{1}{{\sigma}^{\alpha}\Gamma(\alpha)} {x}^{\alpha-1} e^{-x/\sigma}%
$$
for \(x \ge 0\), \(\alpha > 0\) and \(\sigma > 0\).
(Here \(\Gamma(\alpha)\) is the function implemented by R's
gamma()
and defined in its help. Note that \(a = 0\)
corresponds to the trivial distribution with all mass at point 0.)
The mean and variance are \(E(X) = \alpha\sigma\) and \(Var(X) = \alpha\sigma^2\).
The cumulative hazard \(H(t) = - \log(1 - F(t))\) is
-pgamma(t, ..., lower = FALSE, log = TRUE)
Note that for smallish values of shape
(and moderate
scale
) a large parts of the mass of the Gamma distribution is
on values of \(x\) so near zero that they will be represented as
zero in computer arithmetic. So rgamma
may well return values
which will be represented as zero. (This will also happen for very
large values of scale
since the actual generation is done for
scale = 1
.)
Note
The S (Becker , 1988) parametrization was via shape
and rate
: S had no scale
parameter. It is an error
to supply both scale
and rate
.
pgamma
is closely related to the incomplete gamma function. As
defined by Abramowitz and Stegun 6.5.1 (and by ‘Numerical
Recipes’) this is
$$P(a,x) = \frac{1}{\Gamma(a)} \int_0^x t^{a-1} e^{-t} dt$$
\(P(a, x)\) is pgamma(x, a)
. Other authors (for example
Karl Pearson in his 1922 tables) omit the normalizing factor,
defining the incomplete gamma function \(\gamma(a,x)\) as
\(\gamma(a,x) = \int_0^x t^{a-1} e^{-t} dt,\) i.e., pgamma(x, a) * gamma(a)
.
Yet other use the ‘upper’ incomplete gamma function,
$$\Gamma(a,x) = \int_x^\infty t^{a-1} e^{-t} dt,$$
which can be computed by
pgamma(x, a, lower = FALSE) * gamma(a)
.
Note however that pgamma(x, a, ..)
currently requires \(a > 0\),
whereas the incomplete gamma function is also defined for negative
\(a\). In that case, you can use gamma_inc(a,x)
(for
\(\Gamma(a,x)\)) from package gsl.
See also https://en.wikipedia.org/wiki/Incomplete_gamma_function, or https://dlmf.nist.gov/8.2#i.
References
Becker, R. A., Chambers, J. M. and Wilks, A. R. (1988). The New S Language. Wadsworth & Brooks/Cole.
Shea, B. L. (1988). Algorithm AS 239: Chi-squared and incomplete Gamma integral, Applied Statistics (JRSS C), 37, 466–473. doi:10.2307/2347328.
Abramowitz, M. and Stegun, I. A. (1972) Handbook of Mathematical Functions. New York: Dover. Chapter 6: Gamma and Related Functions.
NIST Digital Library of Mathematical Functions. https://dlmf.nist.gov/, section 8.2.
See also
gamma
for the gamma function.
Distributions for other standard distributions, including
dbeta
for the Beta distribution and dchisq
for the chi-squared distribution which is a special case of the Gamma
distribution.