Learn R Programming

VGAM (version 0.8-2)

zinegbinomial: Zero-Inflated Negative Binomial Distribution Family Function

Description

Fits a zero-inflated negative binomial distribution by full maximum likelihood estimation.

Usage

zinegbinomial(lphi = "logit", lmunb = "loge", lk = "loge", ephi = list(),
      emunb = list(), ek = list(), iphi = NULL, ik = NULL, zero = -3,
      method.init = 1, shrinkage.init = 0.95, nsimEIM = 200)

Arguments

lphi, lmunb, lk
Link functions for the parameters $\phi$, the mean and $k$; see negbinomial for details, and Links for more choices.
ephi, emunb, ek
List. Extra arguments for the respective links. See earg in Links for general information.
iphi, ik
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.
method.init
An integer with value 1 or 2 or 3 which specifies the initialization method for the mean parameter. If failure to converge occurs try another value and/or else specify a value for shrinkage.init.
shrinkage.init
How much shrinkage is used when initializing the mean. The value must be between 0 and 1 inclusive, and a value of 0 means the individual response values are used, and a value of 1 means the median or mean is used. This argument is used in conjun
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
nsimEIM
See CommonVGAMffArguments for more information.

Value

  • An object of class "vglmff" (see vglmff-class). The object is used by modelling functions such as vglm, and vgam.

Warning

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 method.init, shrinkage.init, iphi, ik, and/or zero if there are explanatory variables.

Details

This function uses simulation and Fisher scoring, and is based on $$P(Y=0) = \phi + (1-\phi) (k/(k+\mu))^k,$$ and for $y=1,2,\ldots$, $$P(Y=y) = (1-\phi) \, dnbinom(y, \mu, k).$$ The parameter $\phi$ satisfies $0 < \phi < 1$. The mean of $Y$ is $(1-\phi) \mu$ (returned as the fitted values). By default, the three linear/additive predictors are $(logit(\phi), \log(\mu), \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 ik may be vectors with length equal to the number of responses.

See Also

Zinegbin, negbinomial, rpois, CommonVGAMffArguments.

Examples

Run this code
# Example 1
nbdat <- data.frame(x2 = runif(nn <- 1000))
nbdat <- transform(nbdat, phi  = logit(-0.5 + 1 * x2, inverse = TRUE),
                          munb = exp(3 + x2),
                          k    = exp(0 + 2*x2))
nbdat <- transform(nbdat, y1 = rzinegbin(nn, phi, mu = munb, size = k),
                          y2 = rzinegbin(nn, phi, mu = munb, size = k))
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),
                          k    = exp(4))
nbdat <- transform(nbdat, y1 = rzinegbin(nn, phi, mu = munb, size = k))
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)

Run the code above in your browser using DataLab