Zero-inflated Poisson regression

The zero-inflated Poisson regression models the data in two steps. The first step assumes that the excess zero counts come from a logit model (this is default), whereas the remaining counts come from a Poisson model.

More information
help zip

Practical example

As the first step, we need to generate a variable that specifies whether the outcome is a zero (value 1) or not (value 0), despite that it might seem a bit backwards.

gen nochildren=children
recode nochildren (0=1) (1/10=0)

Then we will re-run the multiple regression model that we specified for Poisson regression earlier, but now with the zip command. Here, we must also specify the inflate option, where we include the variable – nochildren – that we just generated.

zip children siblings sex ib1.educ if pop_poisson==1, irr inflate(nochildren)

The output is very similar to the one we got for the Poisson regression. There is a part of the table called “inflate”; this refers to the estimate for the variable predicting the excess zeros. The estimate of 52.99 suggests that for each unit increase in nochildren (i.e. being a zero vs not being a zero), there is a large increase in IRR.