I'm fitting a negative binomial regression model using nbreg in Stata 16.0 and then using margins to get a predicted probability of obtaining a count greater than 0 for each level of my categorical covariate. However, I am finding some of my 95% CIs contain impossible probabilities (<0 or >1). I’ve replicated an example below where I get a negative probability when prog = 1 and prog = 3.
I read that this is because the standard errors of these probability estimates are normally approximated using the delta method. I found a great package from Jeff Pitblado, transform_margins, which takes the linear prediction from the model and applies a transformation to the table produced in order to get 95% CIs within [0,1].
I have applied this to get the estimated number of events for each level of prog, but I was unsure how to use transform_margins to get the estimated probability and 95% CI of a given number of events after nbreg. Is there a way to apply it, or another method I could use?
Any advice is much appreciated, and I apologise in advance if I have made any errors in my post (this is the first one).
Code:
* Example generated by -dataex-. To install: ssc install dataex clear input float(daysabs prog math) 4 2 63 4 2 27 2 2 20 3 2 16 3 2 2 13 2 71 11 2 63 7 2 3 10 2 51 9 3 49 4 3 31 5 2 22 5 2 73 6 1 77 1 3 10 0 2 89 1 2 34 0 2 35 5 1 77 24 2 4 2 2 21 0 2 61 1 2 41 0 2 63 8 2 19 6 1 55 7 2 6 0 2 21 2 2 70 3 1 79 0 2 1 1 2 29 3 2 40 0 2 39 0 2 68 28 2 20 8 2 10 5 2 84 5 1 1 27 2 35 5 2 32 18 2 34 19 2 40 9 2 29 9 2 20 4 2 27 2 2 74 3 2 38 9 2 21 20 2 81 end // Fitting model and getting predicted probability of daysabs >=20 nbreg daysabs math i.prog margins prog, predict(pr(20,.)) Predictive margins Number of obs = 50 Model VCE : OIM Expression : Pr(daysabs>=20), predict(pr(20,.)) ------------------------------------------------------------------------------ | Delta-method | Margin Std. Err. z P>|z| [95% Conf. Interval] -------------+---------------------------------------------------------------- prog | 1 | .0333275 .0539323 0.62 0.537 -.0723778 .1390328 2 | .0627511 .0291091 2.16 0.031 .0056982 .1198039 3 | .0220017 .0490054 0.45 0.653 -.0740471 .1180506 ------------------------------------------------------------------------------ // Transforming margins to get estimated count of daysabs margins prog, predict(xb) Predictive margins Number of obs = 50 Model VCE : OIM Expression : Linear prediction, predict(xb) ------------------------------------------------------------------------------ | Delta-method | Margin Std. Err. z P>|z| [95% Conf. Interval] -------------+---------------------------------------------------------------- prog | 1 | 1.667932 .5106264 3.27 0.001 .6671225 2.668741 2 | 1.893794 .1681998 11.26 0.000 1.564129 2.22346 3 | 1.539881 .6433472 2.39 0.017 .2789438 2.800819 ------------------------------------------------------------------------------ transform_margins exp(@) ---------------------------------------------- | b ll ul -------------+-------------------------------- prog | 1 | 5.301193 1.948622 14.4218 2 | 6.644533 4.77851 9.239242 3 | 4.664036 1.321733 16.45811 ----------------------------------------------
0 Response to Negative probabilities in 95% CI when using margins after nbreg
Post a Comment