zipoisson {VGAM} | R Documentation |
Fits a zero-inflated Poisson distribution by full maximum likelihood estimation.
zipoisson(lphi="logit", llambda = "loge", ephi=list(), elambda =list(), iphi = NULL, method.init=1, shrinkage.init=0.8, zero = NULL)
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.
|
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.
An object of class "vglmff"
(see vglmff-class
).
The object is used by modelling functions such as vglm
and vgam
.
Numerical problems can occur, e.g., when the probability of
zero is actually less than, not more than, the nominal
probability of zero.
For example, in the Angers and Biswas (2003) data below,
replacing 182 by 1 results in nonconvergence.
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.
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
.
T. W. Yee
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.
zapoisson
,
Zipois
,
yip88
,
zipebcom
,
rpois
.
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] ## Not run: # The zero is deflated, not inflated, giving convergence problems w[1] = 1 ## End(Not run) 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)