# yip88: Zero-Inflated Poisson Distribution (Yip (1988) algorithm) In VGAMdata: Data Supporting the 'VGAM' Package

 yip88 R Documentation

## Zero-Inflated Poisson Distribution (Yip (1988) algorithm)

### Description

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

### Usage

```yip88(link = "loglink", n.arg = NULL, imethod = 1)
```

### Arguments

 `link` 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. `imethod` Details at `CommonVGAMffArguments`.

### 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`.

### Value

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

### 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.

### Note

The data may be inputted in two ways. The first is when the response is a vector of positive values, with the argument `n` in `yip88` specifying the total number of observations. The second is simply include all the data in the response. In this case, the zeros are trimmed off during the computation, and the `x` and `y` slots of the object, if assigned, will reflect this.

The estimate of phi is placed in the `misc` slot as `@misc\$pstr0`. However, this estimate is computed only for intercept models, i.e., the formula is of the form `y ~ 1`.

Thomas W. Yee

### 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.

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

### Examples

```phi <- 0.35; lambda <- 2  # Generate some artificial data
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)
fit2 <- vglm(y ~ 1, yip88, trace = TRUE, crit = "coef")
(true.mean <- (1-phi) * lambda)
mean(y)
fit1@misc\$pstr0  # The estimate of phi

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

# Another example (Angers and Biswas, 2003) ---------------------
abdata <- data.frame(y = 0:7, w = c(182, 41, 12, 2, 2, 0, 0, 1))
abdata <- subset(abdata, w > 0)

yy <- with(abdata, rep(y, w))
fit3 <- vglm(yy ~ 1, yip88(n = length(yy)), subset = yy > 0)
fit3@misc\$pstr0  # phi estimate (they get 0.5154 with SE 0.0707)
coef(fit3, matrix = TRUE)
Coef(fit3)  # Estimate of lambda (they get 0.6997 with SE 0.1520)