Density, distribution function, quantile function and random
generation for the binomial distribution with parameters `size`

and `prob`

.

This is conventionally interpreted as the number of ‘successes’
in `size`

trials.

```
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)
```

x, q

vector of quantiles.

p

vector of probabilities.

n

number of observations. If `length(n) > 1`

, the length
is taken to be the number required.

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 \(P[X \le x]\), otherwise, \(P[X > x]\).

`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.

The length of the result is determined by `n`

for
`rbinom`

, 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.

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\).
Note that binomial *coefficients* can be computed by
`choose`

in R.

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.

Distributions for other standard distributions, including
`dnbinom`

for the negative binomial, and
`dpois`

for the Poisson distribution.

# NOT RUN { 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) # }