Skip to Main Content

How can I use countfit in choosing a count model? | Stata FAQ

When modeling a count variable, there are several available models to choose
from. Stata supports Poisson, negative binomial, zero-inflated Poisson,
zero-inflated negative binomial models, zero-truncated Poisson, and
zero-truncated negative binomial models.  Among these, you can likely
narrow your data down to one or two models based on how the data were collected
and the distribution of your outcome variable.

Some important questions to ask yourself before you start building a count model
are:

The answers to the first set of questions can indicate whether your data are
zero-truncated or zero-inflated.

If your count variable does not contain zeroes…
ask yourself why. Given what you know about the variable, would you have
expected to see counts of zero?  In some instances, a count of zero will
never appear in the dataset. For example, if your count variable is the number
of visits to a given coffee shop in a week and your data are collected among people
in the coffee shop,
then all the people for whom you collected data have a count of at least one. A
person who never visits the coffee shop will not be included in the dataset. This
is an example of zero-truncated data and would most appropriately be
modeled using a zero-truncated model.  However, just because a variable
does not contain zeroes does not mean the variable is zero-truncated. 
Truncation occurs because of the way in which the data are collected and cannot
be assumed just from looking at the data.

If your count variable does contain zeroes…
again,
ask yourself why.
What does a count of zero mean, given what you know about the variable? In some
instances, records in a dataset could ONLY have counts of zero.  For
examples, if you are collecting data on the number of fish caught by a person in
a given weekend, a person who did not go fishing could only have a count of
zero. A person who did go fishing could also have a count of zero, but these two
zeroes would have very different meanings. This is an example of
zero-inflated data
and may be most appropriately modeled with a
zero-inflated model. 

The answers to the second set of questions can indicate whether a Poisson or negative
binomial distribution is more appropriate for your data.  The Poisson
distribution is characterized by equal mean and variance. If the sample mean and
sample variance of your outcome variable are in the same neighborhood, a Poisson
model may be appropriate. If the variance exceeds the mean by a great deal, a
negative binomial model may be appropriate. Keep in mind that zero-truncation
and zero-inflation can impact these statistics and there is not a magical
cut-off determining when one model is better than the other. These are simply
aspects of your data worth considering.

Deciding on a final model

You may find that, after making all of the above considerations and deciding
which predictors should be included in your model, you are still torn. You have
two count models that both seem substantively reasonable, but that are clearly
mathematically different. At this point, the countfit function in Stata
(written by Long and Freese) can be a helpful tool. You can download it by
typing search countfit (see How can I
use the search command to search for programs and get additional help?
for
more information about using search) and following the appropriate links.

Countfit runs user-specified count models (Poisson, zero-inflated
Poisson, negative binomial, and zero-inflated negative binomial) with
user-specified variables and compares the model residuals. If you do not
indicate which models you wish to compare (nbreg, zinp, prm,
or zip), countfit will default to
running and comparing all four. One if the quirks of countfit is that it displays results for a given predictor next to the predictor’s
label rather than name. So
an unlabeled predictor will lead to both empty space in the output and possible
confusion. This can be prevented by labeling ALL predictors before running
countfit
.

In this example, we will be looking at academic information on
316 students. The response variable is days absent during the school year (daysabs).
We have narrowed our model choices down to two negative binomial models, one
with zero-inflation and one without. We believe that the daysabs can best
be predicted with math standardized tests score (mathnce),
language standardized tests score (langnce) and gender (female).
We suspect certain zeroes can be predicted with bilingual status (biling)
and language score (langnce). We will run the countfit command
indicating these predictors and the two models we wish to compare,
then discuss the output.

use https://stats.idre.ucla.edu/stat/stata/notes/lahigh, clear

generate female = (gender == 1)
label variable female `"female"'
countfit daysabs mathnce langnce female, inf(biling langnce) nbreg zinb

----------------------------------------------------------
                        Variable |   NBRM        ZINB     
---------------------------------+------------------------
daysabs                          |                        
                   ctbs math nce |     0.998       0.998  
                                 |     -0.33       -0.34  
                   ctbs lang nce |     0.986       0.987  
                                 |     -2.57       -2.38  
                          female |     1.539       1.502  
                                 |      3.09        2.94  
                        Constant |     9.825       9.795  
                                 |     10.89       10.94  
---------------------------------+------------------------
lnalpha                          |                        
                        Constant |     1.288       1.191  
                                 |      2.65        1.62  
---------------------------------+------------------------
inflate                          |                        
                bilingual status |                10.132  
                                 |                  1.53  
                   ctbs lang nce |                 1.094  
                                 |                  1.92  
                        Constant |                 0.000  
                                 |                 -2.16  
---------------------------------+------------------------
Statistics                       |                        
                           alpha |     1.288              
                               N |   316.000     316.000  
                              ll |  -880.873    -879.131  
                             bic |  1790.525    1804.307  
                             aic |  1771.746    1774.262  
----------------------------------------------------------
                                               legend: b/t
Comparison of Mean Observed and Predicted Count

            Maximum       At      Mean
Model     Difference    Value    |Diff|
---------------------------------------------
NBRM        0.011         1      0.004
ZINB        0.018         1      0.005

NBRM: Predicted and actual probabilities

Count   Actual    Predicted    |Diff|   Pearson
------------------------------------------------
0        0.196       0.201      0.004     0.031
1        0.146       0.135      0.011     0.278
2        0.098       0.104      0.006     0.093
3        0.082       0.083      0.001     0.004
4        0.070       0.068      0.001     0.008
5        0.063       0.057      0.006     0.230
6        0.047       0.048      0.000     0.001
7        0.038       0.040      0.002     0.046
8        0.028       0.034      0.006     0.318
9        0.035       0.029      0.005     0.319
------------------------------------------------
Sum      0.804       0.799      0.044     1.327

ZINB: Predicted and actual probabilities

Count   Actual    Predicted    |Diff|   Pearson
------------------------------------------------
0        0.196       0.207      0.011     0.176
1        0.146       0.127      0.018     0.850
2        0.098       0.101      0.003     0.022
3        0.082       0.082      0.000     0.000
4        0.070       0.068      0.001     0.007
5        0.063       0.057      0.006     0.194
6        0.047       0.048      0.001     0.006
7        0.038       0.041      0.003     0.077
8        0.028       0.035      0.007     0.393
9        0.035       0.030      0.005     0.240
------------------------------------------------
Sum      0.804       0.798      0.055     1.965

Tests and Fit Statistics

-------------------------------------------------------------------------
NBRM           BIC=   -28.290  AIC=     5.607  Prefer  Over  Evidence
-------------------------------------------------------------------------
  vs ZINB      BIC=   -14.507  dif=   -13.783  NBRM    ZINB  Very strong
               AIC=     5.615  dif=    -0.008  NBRM    ZINB
               Vuong=   0.858  prob=    0.195  ZINB    NBRM  p=0.195
Image countfit

Making sense of the output

First, let’s discuss the graph. Countfit produces a graph that plots the residuals from the tested models. Small residuals are indicative of good-fitting
models, so the models with lines closest to zero should be considered for our
data.  This may be useful in eliminating a model, but be careful
about deciding on one model over all the others based solely on this graph. 
In the graph above, we see that our two models perform very similarly for counts
greater than two, and that they both differ most from the actual values and each other at the
zero and one counts.  At the zero and one counts, the negative binomial
model appears slightly better than the zero-inflated negative binomial model.

Model parameters and fit

The first table in the output summarizes the parameter estimates from each of
the tested models. For each of the models, we see the exponentiated
coefficients and their t-statistics in the first block of the table. 
Then, for any negative binomial models, we will see the estimated dispersion parameters.
Next, for any zero-inflated models, we see the estimates from the logistic model
predicting the certain zeroes. In the last block of the table, a set of fit
statistics is provided for each of the four models. This includes the
log-likelihood, BIC, and AIC. 

----------------------------------------------------------
                        Variable |   NBRM        ZINB     
---------------------------------+------------------------
daysabs                          |                        
                   ctbs math nce |     0.998       0.998  
                                 |     -0.33       -0.34  
                   ctbs lang nce |     0.986       0.987  
                                 |     -2.57       -2.38  
                          female |     1.539       1.502  
                                 |      3.09        2.94  
                        Constant |     9.825       9.795  
                                 |     10.89       10.94  
---------------------------------+------------------------
lnalpha                          |                        
                        Constant |     1.288       1.191  
                                 |      2.65        1.62  
---------------------------------+------------------------
inflate                          |                        
                bilingual status |                10.132  
                                 |                  1.53  
                   ctbs lang nce |                 1.094  
                                 |                  1.92  
                        Constant |                 0.000  
                                 |                 -2.16  
---------------------------------+------------------------
Statistics                       |                        
                           alpha |     1.288              
                               N |   316.000     316.000  
                              ll |  -880.873    -879.131  
                             bic |  1790.525    1804.307  
                             aic |  1771.746    1774.262  
----------------------------------------------------------
                                               legend: b/t

From the last block, we can see that the two  models are extremely
close. The parameter estimates are nearly identical. We can continue to look at
the rest of the output.

Residuals by count

Next, we see a table with one line per model showing the maximum and mean
differences in observed versus predicted counts.

Comparison of Mean Observed and Predicted Count

            Maximum       At      Mean
Model     Difference    Value    |Diff|
---------------------------------------------
NBRM        0.011         1      0.004
ZINB        0.018         1      0.005

This confirms what we observed in the graph: both models performed worst when
predicting a count of 1. Between these two, we see that the negative binomial
did better at this prediction and, overall, had a lower mean absolute difference
between predicted and observed values. At this point, the negative binomial
model is looking more appropriate than the zero-inflated negative binomial
model.   Next, we have one table for each of the models containing count-by-count
information.

NBRM: Predicted and actual probabilities

Count   Actual    Predicted    |Diff|   Pearson
------------------------------------------------
0        0.196       0.201      0.004     0.031
1        0.146       0.135      0.011     0.278
2        0.098       0.104      0.006     0.093
3        0.082       0.083      0.001     0.004
4        0.070       0.068      0.001     0.008
5        0.063       0.057      0.006     0.230
6        0.047       0.048      0.000     0.001
7        0.038       0.040      0.002     0.046
8        0.028       0.034      0.006     0.318
9        0.035       0.029      0.005     0.319
------------------------------------------------
Sum      0.804       0.799      0.044     1.327

ZINB: Predicted and actual probabilities

Count   Actual    Predicted    |Diff|   Pearson
------------------------------------------------
0        0.196       0.207      0.011     0.176
1        0.146       0.127      0.018     0.850
2        0.098       0.101      0.003     0.022
3        0.082       0.082      0.000     0.000
4        0.070       0.068      0.001     0.007
5        0.063       0.057      0.006     0.194
6        0.047       0.048      0.001     0.006
7        0.038       0.041      0.003     0.077
8        0.028       0.035      0.007     0.393
9        0.035       0.030      0.005     0.240
------------------------------------------------
Sum      0.804       0.798      0.055     1.965

In these two tables, we are able to see, for counts 0-9, the actual
proportion of our data records with the given count and the predicted proportion
from each models.  The absolute
difference is included, as is the given count’s contribution to a Pearson
Chi-Square statistic comparing the actual distribution of the data and the
distribution proposed by the model. For a given row, the Pearson statistic can
be calculated as N(|Diff|2)/Predicted, where N is the number of
observations in the dataset.  Looking at the sum of the Pearson column
gives us a sense of how close the predicted proportions were to the actual
proportions. Using this method to compare, the negative binomial appears better
than the zero-inflated negative binomial.

Summary comparisons

Tests and Fit Statistics

-------------------------------------------------------------------------
NBRM           BIC=   -28.290  AIC=     5.607  Prefer  Over  Evidence
-------------------------------------------------------------------------
  vs ZINB      BIC=   -14.507  dif=   -13.783  NBRM    ZINB  Very strong
               AIC=     5.615  dif=    -0.008  NBRM    ZINB
               Vuong=   0.858  prob=    0.195  ZINB    NBRM  p=0.195

In this table, the tested models are compared to each other head-to-head using
the tests appropriate to each comparison.  Each line can be boiled down to
the last three columns. They suggest which model is preferred by the given
comparison and the strength of the evidence supporting this preference. 
When we compare our two models using the BIC and AIC,
the negative binomial is preferred over zero-inflated negative
binomial. The Vuong test prefers zero-inflated negative binomial model over the
negative binomial model, but not at a statistically significant level. 
Thus, these model fit statistics support what we have seen in the model
residuals.

Full model output

There may be times when you wish to see the full model output for each of the
four models.  This can be especially helpful in choosing between two models
because it allows you to see the significance levels of the parameters, which
are not included in the countfit output.  For instance, in this
example, we might be interested in the significance levels of our zero-inflated
variables. To do
this, you can add the noisily option to the countfit command:

countfit daysabs mathnce langnce female, inf(biling langnce) nbreg zinb noisily


This will print the full output from each of the four models, then the summary output provided without the
noisily option.

Replace option

When you run countfit, variables are generated
and added to your dataset.  If you ran the same countfit command a
second time, you would encounter error messages telling you that variables have
already been defined. Thus, if you are running multiple countfit tests,
you can add the replace option to your command to replace the variables
generated by prior runs with the variables generated by the current run.

Final thoughts

Countfit presents
several nice ways for you to compare models that are not necessarily easy to
compare. It presents side-by-side fit statistics and parameter estimates, it
gives you a graphical representation of the model residuals, as well as a table
of the residuals by counts. All of these pieces of information are worth taking
into consideration when choosing a model. For your purposes, some of these
measures may be more relevant than the others. Think carefully about what you
are aiming to do in the model and which measures should be prioritized over
others. While countfit is very convenient and provides lots of
information, sorting through the information it provides must be done carefully.