Posnegbin {VGAM} | R Documentation |
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) qposnegbin(p, size, prob = NULL, munb = NULL) rposnegbin(n, size, prob = NULL, munb = NULL)
x, q |
vector of quantiles. |
p |
vector of probabilities. |
n |
number of observations.
Fed into |
size, prob, munb, log |
Same arguments as that of an ordinary negative binomial distribution
(see Short vectors are recycled.
The parameter |
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
munb / (1-p(0))
where munb the mean of an ordinary negative binomial distribution.
dposnegbin
gives the density,
pposnegbin
gives the distribution function,
qposnegbin
gives the quantile function, and
rposnegbin
generates n random deviates.
T. W. Yee
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.
posnegbinomial
,
zanegbinomial
,
zinegbinomial
,
rnbinom
.
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)) ## End(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