GammaDist {stats} | R Documentation |
Density, distribution function, quantile function and random
generation for the Gamma distribution with parameters shape
and
scale
.
dgamma(x, shape, rate = 1, scale = 1/rate, log = FALSE)
pgamma(q, shape, rate = 1, scale = 1/rate, lower.tail = TRUE,
log.p = FALSE)
qgamma(p, shape, rate = 1, scale = 1/rate, lower.tail = TRUE,
log.p = FALSE)
rgamma(n, shape, rate = 1, scale = 1/rate)
x , q |
vector of quantiles. |
p |
vector of probabilities. |
n |
number of observations. If |
rate |
an alternative way to specify the scale. |
shape , scale |
shape and scale parameters. Must be positive,
|
log , log.p |
logical; if |
lower.tail |
logical; if TRUE (default), probabilities are
|
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
can 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
.) Similarly, qgamma
has a very hard job for
small scale
, and warns of potential unreliability for
scale < 1e-10
.
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 S parametrization is via shape
and rate
: S has no
scale
parameter.
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 as pgamma(x, a) * gamma(a)
.
A few use the ‘upper’ incomplete gamma function, the integral
from x
to \infty
which can be computed by
pgamma(x, a, lower=FALSE) * gamma(a)
, or its normalized
version. See also
http://en.wikipedia.org/wiki/Incomplete_gamma_function.
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.
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.
Abramowitz, M. and Stegun, I. A. (1972) Handbook of Mathematical Functions. New York: Dover. Chapter 6: Gamma and Related Functions.
gamma
for the gamma function, dbeta
for
the Beta distribution and dchisq
for the chi-squared
distribution which is a special case of the Gamma distribution.
-log(dgamma(1:4, shape=1))
p <- (1:9)/10
pgamma(qgamma(p,shape=2), shape=2)
1 - 1/exp(qgamma(p, shape=1))
# even for shape = 0.001 about half the mass is on numbers
# that cannot be represented accurately (and most of those as zero)
pgamma(.Machine$double.xmin, 0.001)
pgamma(5e-324, 0.001) # on most machines this is the smallest
# representable non-zero number
table(rgamma(1e4, 0.001) == 0)/1e4