zinegbinomial {VGAM} | R Documentation |
Fits a zero-inflated negative binomial distribution by full maximum likelihood estimation.
zinegbinomial(lphi = "logit", lmunb = "loge", lsize = "loge", ephi = list(), emunb = list(), esize = list(), iphi = NULL, isize = NULL, zero = -3, imethod = 1, shrinkage.init = 0.95, nsimEIM = 200)
lphi, lmunb, lsize |
Link functions for the parameters phi,
the mean and k; see |
ephi, emunb, esize |
List. Extra arguments for the respective links.
See |
iphi, isize |
Optional initial values for phi and k. The default is to compute an initial value internally for both. If a vector then recycling is used. |
imethod |
An integer with value |
zero |
Integers specifying which linear/additive predictor is modelled
as intercepts only. If given, their absolute values must be
either 1 or 2 or 3, and the default is only the k parameters
(one for each response).
See |
shrinkage.init, nsimEIM |
See |
This function uses simulation and Fisher scoring, and is based on
P(Y=0) = φ + (1-φ) * (k/(k+μ))^k,
and for y=1,2,…,
P(Y=y) = (1-φ) * dnbinom(y, μ, k).
The parameter phi satisfies 0 < phi < 1.
The mean of Y is (1-phi)*munb
(returned as the fitted values). By default, the three linear/additive
predictors are (logit(phi),
log(munb), log(k))^T.
See negbinomial
, another VGAM family function,
for the formula of the probability density function and other details
of the negative binomial distribution.
Independent multivariate responses are handled.
If so then arguments iphi
and isize
may be vectors
with length equal to the number of responses.
An object of class "vglmff"
(see vglmff-class
).
The object is used by modelling functions such as vglm
,
and vgam
.
Numerical problems can occur, e.g., when the probability of
zero is actually less than, not more than, the nominal
probability of zero.
Half-stepping is not uncommon.
If failure to converge occurs, try using combinations of
imethod
,
shrinkage.init
,
iphi
,
isize
, and/or
zero
if there are explanatory variables.
For intercept-models, the misc
slot has a component called
p0
which is the estimate of P(Y=0). Note that P(Y=0)
is not the parameter phi.
If k is large then the use of VGAM family function
zipoisson
is probably preferable.
This follows because the Poisson is the limiting distribution of a
negative binomial as k tends to infinity.
The zero-deflated negative binomial distribution cannot
be handled with this family function. It can be handled
with the zero-altered negative binomial distribution; see
zanegbinomial
.
T. W. Yee
Zinegbin
,
negbinomial
,
rpois
,
CommonVGAMffArguments
.
# Example 1 nbdat <- data.frame(x2 = runif(nn <- 1000)) nbdat <- transform(nbdat, phi = logit(-0.5 + 1 * x2, inverse = TRUE), munb = exp(3 + x2), size = exp(0 + 2*x2)) nbdat <- transform(nbdat, y1 = rzinegbin(nn, phi, mu = munb, size = size), y2 = rzinegbin(nn, phi, mu = munb, size = size)) with(nbdat, table(y1)["0"] / sum(table(y1))) fit <- vglm(cbind(y1, y2) ~ x2, zinegbinomial(zero = NULL), nbdat) coef(fit, matrix = TRUE) summary(fit) head(cbind(fitted(fit), with(nbdat, (1-phi) * munb))) round(vcov(fit), 3) # Example 2: RR-ZINB could also be called a COZIVGLM-ZINB-2 nbdat <- data.frame(x2 = runif(nn <- 2000)) nbdat <- transform(nbdat, x3 = runif(nn)) nbdat <- transform(nbdat, eta1 = 3 + 1 * x2 + 2 * x3) nbdat <- transform(nbdat, phi = logit(-1.5 + 0.5 * eta1, inverse = TRUE), munb = exp(eta1), size = exp(4)) nbdat <- transform(nbdat, y1 = rzinegbin(nn, phi, mu = munb, size = size)) with(nbdat, table(y1)["0"] / sum(table(y1))) rrzinb <- rrvglm(y1 ~ x2 + x3, zinegbinomial(zero = NULL), nbdat, Index.corner = 2, szero = 3, trace = TRUE) coef(rrzinb, matrix = TRUE) Coef(rrzinb)