R: The Binomial Distribution

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 `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 ≤ x], otherwise, P[X > x].

### Details

The binomial distribution with `size` = n and `prob` = p has density

p(x) = choose(n,x) p^x (1-p)^(n-x)

for x = 0, …, 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) ≥ 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.

For larger values it uses inversion.

### See Also

Distributions for other standard distributions, including `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)

[Package stats version 2.15.1 Index]