size
and prob
.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)
length(n) > 1
, the length
is taken to be the number required.0 < prob <= 1
.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.size
prob
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 dbinom
for the binomial, dpois
for the
Poisson and dgeom
for the geometric distribution, which
is a special case of the negative binomial.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)]))
Run the code above in your browser using DataLab