I'm struggling how standard errors after -margins- are calculated, e.g. after -logit-. I am able to reproduce the productive margins themselves, but I am not able to derive the standard errors. They don't seem to be in line with the standard deviations of the predicted probabilities ... See example below
Code:
sysuse auto logit foreign price mpg weight length * Manually predict probabilities at various levels of weight generate p1500 = invlogit(_b[weight]*1500 + _b[price]*price +_b[mpg]*mpg + _b[length]*length + _b[_cons]) generate p2000 = invlogit(_b[weight]*2000 + _b[price]*price +_b[mpg]*mpg + _b[length]*length + _b[_cons]) generate p2500 = invlogit(_b[weight]*2500 + _b[price]*price +_b[mpg]*mpg + _b[length]*length + _b[_cons]) generate p3000 = invlogit(_b[weight]*3000 + _b[price]*price +_b[mpg]*mpg + _b[length]*length + _b[_cons]) generate p3500 = invlogit(_b[weight]*3500 + _b[price]*price +_b[mpg]*mpg + _b[length]*length + _b[_cons]) generate p4000 = invlogit(_b[weight]*4000 + _b[price]*price +_b[mpg]*mpg + _b[length]*length + _b[_cons]) generate p4500 = invlogit(_b[weight]*4500 + _b[price]*price +_b[mpg]*mpg + _b[length]*length + _b[_cons]) generate p5000 = invlogit(_b[weight]*5000 + _b[price]*price +_b[mpg]*mpg + _b[length]*length + _b[_cons]) * Calculating predictive margins using margins command margins, at ( weight =(1500(500)5000))
Code:
Logistic regression Number of obs = 74
LR chi2(4) = 55.94
Prob > chi2 = 0.0000
Log likelihood = -17.064729 Pseudo R2 = 0.6211
------------------------------------------------------------------------------
foreign | Coef. Std. Err. z P>|z| [95% Conf. Interval]
-------------+----------------------------------------------------------------
price | .0009392 .0003093 3.04 0.002 .000333 .0015454
mpg | -.1155925 .0966509 -1.20 0.232 -.3050248 .0738398
weight | -.0078002 .0030342 -2.57 0.010 -.0137471 -.0018534
length | .0387482 .0875022 0.44 0.658 -.1327529 .2102493
_cons | 9.883036 11.26217 0.88 0.380 -12.19042 31.95649
------------------------------------------------------------------------------
. * Calculating predictive margins using margins command
. margins, at ( weight =(1500(500)5000))
Predictive margins Number of obs = 74
Model VCE : OIM
Expression : Pr(foreign), predict()
1._at : weight = 1500
2._at : weight = 2000
3._at : weight = 2500
4._at : weight = 3000
5._at : weight = 3500
6._at : weight = 4000
7._at : weight = 4500
8._at : weight = 5000
------------------------------------------------------------------------------
| Delta-method
| Margin Std. Err. z P>|z| [95% Conf. Interval]
-------------+----------------------------------------------------------------
_at |
1 | .9978147 .0039638 251.73 0.000 .9900458 1.005584
2 | .9230255 .0393331 23.47 0.000 .8459341 1.000117
3 | .5344313 .1674495 3.19 0.001 .2062364 .8626262
4 | .2003275 .07624 2.63 0.009 .0508998 .3497552
5 | .0874817 .0298857 2.93 0.003 .0289067 .1460567
6 | .0129882 .0135501 0.96 0.338 -.0135694 .0395459
7 | .0003349 .0007068 0.47 0.636 -.0010504 .0017201
8 | 6.82e-06 .0000234 0.29 0.771 -.0000391 .0000527
------------------------------------------------------------------------------However I cannot recreate the standard error of -margins-, e.g. Std. Dev. of manual predections at
values of weight of 2500 and 3000 are close to each other (.3565795 and .3427131), while the
Std. Err. produced by -margins- differs a lot for these values (.1674495 and .07624 )
Code:
. sum p1500-p5000
Variable | Obs Mean Std. Dev. Min Max
-------------+---------------------------------------------------------
p1500 | 74 .9978147 .0039419 .9830204 1
p2000 | 74 .9230255 .1224789 .5395426 .9999996
p2500 | 74 .5344313 .3565795 .0231664 .9999796
p3000 | 74 .2003275 .3427131 .0004798 .9989911
p3500 | 74 .0874817 .2395264 9.71e-06 .952476
-------------+---------------------------------------------------------
p4000 | 74 .0129882 .0509261 1.97e-07 .2885812
p4500 | 74 .0003349 .001379 3.98e-09 .0081432
p5000 | 74 6.82e-06 .0000281 8.05e-11 .0001661Thanks a lot,
MIke
0 Response to Calculation of standard errors after predictive margins: how are they computed?
Post a Comment