Hello,
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
And here is (part of) the output:
Below is the summary of manual predictions: the means are identical to what is predicted by -margins-
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 )
Is there anyone who can help on this?
Thanks a lot,
MIke
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 .0001661
Thanks a lot,
MIke
Comment