zipoisson {VGAM}R Documentation

Zero-Inflated Poisson Distribution Family Function

Description

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

Usage

zipoisson(lphi="logit", llambda = "loge", 
          ephi=list(), elambda =list(),
          iphi = NULL, method.init=1, shrinkage.init=0.8, zero = NULL)

Arguments

lphi Link function for the parameter phi. See Links for more choices.
llambda Link function for the usual lambda parameter. See Links for more choices.
ephi, elambda List. Extra argument for the respective links. See earg in Links for general information.
iphi Optional initial value for phi, whose value must lie between 0 and 1. The default is to compute an initial value internally.
method.init An integer with value 1 or 2 which specifies the initialization method for lambda. If failure to converge occurs try another value and/or else specify a value for shrinkage.init and/or else specify a value for iphi.
shrinkage.init How much shrinkage is used when initializing lambda. 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 conjunction with method.init.
zero An integer specifying which linear/additive predictor is modelled as intercepts only. If given, the value must be either 1 or 2, and the default is none of them. Setting zero=1 makes phi a single parameter.

Details

The model is a mixture of a Poisson distribution and the value 0; it has value 0 with probability phi else is Poisson(lambda) distributed. The model can be written

P(Y=0) = phi + (1-phi) * exp(-lambda),

and for y=1,2,...,

P(Y=y) = (1-phi) * exp(-lambda) * lambda^y / y!.

Here, the parameter phi satisfies 0 < phi < 1. The mean of Y is (1-phi)*lambda and these are returned as the fitted values. By default, the two linear/additive predictors are (logit(phi), log(lambda))^T. This function implements Fisher scoring.

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. Half-stepping is not uncommon. If failure to converge occurs, try using combinations of method.init, shrinkage.init, iphi, and/or zero=1 if there are explanatory variables.

Note

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. This family function currently cannot handle a multivariate response.

This family function is now recommended above yip88.

The zero-deflated Poisson distribution cannot be handled with this family function. It can be handled with the zero-altered Poisson distribution; see zapoisson.

Author(s)

T. W. Yee

References

Thas, O. and Rayner, J. C. W. (2005) Smooth tests for the zero-inflated Poisson distribution. Biometrics, 61, 808–815.

Data: Angers, J-F. and Biswas, A. (2003) A Bayesian analysis of zero-inflated generalized Poisson model. Computational Statistics & Data Analysis, 42, 37–46.

Cameron, A. C. and Trivedi, P. K. (1998) Regression Analysis of Count Data. Cambridge University Press: Cambridge.

See Also

zapoisson, Zipois, yip88, zipebcom, rpois.

Examples

x = runif(n <- 2000)
phi = logit(-0.5 + 1*x, inverse=TRUE)
lambda = loge(0.5 + 2*x, inverse=TRUE)
y = rzipois(n, lambda, phi)
table(y)
fit = vglm(y ~ x, zipoisson, trace=TRUE)
coef(fit, matrix=TRUE)  # These should agree with the above values

# Another example: data from McKendrick (1926).
y = 0:4  # Number of cholera cases per household in an Indian village
w = c(168, 32, 16, 6, 1)  # Frequencies; there are 223=sum(w) households
fit = vglm(y ~ 1, zipoisson, wei=w, trace=TRUE)
coef(fit, matrix=TRUE)
cbind(actual=w, fitted= round(
      dzipois(y, lambda=Coef(fit)[2], phi=Coef(fit)[1]) * sum(w), dig=2))

# Another example: data from Angers and Biswas (2003)
y = 0:7
w = c(182, 41, 12, 2, 2, 0, 0, 1)
y = y[w>0]
w = w[w>0]
fit = vglm(y ~ 1, zipoisson(lphi=probit, iphi=0.3), wei=w, tra=TRUE)
fit@misc$prob0  # Estimate of P(Y=0)
coef(fit, matrix=TRUE)
Coef(fit)  # Estimate of phi and lambda
fitted(fit)
weighted.mean(y,w) # Compare this with fitted(fit)
summary(fit)

[Package VGAM version 0.7-7 Index]