 Notice: On April 23, 2014, Statalist moved from an email list to a forum, based at statalist.org.

# st: margins / over / dydx

 From Robert Duval To statalist@hsphsun2.harvard.edu Subject st: margins / over / dydx Date Wed, 4 Jan 2012 03:19:34 -0600

```Dear all,

I have a question on the use of the command margins together with the
option over().

Suppose I want to get the prediction for a given outcome by sex in a
probit model (other models would be ok)

use http://www.stata-press.com/data/r11/margex

probit outcome sex##group age distance arm

margins , over(sex)

That is I want the average predicted probability of having a positive
outcome for males and again for females rather than the average
predicted probability with everyone treated as male and then again
with everyone treated as female.

In this particular example Stata gives me

margins , over(sex)

Predictive margins                                Number of obs   =       3000
Model VCE    : OIM

Expression   : Pr(outcome), predict()
over         : sex

------------------------------------------------------------------------------
|            Delta-method
|     Margin   Std. Err.      z    P>|z|     [95% Conf. Interval]
-------------+----------------------------------------------------------------
sex |
0  |   .0807707   .0061496    13.13   0.000     .0687178    .0928236
1  |   .2587496   .0103578    24.98   0.000     .2384487    .2790504
------------------------------------------------------------------------------

Now I want the estimated difference 0.2587496 - .0807707  = .1779789
and its standard error.

Is there an easy way to do this without using the post option?

I cannot use dydx as in

. margins, dydx(sex)

Average marginal effects                          Number of obs   =       3000
Model VCE    : OIM

Expression   : Pr(outcome), predict()
dy/dx w.r.t. : 1.sex

------------------------------------------------------------------------------
|            Delta-method
|      dy/dx   Std. Err.      z    P>|z|     [95% Conf. Interval]
-------------+----------------------------------------------------------------
1.sex |   .0400701   .0164297     2.44   0.015     .0078685    .0722718
------------------------------------------------------------------------------
Note: dy/dx for factor levels is the discrete change from the base level.

because that actually estimates the difference between the predicted
probabilities assuming first that everyone is a male and then that
everyone is a female, namely it estimates the difference between the
predictions given by

. margins sex

Predictive margins                                Number of obs   =       3000
Model VCE    : OIM

Expression   : Pr(outcome), predict()

------------------------------------------------------------------------------
|            Delta-method
|     Margin   Std. Err.      z    P>|z|     [95% Conf. Interval]
-------------+----------------------------------------------------------------
sex |
0  |   .1573491   .0125989    12.49   0.000     .1326558    .1820424
1  |   .1974193   .0100571    19.63   0.000     .1777078    .2171307
------------------------------------------------------------------------------

but as I stated originally this is not the quantity that I am after.

I can of course estimate

margins , over(sex) post

and then proceed "by hand" given that I have the parameter estimates
to differentiate and the variance-covariance matrix. However, I want
to do this for several models and for many different values in the
at() option. So before I program a complicated loop for my specific
problem in hand I wanted to ask if anyone knows a direct way of
obtaining the  difference 0.2587496 - .0807707  = .1779789 and its
standard error.