| Binomial {stats} | R Documentation |
The Binomial Distribution
Description
Density, distribution function, quantile function and random
generation for the binomial distribution with parameters size
and prob.
Usage
dbinom(x, size, prob, log = FALSE)
pbinom(q, size, prob, lower.tail = TRUE, log.p = FALSE)
qbinom(p, size, prob, lower.tail = TRUE, log.p = FALSE)
rbinom(n, size, prob)
Arguments
x, q |
vector of quantiles. |
p |
vector of probabilities. |
n |
number of observations. If |
size |
number of trials (zero or more). |
prob |
probability of success on each trial. |
log, log.p |
logical; if TRUE, probabilities p are given as log(p). |
lower.tail |
logical; if TRUE (default), probabilities are
|
Details
The binomial distribution with size = n and
prob = p has density
p(x) = {n \choose x} {p}^{x} {(1-p)}^{n-x}
for x = 0, \ldots, n.
If an element of x is not integer, the result of dbinom
is zero, with a warning.
p(x) is computed using Loader's algorithm, see the reference below.
The quantile is defined as the smallest value x such that
F(x) \ge p, where F is the distribution function.
Value
dbinom gives the density, pbinom gives the distribution
function, qbinom gives the quantile function and rbinom
generates random deviates.
If size is not an integer, NaN is returned.
Source
For dbinom a saddle-point expansion is used: see
Catherine Loader (2000). Fast and Accurate Computation of Binomial Probabilities; available from http://www.herine.net/stat/software/dbinom.html.
pbinom uses pbeta.
qbinom uses the Cornish–Fisher Expansion to include a skewness
correction to a normal approximation, followed by a search.
rbinom (for size < .Machine$integer.max) is based on
Kachitvichyanukul, V. and Schmeiser, B. W. (1988) Binomial random variate generation. Communications of the ACM, 31, 216–222.
See Also
dnbinom for the negative binomial, and
dpois for the Poisson distribution.
Examples
require(graphics)
# Compute P(45 < X < 55) for X Binomial(100,0.5)
sum(dbinom(46:54, 100, 0.5))
## Using "log = TRUE" for an extended range :
n <- 2000
k <- seq(0, n, by = 20)
plot (k, dbinom(k, n, pi/10, log=TRUE), type='l', ylab="log density",
main = "dbinom(*, log=TRUE) is better than log(dbinom(*))")
lines(k, log(dbinom(k, n, pi/10)), col='red', lwd=2)
## extreme points are omitted since dbinom gives 0.
mtext("dbinom(k, log=TRUE)", adj=0)
mtext("extended range", adj=0, line = -1, font=4)
mtext("log(dbinom(k))", col="red", adj=1)