yip88 | R Documentation |

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

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

`link` |
Link function for the usual |

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

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`

.

An object of class `"vglmff"`

(see `vglmff-class`

).
The object is used by modelling functions
such as `vglm`

,
`rrvglm`

and `vgam`

.

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.

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

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`

.

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

Embedding an R snippet on your website

Add the following code to your website.

For more information on customizing the embed code, read Embedding Snippets.