yip88 {VGAM} | R Documentation

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

### Description

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

### Usage

    yip88(link = "loge", 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`.

### Author(s)

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.

### See Also

`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)
    head(fitted(fit1))
    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
    head(fitted(fit1) - fitted(pp))  # Different

    # 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  # Estimate of phi (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)
    head(fitted(fit3))
    mean(yy)  # Compare this with fitted(fit3)

[Package VGAM version 1.0-3 Index]