»  Home »  Resources & support »  FAQs »  Obtaining marginal effects for a few independent variables
Note: This FAQ is for Stata 10 and older versions of Stata.

In Stata 11, the margins command replaced mfx.

## I am only interested in obtaining a few of the marginal effects for a few independent variables. How can I do that?

 Title Obtaining marginal effects for a few independent variables Author May Boggess, StataCorp

We can choose the independent variables for which we want marginal effects by using the varlist() option:

 . sysuse auto, clear
(1978 Automobile Data)

. constraint define 1 price=weight

. cnsreg mpg price weight, constraint(1)

Constrained linear regression                          Number of obs =      74
F(  1,    72) =   37.59
Prob > F      =  0.0000
Root MSE      =   4.722
( 1)  price - weight = 0
------------------------------------------------------------------------------
mpg |      Coef.   Std. Err.      t    P>|t|     [95% Conf. Interval]
-------------+----------------------------------------------------------------
price |  -.0009875   .0001611    -6.13   0.000    -.0013086   -.0006664
weight |  -.0009875   .0001611    -6.13   0.000    -.0013086   -.0006664
_cons |   30.36718   1.577958    19.24   0.000     27.22158    33.51278
------------------------------------------------------------------------------

. mfx, predict(pr(20,30)) nose

Marginal effects after cnsreg
y  = Pr(20<mpg<30) (predict, pr(20,30))
=  .57557714
-------------------------------------------------------------------------------
variable |          dy/dx                 X
---------------------------------+---------------------------------------------
price |       -.0000651            6165.26
weight |       -.0000651            3019.46
-------------------------------------------------------------------------------

. mfx, predict(pr(20,30)) nose varlist(price)

Marginal effects after cnsreg
y  = Pr(20<mpg<30) (predict, pr(20,30))
=  .57557714
-------------------------------------------------------------------------------
variable |          dy/dx                 X
---------------------------------+---------------------------------------------
price |       -.0000651            6165.26
-------------------------------------------------------------------------------


The varlist() option can understand abbreviations:

 . webuse xmpl2, clear

. blogit deaths pop agecat exposed, or nolog

Logistic regression for grouped data              Number of obs   =        409
LR chi2(2)      =      22.47
Prob > chi2     =     0.0000
Log likelihood =  -142.6212                       Pseudo R2       =     0.0730

------------------------------------------------------------------------------
_outcome | Odds Ratio   Std. Err.      z    P>|z|     [95% Conf. Interval]
-------------+----------------------------------------------------------------
agecat |   4.216299   1.431519     4.24   0.000     2.167361    8.202223
exposed |   1.404674   .4374454     1.09   0.275     .7629451    2.586175
------------------------------------------------------------------------------

. mfx, predict(p)

Marginal effects after blogit
y  = Pr(outcome) (predict, p)
=  .11114585
------------------------------------------------------------------------------
variable |      dy/dx    Std. Err.     z    P>|z|  [    95% C.I.   ]      X
---------+--------------------------------------------------------------------
agecat*|    .146902      .03367    4.36   0.000   .080908  .212896        .5
exposed*|   .0336358      .03074    1.09   0.274  -.026618   .09389        .5
------------------------------------------------------------------------------
(*) dy/dx is for discrete change of dummy variable from 0 to 1

. mfx, predict(p) varlist(ag)

Marginal effects after blogit
y  = Pr(outcome) (predict, p)
=  .11114585
------------------------------------------------------------------------------
variable |      dy/dx    Std. Err.     z    P>|z|  [    95% C.I.   ]      X
---------+--------------------------------------------------------------------
agecat*|    .146902      .03367    4.36   0.000   .080908  .212896        .5
------------------------------------------------------------------------------
(*) dy/dx is for discrete change of dummy variable from 0 to 1


It even understands the wildcard character *:

 . sysuse auto, clear
(1978 Automobile Data)

. svyset [pweight=turn]

pweight: turn
VCE: linearized
Single unit: missing
Strata 1: <one>
SU 1: <observations>
FPC 1: <zero>

. xi: svy: regress mpg weight length i.rep78
i.rep78           _Irep78_1-5         (naturally coded; _Irep78_1 omitted)
(running regress on estimation sample)

Survey: Linear regression

Number of strata   =         1                  Number of obs      =        69
Number of PSUs     =        69                  Population size    =      2746
Design df          =        68
F(   6,     63)    =     35.77
Prob > F           =    0.0000
R-squared          =    0.6995

------------------------------------------------------------------------------
|             Linearized
mpg |      Coef.   Std. Err.      t    P>|t|     [95% Conf. Interval]
-------------+----------------------------------------------------------------
weight |  -.0023266   .0018753    -1.24   0.219    -.0060687    .0014154
length |  -.1123922   .0658759    -1.71   0.093    -.2438454     .019061
_Irep78_2 |  -.1298266   1.060557    -0.12   0.903    -2.246136    1.986483
_Irep78_3 |  -.5064828   .8987613    -0.56   0.575    -2.299933    1.286967
_Irep78_4 |  -.2704473   .9751403    -0.28   0.782    -2.216309    1.675415
_Irep78_5 |   2.340767   2.190164     1.07   0.289    -2.029638    6.711171
_cons |    49.4272   6.987183     7.07   0.000     35.48449    63.36991
------------------------------------------------------------------------------

. mfx, predict(xb)

Marginal effects after svy: regress
y  = Linear prediction (predict, xb)
=  20.815368
------------------------------------------------------------------------------
variable |      dy/dx    Std. Err.     z    P>|z|  [    95% C.I.   ]      X
---------+--------------------------------------------------------------------
weight |  -.0023266      .00188   -1.24   0.215  -.006002  .001349    3107.1
length |  -.1123922      .06588   -1.71   0.088  -.241507  .016722   190.449
_Irep7~2*|  -.1298266     1.06056   -0.12   0.903  -2.20848  1.94883   .126366
_Irep7~3*|  -.5064828      .89876   -0.56   0.573  -2.26802  1.25506   .448653
_Irep7~4*|  -.2704473      .97514   -0.28   0.782  -2.18169  1.64079   .252367
_Irep7~5*|   2.340767     2.19016    1.07   0.285  -1.95188  6.63341   .142753
------------------------------------------------------------------------------
(*) dy/dx is for discrete change of dummy variable from 0 to 1

. mfx, predict(xb) varlist(_Irep*)

Marginal effects after svy: regress
y  = Linear prediction (predict, xb)
=  20.815368
------------------------------------------------------------------------------
variable |      dy/dx    Std. Err.     z    P>|z|  [    95% C.I.   ]      X
---------+--------------------------------------------------------------------
_Irep7~2*|  -.1298266     1.06056   -0.12   0.903  -2.20848  1.94883   .126366
_Irep7~3*|  -.5064828      .89876   -0.56   0.573  -2.26802  1.25506   .448653
_Irep7~4*|  -.2704473      .97514   -0.28   0.782  -2.18169  1.64079   .252367
_Irep7~5*|   2.340767     2.19016    1.07   0.285  -1.95188  6.63341   .142753
------------------------------------------------------------------------------
(*) dy/dx is for discrete change of dummy variable from 0 to 1


The varlist() option can understand time-series operators:

 . sysuse auto, clear
(1978 Automobile Data)

. generate t=_n

. tsset t
time variable:  t, 1 to 74
delta:  1 unit

. regress mpg l(1/3).length head turn

Source |       SS       df       MS              Number of obs =      71
-------------+------------------------------           F(  5,    65) =   18.06
Model |  1409.28532     5  281.857063           Prob > F      =  0.0000
Residual |  1014.60201    65  15.6092617           R-squared     =  0.5814
Total |  2423.88732    70  34.6269618           Root MSE      =  3.9509

------------------------------------------------------------------------------
mpg |      Coef.   Std. Err.      t    P>|t|     [95% Conf. Interval]
-------------+----------------------------------------------------------------
length |
L1. |  -.0372479   .0236292    -1.58   0.120    -.0844386    .0099429
L2. |   .0557295   .0248165     2.25   0.028     .0061675    .1052915
L3. |  -.0283338   .0238291    -1.19   0.239    -.0759237    .0192561
headroom |  -.7995216   .6130181    -1.30   0.197    -2.023803    .4247601
turn |   -.876568   .1295939    -6.76   0.000    -1.135385    -.617751
_cons |   60.39905    5.75474    10.50   0.000     48.90604    71.89205
------------------------------------------------------------------------------

. mfx, varlist(l(1/3).length)

Marginal effects after regress
y  = Fitted values (predict)
=  21.338028
------------------------------------------------------------------------------
variable |      dy/dx    Std. Err.     z    P>|z|  [    95% C.I.   ]      X
---------+--------------------------------------------------------------------
L.length |  -.0372479      .02363   -1.58   0.115   -.08356  .009064   188.099
L2.len~h |   .0557295      .02482    2.25   0.025    .00709  .104369   188.338
L3.len~h |  -.0283338      .02383   -1.19   0.234  -.075038   .01837   188.775
------------------------------------------------------------------------------


Here’s another example:

 . webuse labor, clear

. generate wc=(we>12)

. treatreg ww wa cit, treat(wc=wmed wfed cit) nolog

Treatment-effects model -- MLE                  Number of obs      =       250

Wald chi2(3)       =      4.25
Log likelihood = -703.17446                     Prob > chi2        =    0.2361

------------------------------------------------------------------------------
|      Coef.   Std. Err.      z    P>|z|     [95% Conf. Interval]
-------------+----------------------------------------------------------------
ww           |
wa |  -.0121192    .019932    -0.61   0.543    -.0511852    .0269467
cit |   .1598895   .3545804     0.45   0.652    -.5350753    .8548544
wc |   1.146174   .7460483     1.54   0.124    -.3160537    2.608402
_cons |   2.379273     .90795     2.62   0.009     .5997236    4.158822
-------------+----------------------------------------------------------------
wc           |
wmed |   .1359134   .0334665     4.06   0.000     .0703203    .2015065
wfed |   .0866335   .0295276     2.93   0.003     .0287605    .1445066
cit |   .5669854   .2075585     2.73   0.006     .1601782    .9737927
_cons |  -3.082537   .3866133    -7.97   0.000    -3.840285   -2.324789
-------------+----------------------------------------------------------------
/athrho |   .0546227   .1916721     0.28   0.776    -.3210477    .4302931
/lnsigma |   .9246445   .0449341    20.58   0.000     .8365752    1.012714
-------------+----------------------------------------------------------------
rho |   .0545685   .1911013                     -.3104539    .4055663
sigma |   2.520972   .1132777                      2.308448    2.753062
lambda |   .1375656   .4824063                     -.8079333    1.083064
------------------------------------------------------------------------------
LR test of indep. eqns. (rho = 0):   chi2(1) =     0.08   Prob > chi2 = 0.7752
------------------------------------------------------------------------------

. mfx, predict(xb)

Marginal effects after treatreg
y  = Linear prediction (predict, xb)
=    2.27523
------------------------------------------------------------------------------
variable |      dy/dx    Std. Err.     z    P>|z|  [    95% C.I.   ]      X
---------+--------------------------------------------------------------------
wa |  -.0121192      .01993   -0.61   0.543  -.051185  .026947     42.92
cit*|   .1598895      .35458    0.45   0.652  -.535075  .854854      .624
wc*|   1.146174      .74605    1.54   0.124  -.316054   2.6084      .276
wmed |          0           0       .       .         0        0     9.136
wfed |          0           0       .       .         0        0     8.608
------------------------------------------------------------------------------
(*) dy/dx is for discrete change of dummy variable from 0 to 1

. mfx, predict(xbtrt)

Marginal effects after treatreg
y  = Linear prediction of wc (predict, xbtrt)
= -.74129165
------------------------------------------------------------------------------
variable |      dy/dx    Std. Err.     z    P>|z|  [    95% C.I.   ]      X
---------+--------------------------------------------------------------------
wa |          0           0       .       .         0        0     42.92
cit*|   .5669854      .20756    2.73   0.006   .160178  .973793      .624
wc*|          0           0       .       .         0        0      .276
wmed |   .1359134      .03347    4.06   0.000    .07032  .201507     9.136
wfed |   .0866335      .02953    2.93   0.003    .02876  .144507     8.608
------------------------------------------------------------------------------
(*) dy/dx is for discrete change of dummy variable from 0 to 1


In the above example, we can see that, when the prediction equation is xb, a variable that does not appear in the regression equation will have zero derivative (marginal effect). The same is true when the prediction equation is xbtrt: a variable that does not appear in the treatment equation will have zero derivative. So, there is little point having mfx calculate something that we know will be zero:

 . mfx, predict(xb) varlist(wa cit wc)

Marginal effects after treatreg
y  = Linear prediction (predict, xb)
=    2.27523
------------------------------------------------------------------------------
variable |      dy/dx    Std. Err.     z    P>|z|  [    95% C.I.   ]      X
---------+--------------------------------------------------------------------
wa |  -.0121192      .01993   -0.61   0.543  -.051185  .026947     42.92
cit*|   .1598895      .35458    0.45   0.652  -.535075  .854854      .624
wc*|   1.146174      .74605    1.54   0.124  -.316054   2.6084      .276
------------------------------------------------------------------------------
(*) dy/dx is for discrete change of dummy variable from 0 to 1

. mfx, predict(xbtrt) varlist(wmed wfed cit)

Marginal effects after treatreg
y  = Linear prediction of wc (predict, xbtrt)
= -.74129165
------------------------------------------------------------------------------
variable |      dy/dx    Std. Err.     z    P>|z|  [    95% C.I.   ]      X
---------+--------------------------------------------------------------------
cit*|   .5669854      .20756    2.73   0.006   .160178  .973793      .624
wmed |   .1359134      .03347    4.06   0.000    .07032  .201507     9.136
wfed |   .0866335      .02953    2.93   0.003    .02876  .144507     8.608
------------------------------------------------------------------------------
(*) dy/dx is for discrete change of dummy variable from 0 to 1



The same is true, of course, when predicting the probability:

 . mfx, predict(ptrt)

Marginal effects after treatreg
y  = Pr(wc) (predict, ptrt)
=  .22925831
------------------------------------------------------------------------------
variable |      dy/dx    Std. Err.     z    P>|z|  [    95% C.I.   ]      X
---------+--------------------------------------------------------------------
wa |          0           0       .       .         0        0     42.92
cit*|   .1619747      .05464    2.96   0.003   .054877  .269072      .624
wc*|          0           0       .       .         0        0      .276
wmed |   .0411952      .00998    4.13   0.000   .021644  .060747     9.136
wfed |   .0262586      .00897    2.93   0.003   .008669  .043848     8.608
------------------------------------------------------------------------------
(*) dy/dx is for discrete change of dummy variable from 0 to 1

. mfx, predict(ptrt)  varlist(wmed wfed cit)

Marginal effects after treatreg
y  = Pr(wc) (predict, ptrt)
=  .22925831
------------------------------------------------------------------------------
variable |      dy/dx    Std. Err.     z    P>|z|  [    95% C.I.   ]      X
---------+--------------------------------------------------------------------
cit*|   .1619747      .05464    2.96   0.003   .054877  .269072      .624
wmed |   .0411952      .00998    4.13   0.000   .021644  .060747     9.136
wfed |   .0262586      .00897    2.93   0.003   .008669  .043848     8.608
------------------------------------------------------------------------------
(*) dy/dx is for discrete change of dummy variable from 0 to 1