# 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[] ~ 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]],
family=poisson(link=log))
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? – Glen_b Mar 24 '14 at 3:24
• Thanks. So both missing/NA and 0 are both coded as 0. – Glen_b Mar 24 '14 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. – Glen_b Mar 24 '14 at 4:14
• This question appears to be off-topic because it is about asking for code. – gung - Reinstate Monica Mar 27 '14 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 Mar 27 '14 at 18:42

## 1 Answer

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

• Welcome to the site, @pyoi. This isn't really an answer to the OP's question, it is more of a comment. Please only use the "Your Answer" field to provide answers. I know it's frustrating, but you will be able to comment anywhere when your reputation >50. Alternatively, you could expand this to make it more of an answer. Since you are new here, you may want to take our tour, which contains information for new users. – gung - Reinstate Monica Mar 27 '14 at 18:22