Density, distribution function, quantile function and random generation for the positive-negative binomial distribution.
dposnegbin(x, size, prob = NULL, munb = NULL, log = FALSE)
pposnegbin(q, size, prob = NULL, munb = NULL,
lower.tail = TRUE, log.p = FALSE)
qposnegbin(p, size, prob = NULL, munb = NULL)
rposnegbin(n, size, prob = NULL, munb = NULL)
vector of quantiles.
vector of probabilities.
number of observations.
Fed into runif
.
Same arguments as that of an ordinary negative binomial distribution
(see dnbinom
).
Some arguments have been renamed slightly.
Short vectors are recycled.
The parameter 1/size
is known as a dispersion parameter;
as size
approaches infinity, the negative binomial distribution
approaches a Poisson distribution.
Note that prob
must lie in NaN
is returned.
Same arguments as that of an ordinary negative binomial distribution
(see pnbinom
).
dposnegbin
gives the density,
pposnegbin
gives the distribution function,
qposnegbin
gives the quantile function, and
rposnegbin
generates
The positive-negative binomial distribution is a negative binomial
distribution but with the probability of a zero being zero.
The other probabilities are scaled to add to unity.
The mean therefore is
Welsh, A. H., Cunningham, R. B., Donnelly, C. F. and Lindenmayer, D. B. (1996) Modelling the abundances of rare species: statistical models for counts with extra zeros. Ecological Modelling, 88, 297--308.
# NOT RUN {
munb <- 5; size <- 4; n <- 1000
table(y <- rposnegbin(n, munb = munb, size = size))
mean(y) # sample mean
munb / (1 - (size / (size + munb))^size) # population mean
munb / pnbinom(0, mu = munb, size = size, lower.tail = FALSE) # same as before
x <- (-1):17
(ii <- dposnegbin(x, munb = munb, size = size))
max(abs(cumsum(ii) - pposnegbin(x, munb = munb, size = size))) # Should be 0
# }
# NOT RUN {
x <- 0:10
barplot(rbind(dposnegbin(x, munb = munb, size = size),
dnbinom(x, mu = munb, size = size)),
beside = TRUE, col = c("blue","green"),
main = paste("dposnegbin(munb = ", munb, ", size = ", size, ") (blue) vs",
" dnbinom(mu = ", munb, ", size = ", size, ") (green)", sep = ""),
names.arg = as.character(x))
# }
# NOT RUN {
# Another test for pposnegbin()
nn <- 5000
mytab <- cumsum(table(rposnegbin(nn, munb = munb, size = size))) / nn
myans <- pposnegbin(sort(as.numeric(names(mytab))), munb = munb, size = size)
max(abs(mytab - myans)) # Should be 0
# }
Run the code above in your browser using DataLab