I am estimating a diff-in-diff simple model with an interaction term consisting of the product between a dummy of treatment status (treat) and a dummy of post-treatment time period (pos). The questions I have concern the fact that my dependent variable (outcome) is a count variable. Given that I have data on the same hospital over time, I cluster the standard errors at the hospital level (health_cent_id).
I am not sure whether I should use Poisson or Negative Binomial regressions instead of OLS. I tried estimating the three models in Stata (see below the code). Then, using the margins command, I computed the mean outcome difference between treated and controls units for both the baseline and the post-treatment periods. I copy the output of the margins command below.
Strangely, the marginal effect estimates for the Poisson specification are identical to those obtained by the OLS regression. Is this reasonable? The Negative Binomial marginal estimates are also very similar to the other two models.
In the end of the code below, I show that the mean predicted outcome values from the three models are very similar to that of the observed data and are also never negative (as in the original data). However, they are also never equal to zero and have a much narrower range. As shown below, the three models predict outcomes ranging from 7 to 28 while the observed values range from 0 to 504.
I am not sure how to proceed.
* ~~~ OLS
reg outcome treat##pos, cluster(health_cent_id)
predict yhat_ols
margins pos, dydx(treat) nopvalues
/*
--------------------------------------------------------------
| Delta-method
| dy/dx Std. Err. [95% Conf. Interval]
-------------+------------------------------------------------
0.treat | (base outcome)
-------------+------------------------------------------------
1.treat |
pos |
0 | .6509491 2.337706 -3.971704 5.273603
1 | 11.18207 3.615578 4.032511 18.33162
--------------------------------------------------------------
*/
* ~~~ Poisson
poisson outcome treat##pos, cluster(health_cent_id)
predict yhat_poisson
margins pos, dydx(treat) nopvalues
/*
--------------------------------------------------------------
| Delta-method
| dy/dx Std. Err. [95% Conf. Interval]
-------------+------------------------------------------------
0.treat | (base outcome)
-------------+------------------------------------------------
1.treat |
pos |
0 | .6509491 2.337107 -3.929696 5.231594
1 | 11.18207 3.614651 4.097482 18.26665
--------------------------------------------------------------
*/
* ~~~ Negative Binomial Model
nbreg outcome treat##pos, cluster(health_cent_id)
predict yhat_nb
margins pos, dydx(treat) nopvalues
/*
--------------------------------------------------------------
| Delta-method
| dy/dx Std. Err. [95% Conf. Interval]
-------------+------------------------------------------------
0.treat | (base outcome)
-------------+------------------------------------------------
1.treat |
pos |
0 | .6509489 2.337107 -3.929696 5.231594
1 | 11.18207 3.61465 4.097481 18.26665
--------------------------------------------------------------
*/
su outcome yhat_ols yhat_poisson yhat_nb if e(sample)==1
/*
Variable | Obs Mean Std. Dev. Min Max
-------------+---------------------------------------------------------
outcome | 5,852 13.5716 27.74452 0 504
yhat_ols | 5,852 13.5716 7.877809 7.769357 28.34767
yhat_poisson | 5,852 13.5716 7.877809 7.769357 28.34767
yhat_nb | 5,852 13.5716 7.877807 7.769355 28.34766
*/