Last chance! 50% off unlimited learning
Sale ends in
posnegbinomial(lmunb = "loge", lsize = "loge",
isize = NULL, zero = -2, nsimEIM = 250,
ishrinkage = 0.95, imethod = 1)
munb
parameter, which is the mean
$\mu_{nb}$ of an ordinary negative binomial distribution.
See Links
for more choices.k
.
See Links
for more choices.k
, an index parameter.
The value 1/k
is known as a dispersion parameter.
If failure to converge occurs try different values (and/or use
imethod
).
If necessary this vector is recyclenegbinomial
."vglmff"
(see vglmff-class
).
The object is used by modelling functions such as vglm
,
rrvglm
and vgam
.k
equalling infinity.
If the data is Poisson or close to Poisson, numerical problems may
occur. Possibly a loglog link could be added in the future to try help
handle this problem.
This trace = TRUE
is useful for monitoring convergence.
This family function is based on negbinomial
and most
details can be found there. To avoid confusion, the parameter
munb
here corresponds to the mean of an ordinary negative
binomial distribution negbinomial
. The mean of
posnegbinomial
is
The parameters munb
and k
are not independent in the
positive negative binomial distribution, whereas they are in the
ordinary negative binomial distribution.
This function handles multivariate responses, so that a matrix
can be used as the response. The number of columns is the number
of species, say, and setting zero = -2
means that all
species have a k
equalling a (different) intercept only.
Williamson, E. and Bretherton, M. H. (1964) Tables of the logarithmic series distribution. Annals of Mathematical Statistics, 35, 284--297.
rposnegbin
,
pospoisson
,
negbinomial
,
zanegbinomial
,
rnbinom
,
CommonVGAMffArguments
,
corbet
,
logff
,
simulate.vlm
.pdata <- data.frame(x2 = runif(nn <- 1000))
pdata <- transform(pdata, y1 = rposnegbin(nn, munb = exp(0+2*x2), size = exp(1)),
y2 = rposnegbin(nn, munb = exp(1+2*x2), size = exp(3)))
fit <- vglm(cbind(y1, y2) ~ x2, posnegbinomial, data = pdata, trace = TRUE)
coef(fit, matrix = TRUE)
dim(depvar(fit)) # dim(fit@y) is not as good
# Another artificial data example
pdata2 <- data.frame(munb = exp(2), size = exp(3)); nn <- 1000
pdata2 <- transform(pdata2, y3 = rposnegbin(nn, munb = munb, size = size))
with(pdata2, table(y3))
fit <- vglm(y3 ~ 1, posnegbinomial, pdata2, trace = TRUE)
coef(fit, matrix = TRUE)
with(pdata2, mean(y3)) # Sample mean
head(with(pdata2, munb/(1-(size/(size+munb))^size)), 1) # Population mean
head(fitted(fit), 3)
head(predict(fit), 3)
# Example: Corbet (1943) butterfly Malaya data
fit <- vglm(ofreq ~ 1, posnegbinomial, weights = species, data = corbet)
coef(fit, matrix = TRUE)
Coef(fit)
(khat <- Coef(fit)["size"])
pdf2 <- dposnegbin(x = with(corbet, ofreq), mu = fitted(fit), size = khat)
print( with(corbet, cbind(ofreq, species, fitted = pdf2*sum(species))), digits = 1)
with(corbet,
matplot(ofreq, cbind(species, fitted = pdf2*sum(species)), las = 1,
xlab = "Observed frequency (of individual butterflies)",
type = "b", ylab = "Number of species", col = c("blue", "orange"),
main = "blue 1s = observe; orange 2s = fitted"))
Run the code above in your browser using DataLab