In Stata 11, the margins command replaced mfx.
Title | Marginal effects and the travelvl option | |
Author | May Boggess, StataCorp |
The tracelvl(1) option is very useful for watching mfx at work. Let’s look at an example:
. sysuse auto, clear (1978 Automobile Data) . mlogit rep78 length displacement turn gear_ratio, nolog Multinomial logistic regression Number of obs = 69 LR chi2(16) = 50.40 Prob > chi2 = 0.0000 Log likelihood = -68.492767 Pseudo R2 = 0.2690 ------------------------------------------------------------------------------ rep78 | Coef. Std. Err. z P>|z| [95% Conf. Interval] -------------+---------------------------------------------------------------- 1 | length | -.0077791 .0857701 -0.09 0.928 -.1758855 .1603272 displacement | -.0203556 .0217033 -0.94 0.348 -.0628933 .0221822 turn | .2606348 .4279448 0.61 0.542 -.5781215 1.099391 gear_ratio | -1.84238 3.056085 -0.60 0.547 -7.832197 4.147436 _cons | -2.307812 16.15227 -0.14 0.886 -33.96567 29.35005 -------------+---------------------------------------------------------------- 2 | length | -.0257227 .0503671 -0.51 0.610 -.1244405 .0729951 displacement | -.0227271 .0139469 -1.63 0.103 -.0500626 .0046083 turn | .5413776 .2719147 1.99 0.046 .0084346 1.074321 gear_ratio | -3.959613 2.582289 -1.53 0.125 -9.020805 1.10158 _cons | -2.896173 9.00731 -0.32 0.748 -20.55018 14.75783 -------------+---------------------------------------------------------------- 4 | length | .0485892 .0351597 1.38 0.167 -.0203226 .117501 displacement | -.0006782 .009394 -0.07 0.942 -.0190901 .0177337 turn | -.2454005 .1682703 -1.46 0.145 -.5752041 .0844032 gear_ratio | 1.615741 1.430829 1.13 0.259 -1.188633 4.420116 _cons | -4.694191 7.392889 -0.63 0.525 -19.18399 9.795606 -------------+---------------------------------------------------------------- 5 | length | .2154726 .0826013 2.61 0.009 .053577 .3773682 displacement | -.1231205 .0456459 -2.70 0.007 -.2125848 -.0336562 turn | -.561081 .2635563 -2.13 0.033 -1.077642 -.0445202 gear_ratio | -4.795507 2.475835 -1.94 0.053 -9.648054 .0570406 _cons | 14.0879 11.59243 1.22 0.224 -8.632844 36.80864 ------------------------------------------------------------------------------ (rep78==3 is the base outcome) . mfx, predict(p outcome(2)) tracelvl(1) calculating dydx (nonlinear method) ------------------------- variable | dy/dx ---------+--------------- length | -.00184 displa~t | -.00094 turn | .02686 gear_r~o | -.19349 ------------------------- calculating standard errors (nonlinear method) length ... continuous 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 length: Std. Err. = .00272748 displacement ... continuous 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 displacement: Std. Err. = .00066346 turn ... continuous 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 turn: Std. Err. = .01852245 gear_ratio ... continuous 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 gear_ratio: Std. Err. = .11812354 Marginal effects after mlogit y = Pr(rep78==2) (predict, p outcome(2)) = .04557427 ------------------------------------------------------------------------------ variable | dy/dx Std. Err. z P>|z| [ 95% C.I. ] X ---------+-------------------------------------------------------------------- length | -.0018412 .00273 -0.68 0.500 -.007187 .003505 188.29 displa~t | -.0009443 .00066 -1.42 0.155 -.002245 .000356 198 turn | .0268613 .01852 1.45 0.147 -.009442 .063165 39.7971 gear_r~o | -.1934947 .11812 -1.64 0.101 -.425013 .038023 2.99928 ------------------------------------------------------------------------------
I’ve chosen mlogit as an example because it is a multiple-equation estimation with many coefficients, so mfx can take quite some time to complete its calculations.
Let’s go through the extra output that tracelvl(1) has created and see what it means. The first part of the output is
calculating dydx (nonlinear method) ------------------------- variable | dy/dx ---------+--------------- length | -.00184 displa~t | -.00094 turn | .02686 gear_r~o | -.19349 -------------------------
First mfx tells us that it is calculating the marginal effects and that it is using the nonlinear method (see the FAQ stata.com/support/faqs/statistics/marginal-effects-methods for an explanation of what nonlinear means). We see this output appear very quickly indeed. Let’s look at the next piece of output:
calculating standard errors (nonlinear method) length ... continuous 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 length: Std. Err. = .00272748
mfx begins by letting us know it is doing the standard errors, again using the nonlinear method. Then, for each independent variable in the estimation, we have numbers counting across the screen in front of us. It is comforting to see them because at least we know mfx is still at work, but what do they mean?
To compute the standard error of each marginal effect, we need to compute a number corresponding to each coefficient in the estimation (see the FAQ stata.com/support/faqs/statistics/marginal-effects-methods for a full description of exactly what they are). So, the list of numbers tells you which variable it is up to in the computation. We can use tracelvl(2) if we want to see each of those numbers as mfx computes it:
. webuse fish, clear . zip count persons, inf(child camper) vuong nolog Zero-inflated Poisson regression Number of obs = 250 Nonzero obs = 108 Zero obs = 142 Inflation model = logit LR chi2(1) = 417.56 Log likelihood = -895.1643 Prob > chi2 = 0.0000 ------------------------------------------------------------------------------ count | Coef. Std. Err. z P>|z| [95% Conf. Interval] -------------+---------------------------------------------------------------- count | persons | .8061845 .0460454 17.51 0.000 .7159371 .8964318 _cons | -.5040989 .1658804 -3.04 0.002 -.8292184 -.1789793 -------------+---------------------------------------------------------------- inflate | child | 1.513283 .2652983 5.70 0.000 .9933076 2.033258 camper | -1.007936 .3499951 -2.88 0.004 -1.693914 -.3219581 _cons | -.3299887 .2913634 -1.13 0.257 -.9010505 .2410732 ------------------------------------------------------------------------------ Vuong test of zip vs. standard Poisson: z = 3.94 Pr>z = 0.0000 . mfx, predict(n) nonlinear tracelvl(1) calculating dydx (nonlinear method) ------------------------- variable | dy/dx ---------+--------------- persons | 1.7639 child | -1.7485 camper | 1.1334 ------------------------- calculating standard errors (nonlinear method) persons ... continuous 1 2 3 4 5 persons: Std. Err. = .17607926 child ... continuous 1 2 3 4 5 child: Std. Err. = .2973726 camper ... discrete 1 2 3 4 5 camper: Std. Err. = .37428072 Marginal effects after zip y = predicted number of events (predict, n) = 2.1880131 ------------------------------------------------------------------------------ variable | dy/dx Std. Err. z P>|z| [ 95% C.I. ] X ---------+-------------------------------------------------------------------- persons | 1.763942 .17608 10.02 0.000 1.41883 2.10905 2.528 child | -1.74851 .29737 -5.88 0.000 -2.33135 -1.16567 .684 camper*| 1.13338 .37428 3.03 0.002 .399803 1.86696 .588 ------------------------------------------------------------------------------ (*) dy/dx is for discrete change of dummy variable from 0 to 1 . mfx, predict(n) nonlinear tracelvl(2) calculating dydx (nonlinear method) ------------------------- variable | dy/dx ---------+--------------- persons | 1.7639 child | -1.7485 camper | 1.1334 ------------------------- calculating standard errors (nonlinear method) persons ... continuous 1 d^2f/dxdb = 6.6472574 2 d^2f/dxdb = 1.7639419 3 d^2f/dxdb = -.63714517 4 d^2f/dxdb = -.54772145 5 d^2f/dxdb = -.93149901 persons: Std. Err. = .17607926 child ... continuous 1 d^2f/dxdb = -4.4202341 2 d^2f/dxdb = -1.7485094 3 d^2f/dxdb = -1.0882794 4 d^2f/dxdb = .05773436 5 d^2f/dxdb = .09819149 child: Std. Err. = .2973726 camper ... discrete 1 d^2f/dxdb = 2.8651844 2 d^2f/dxdb = 1.1333799 3 d^2f/dxdb = -.0730116 4 d^2f/dxdb = -1.1329221 5 d^2f/dxdb = -.10674212 camper: Std. Err. = .37428072 Marginal effects after zip y = predicted number of events (predict, n) = 2.1880131 ------------------------------------------------------------------------------ variable | dy/dx Std. Err. z P>|z| [ 95% C.I. ] X ---------+-------------------------------------------------------------------- persons | 1.763942 .17608 10.02 0.000 1.41883 2.10905 2.528 child | -1.74851 .29737 -5.88 0.000 -2.33135 -1.16567 .684 camper*| 1.13338 .37428 3.03 0.002 .399803 1.86696 .588 ------------------------------------------------------------------------------ (*) dy/dx is for discrete change of dummy variable from 0 to 1