# NegBinomial

##### The Negative Binomial Distribution

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

and `prob`

.

- Keywords
- distribution

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

##### Details

The negative binomial distribution with `size`

\(= n\) and
`prob`

\(= p\) has density
$$
p(x) = \frac{\Gamma(x+n)}{\Gamma(n) x!} p^n (1-p)^x$$
for \(x = 0, 1, 2, \ldots\), \(n > 0\) and \(0 < p \le 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 \(\mu = 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`

(see above), 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) \ge p\), where \(F\) is the distribution function.

##### Value

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

##### 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

`library(stats)`

```
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 package stats, version 3.3.3, License: Part of R 3.3.3*