Learn R Programming

VGAM (version 0.8-2)

yip88: Zero-Inflated Poisson Distribution (Yip (1988) algorithm)

Description

Fits a zero-inflated Poisson distribution based on Yip (1988).

Usage

yip88(link.lambda = "loge", n.arg = NULL)

Arguments

link.lambda
Link function for the usual $\lambda$ parameter. See Links for more choices.
n.arg
The total number of observations in the data set. Needed when the response variable has all the zeros deleted from it, so that the number of zeros can be determined.

Value

Warning

Under- or over-flow may occur if the data is ill-conditioned. Yip (1988) only considered $\phi$ being a scalar and not modelled as a function of covariates. To get around this limitation, try zipoisson.

Inference obtained from summary.vglm and summary.vgam may or may not be correct. In particular, the p-values, standard errors and degrees of freedom may need adjustment. Use simulation on artificial data to check that these are reasonable.

Details

The method implemented here, Yip (1988), maximizes a conditional likelihood. Consequently, the methodology used here deletes the zeros from the data set, and is thus related to the positive Poisson distribution (where $P(Y=0) = 0$).

The probability function of $Y$ is 0 with probability $\phi$, and Poisson($\lambda$) with probability $1-\phi$. Thus $$P(Y=0) =\phi + (1-\phi) P(W=0)$$ where $W$ is Poisson($\lambda$). The mean, $(1-\phi) \lambda$, can be obtained by the extractor function fitted applied to the object.

This family function treats $\phi$ as a scalar. If you want to model both $\phi$ and $\lambda$ as a function of covariates, try zipoisson.

References

Yip, P. (1988) Inference about the mean of a Poisson distribution in the presence of a nuisance parameter. The Australian Journal of Statistics, 30, 299--306.

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

Documentation accompanying the VGAM package at http://www.stat.auckland.ac.nz/~yee contains further information and examples.

See Also

zipoisson, Zipois, zapoisson, pospoisson, poissonff, dzipois.

Examples

Run this code
# Generate some artificial data
phi = 0.35; lambda = 2
y = rzipois(n <- 1000, lambda, phi)
table(y)

# Two equivalent ways of fitting the same model
fit1 = vglm(y ~ 1, yip88(n=length(y)), subset=y>0, trace=TRUE, crit="c")
fit2 = vglm(y ~ 1, yip88, trace=TRUE, crit="c")
(true.mean = (1-phi) * lambda)
mean(y) 
head(fitted(fit1))
fit1@misc$phi      # The estimate of phi

# Compare the ZIP with the positive Poisson distribution 
pp = vglm(y ~ 1, pospoisson, subset=y>0, tr=TRUE, crit="c")
coef(pp)
Coef(pp)
coef(fit1) - coef(pp)            # Same 
head(fitted(fit1) - fitted(pp))  # Different 

# Another example ------------------------------
y = 0:7    # Data from Angers and Biswas (2003)
w = c(182, 41, 12, 2, 2, 0, 0, 1)
y = y[w>0]
w = w[w>0]
yy = rep(y,w)

fit3 = vglm(yy ~ 1, yip88(n=length(yy)), subset=yy>0, trace=TRUE, crit="c")
fit3@misc$phi  # Estimate of phi (they get 0.5154 with standard error 0.0707)
coef(fit3, matrix=TRUE)
Coef(fit3)  # Estimate of lambda (they get 0.6997 with standard error 0.1520)
head(fitted(fit3))
mean(yy) # compare this with fitted(fit3)

Run the code above in your browser using DataLab