# R code for zero inflated Poisson

I have used glm() to model some data I have. The code looks like the following:

for(ddm_idx in 1:90) {
for(ppm_idx in 1:90) {
mdfit <- glm(cuse[[4]] ~ cuse_ddm[[3 + ddm_idx]] + cuse_ddm[[3 + ddm_idx]]^2 +
cuse_ppm[[3 + ppm_idx]] + cuse_ppm[[3 + ppm_idx]]^2 +
cuse_ddm[[3 + ddm_idx]]*cuse_ppm[[3 + ppm_idx]],
mdfit_dev[ddm_idx, ppm_idx] <- deviance(mdfit)
}
}


It turns out that for each "case", I have about 90 different data points for ddm and ppm and so that's why I have the for loop run twice. I know this is correct because a post-doc in stats also ran the same in MATLAB and got the same results.

However, my next task to to use zero inflated Poisson distribution as I have a lot of zeros in my dataset. Some of these zeros are "true" zeros and some of them false.

How can I modify my code to use glm() for this distribution?

• Could you clarify what you mean by a false zero? Commented Mar 24, 2014 at 3:24
• Thanks. So both missing/NA and 0 are both coded as 0. Commented Mar 24, 2014 at 3:58
• Do you know what regression is? As in the first sentence here? In Poisson regression (and glms more generally), regressors (predictors, independent variables) play the same conceptual role as in multiple linear regression. Commented Mar 24, 2014 at 4:14
• This question appears to be off-topic because it is about asking for code. Commented Mar 27, 2014 at 18:20
• @gung Yes, this post does ask for code. But it also implicitly raises a question of how one could correctly handle mis-coded data in which true zeros are confounded with missing values. That question could only be answered here, not on SO, and a good answer would likely be much more useful than a pedestrian answer that points the OP to some blackbox code (which, if employed, would likely give bad results).
– whuber
Commented Mar 27, 2014 at 18:42

zeroinfl() in the pscl package fits the zero-inflated Poisson regression model.