Poisson {stats} | R Documentation |
Density, distribution function, quantile function and random
generation for the Poisson distribution with parameter lambda
.
dpois(x, lambda, log = FALSE)
ppois(q, lambda, lower.tail = TRUE, log.p = FALSE)
qpois(p, lambda, lower.tail = TRUE, log.p = FALSE)
rpois(n, lambda)
x |
vector of (non-negative integer) quantiles. |
q |
vector of quantiles. |
p |
vector of probabilities. |
n |
number of random values to return. |
lambda |
vector of (non-negative) means. |
log , log.p |
logical; if TRUE, probabilities p are given as log(p). |
lower.tail |
logical; if TRUE (default), probabilities are
|
The Poisson distribution has density
p(x) = \frac{\lambda^x e^{-\lambda}}{x!}
for x = 0, 1, 2, \ldots
. The mean and variance are
E(X) = Var(X) = \lambda
.
If an element of x
is not integer, the result of dpois
is zero, with a warning.
p(x)
is computed using Loader's algorithm, see the reference in
dbinom
.
The quantile is left continuous: qpois(q, lambda)
is the largest
integer x
such that P(X \le x) < q
.
Setting lower.tail = FALSE
allows to get much more precise
results when the default, lower.tail = TRUE
would return 1, see
the example below.
dpois
gives the (log) density,
ppois
gives the (log) distribution function,
qpois
gives the quantile function, and
rpois
generates random deviates.
Invalid lambda
will result in return value NaN
, with a warning.
dpois
uses C code contributed by Catherine Loader
(see dbinom
).
ppois
uses pgamma
.
qpois
uses the Cornish–Fisher Expansion to include a skewness
correction to a normal approximation, followed by a search.
rpois
uses
Ahrens, J. H. and Dieter, U. (1982). Computer generation of Poisson deviates from modified normal distributions. ACM Transactions on Mathematical Software, 8, 163–179.
dbinom
for the binomial and dnbinom
for
the negative binomial distribution.
require(graphics)
-log(dpois(0:7, lambda=1) * gamma(1+ 0:7)) # == 1
Ni <- rpois(50, lambda = 4); table(factor(Ni, 0:max(Ni)))
1 - ppois(10*(15:25), lambda=100) # becomes 0 (cancellation)
ppois(10*(15:25), lambda=100, lower.tail=FALSE) # no cancellation
par(mfrow = c(2, 1))
x <- seq(-0.01, 5, 0.01)
plot(x, ppois(x, 1), type="s", ylab="F(x)", main="Poisson(1) CDF")
plot(x, pbinom(x, 100, 0.01),type="s", ylab="F(x)",
main="Binomial(100, 0.01) CDF")