Notice: On April 23, 2014, Statalist moved from an email list to a forum, based at statalist.org.
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: st: margins option in Stata10?
From
Richard Williams <[email protected]>
To
[email protected], [email protected]
Subject
Re: st: margins option in Stata10?
Date
Thu, 11 Aug 2011 14:10:29 -0500
At 11:51 AM 8/11/2011, Andreas Fagereng wrote:
Dear Listers,
I have the following question:
On the server where my data are stored, there is only installed Stata10.
I want to estimate the probability of being a participant (0 or 1) as
a function of age, and some other characteristics. I therefore run
-probit participant a18-a70 + control variables+ year fixed effects-,
where a18-50 are age dummies from age 18 to 70 .
I now want to plot the estimated probabilities of being a participant
over the life cycle. The coefficients of the probit are not
interpretable.
In Stata11, on which i cannot run the data these two lines would give
me my answer
-probit participant i.age + control + year fixed effects-
-margins age, atmeans-
Is there a way to get exactly this in Stata10, maybe using mfx?
First off, you are wise to be careful. I show how old commands like
mfx can give incorrect results in my Stata Conference talk
http://www.stata.com/meeting/chicago11/materials/chi11_williams.pptx
But, if you are careful, it can be done. First, here is sample code:
webuse nhanes2f
tab1 agegrp, gen(agegrp)
* Easy way if you have Stata 11+
probit diabetes i.agegrp weight
margins , atmeans dydx(agegrp)
* Hard way if you only have Stata 10
probit diabetes agegrp2-agegrp6 weight
mfx , at(agegrp2 = 0, agegrp3 = 0, agegrp4 = 0, agegrp5 = 0, agegrp6 = 0)
Since you don't have Stata 11, I'll also show the output:
. clear all
. webuse nhanes2f
. tab1 agegrp, gen(agegrp)
-> tabulation of agegrp
Age groups |
1-6 | Freq. Percent Cum.
------------+-----------------------------------
age20-29 | 2,320 22.44 22.44
age30-39 | 1,621 15.68 38.13
age40-49 | 1,270 12.29 50.41
age50-59 | 1,289 12.47 62.88
age60-69 | 2,852 27.59 90.47
age 70+ | 985 9.53 100.00
------------+-----------------------------------
Total | 10,337 100.00
. * Easy way if you have Stata 11+
. probit diabetes i.agegrp weight
Iteration 0: log likelihood = -1999.0668
Iteration 1: log likelihood = -1822.6588
Iteration 2: log likelihood = -1807.9974
Iteration 3: log likelihood = -1807.7631
Iteration 4: log likelihood = -1807.7625
Iteration 5: log likelihood = -1807.7625
Probit regression Number of obs = 10335
LR chi2(6) = 382.61
Prob > chi2 = 0.0000
Log likelihood = -1807.7625 Pseudo R2 = 0.0957
------------------------------------------------------------------------------
diabetes | Coef. Std. Err. z P>|z| [95% Conf. Interval]
-------------+----------------------------------------------------------------
agegrp |
2 | .2206309 .125082 1.76 0.078 -.0245252 .4657871
3 | .5985311 .114849 5.21 0.000 .3734311 .8236311
4 | .8427783 .1085646 7.76 0.000 .6299957 1.055561
5 | 1.081819 .0980249 11.04 0.000 .8896939 1.273945
6 | 1.274717 .1061677 12.01 0.000 1.066632 1.482802
|
weight | .0095574 .0014072 6.79 0.000 .0067994 .0123154
_cons | -3.166968 .1385273 -22.86 0.000 -3.438476 -2.895459
------------------------------------------------------------------------------
. margins , atmeans dydx(agegrp)
Conditional marginal effects Number of obs = 10335
Model VCE : OIM
Expression : Pr(diabetes), predict()
dy/dx w.r.t. : 2.agegrp 3.agegrp 4.agegrp 5.agegrp 6.agegrp
at : 1.agegrp = .2244799 (mean)
2.agegrp = .1567489 (mean)
3.agegrp = .1227866 (mean)
4.agegrp = .1247218 (mean)
5.agegrp = .2759555 (mean)
6.agegrp = .0953072 (mean)
weight = 71.90313 (mean)
------------------------------------------------------------------------------
| Delta-method
| dy/dx Std. Err. z P>|z| [95% Conf. Interval]
-------------+----------------------------------------------------------------
agegrp |
2 | .0053641 .0031363 1.71 0.087 -.0007828 .0115111
3 | .0233968 .0049879 4.69 0.000 .0136206 .0331729
4 | .0442435 .0062888 7.04 0.000 .0319176 .0565693
5 | .0744917 .0053948 13.81 0.000 .063918 .0850653
6 | .1075195 .0103715 10.37 0.000 .0871918 .1278472
------------------------------------------------------------------------------
Note: dy/dx for factor levels is the discrete change from the base level.
. * Hard way if you only have Stata 10
. probit diabetes agegrp2-agegrp6 weight
[Output deleted]
. mfx , at(agegrp2 = 0, agegrp3 = 0, agegrp4 = 0, agegrp5 = 0, agegrp6 = 0)
warning: no value assigned in at() for variables weight;
means used for weight
Marginal effects after probit
y = Pr(diabetes) (predict)
= .00657351
------------------------------------------------------------------------------
variable | dy/dx Std. Err. z P>|z| [ 95% C.I. ] X
---------+--------------------------------------------------------------------
agegrp2*| .0053641 .00314 1.71 0.087 -.000783 .011511 0
agegrp3*| .0233968 .00499 4.69 0.000 .013621 .033173 0
agegrp4*| .0442435 .00629 7.04 0.000 .031918 .056569 0
agegrp5*| .0744917 .00539 13.81 0.000 .063918 .085065 0
agegrp6*| .1075195 .01037 10.37 0.000 .087192 .127847 0
weight | .0001762 .00005 3.73 0.000 .000084 .000269 71.9031
------------------------------------------------------------------------------
(*) dy/dx is for discrete change of dummy variable from 0 to 1
This kind of stuff is very error prone; life will be much simpler if
you can get Stata 11 or 12. Plus, you could then use AMES instead of
MEMs or some of the other options that margins offers.
-------------------------------------------
Richard Williams, Notre Dame Dept of Sociology
OFFICE: (574)631-6668, (574)631-6463
HOME: (574)289-5227
EMAIL: [email protected]
WWW: http://www.nd.edu/~rwilliam
*
* For searches and help try:
* http://www.stata.com/help.cgi?search
* http://www.stata.com/support/statalist/faq
* http://www.ats.ucla.edu/stat/stata/