# NegBinomial {stats}

### Description

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

and `prob`

.

### Usage

dnbinom(x, size, prob, mu, log = FALSE) pnbinom(q, size, prob, mu, lower.tail = TRUE, log.p = FALSE) qnbinom(p, size, prob, mu, lower.tail = TRUE, log.p = FALSE) rnbinom(n, size, prob, mu)

### Arguments

- x
- vector of (non-negative integer) quantiles.
- 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
- target for number of successful trials, or dispersion parameter (the shape parameter of the gamma mixing distribution). Must be strictly positive, need not be integer.
- prob
- probability of success in each trial.
`0 < prob <= 1`

. - mu
- alternative parametrization via mean: see ‘Details’.
- 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 negative binomial distribution with `size`

= n and `prob`

= p has density for x = 0, 1, 2, ..., n > 0 and 0 < p ≤ 1.

This represents the number of failures which occur in a sequence of Bernoulli trials before a target number of successes is reached. The mean is n(1-p)/p and variance n(1-p)/p^2.

A negative binomial distribution can also arise as a mixture of Poisson distributions with mean distributed as a gamma distribution (see`pgamma`

) with scale parameter `(1 - prob)/prob`

and shape parameter `size`

. (This definition allows non-integer values of `size`

.)

An alternative parametrization (often used in ecology) is by the *mean* `mu`

, and `size`

, the *dispersion parameter*, where `prob`

= `size/(size+mu)`

. The variance is `mu + mu^2/size`

in this parametrization.

If an element of `x`

is not integer, the result of `dnbinom`

is zero, with a warning.

The case `size == 0`

is the distribution concentrated at zero. This is the limiting distribution for `size`

approaching zero, even if `mu`

rather than `prob`

is held constant. Notice though, that the mean of the limit distribution is 0, whatever the value of `mu`

.

The quantile is defined as the smallest value x such that F(x) ≥ p, where F is the distribution function.

### Values

`dnbinom`

gives the density, `pnbinom`

gives the distribution function, `qnbinom`

gives the quantile function, and `rnbinom`

generates random deviates.

Invalid `size`

or `prob`

will result in return value `NaN`

, with a warning. The length of the result is determined by `n`

for `rnbinom`

, and is the maximum of the lengths of the numerical parameters for the other functions. The numerical parameters other than `n`

are recycled to the length of the result. Only the first elements of the logical parameters are used.

### See Also

Distributions for standard distributions, including `dbinom`

for the binomial, `dpois`

for the Poisson and `dgeom`

for the geometric distribution, which is a special case of the negative binomial.

### Examples

require(graphics) x <- 0:11 dnbinom(x, size = 1, prob = 1/2) * 2^(1 + x) # == 1 126 / dnbinom(0:8, size = 2, prob = 1/2) #- theoretically integer ## Cumulative ('p') = Sum of discrete prob.s ('d'); Relative error : summary(1 - cumsum(dnbinom(x, size = 2, prob = 1/2)) / pnbinom(x, size = 2, prob = 1/2)) x <- 0:15 size <- (1:20)/4 persp(x, size, dnb <- outer(x, size, function(x,s) dnbinom(x, s, prob = 0.4)), xlab = "x", ylab = "s", zlab = "density", theta = 150) title(tit <- "negative binomial density(x,s, pr = 0.4) vs. x & s") image (x, size, log10(dnb), main = paste("log [", tit, "]")) contour(x, size, log10(dnb), add = TRUE) ## Alternative parametrization x1 <- rnbinom(500, mu = 4, size = 1) x2 <- rnbinom(500, mu = 4, size = 10) x3 <- rnbinom(500, mu = 4, size = 100) h1 <- hist(x1, breaks = 20, plot = FALSE) h2 <- hist(x2, breaks = h1$breaks, plot = FALSE) h3 <- hist(x3, breaks = h1$breaks, plot = FALSE) barplot(rbind(h1$counts, h2$counts, h3$counts), beside = TRUE, col = c("red","blue","cyan"), names.arg = round(h1$breaks[-length(h1$breaks)]))

Documentation reproduced from R 3.0.2. License: GPL-2.