[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

From |
jpitblado@stata.com (Jeff Pitblado, StataCorp LP) |

To |
statalist@hsphsun2.harvard.edu |

Subject |
Re: st: -margins- vs -adjust- |

Date |
Wed, 04 Nov 2009 15:12:48 -0600 |

Jeph Herrin <junk@spandrel.net> noticed that -adjust- has been superseeded by the -margins- command in Stata 11: > After getting an error with -adjust-, I discovered that it > had been deprecated in version 11. The online help says: > > "adjust has been superseded by margins. margins can do everything > that adjust did and more." > > However, as far as I can tell, this is not the case. I could use > -adjust- with models that did not include factor variables; however, > with -margins- there seems to be no option to find marginal effects > for independent variables that are not i.vars. > > Is this true? Or is there a way to fool -margins- into working with > non-factor variables? Apologies if this has come up before, I could > not find anything on the list or FAQ. > > If it is true, this is a complete nusiance. I do not normally > include dichotomous variables as factor variables, and am not > interested in starting now. Moreover, I have estimation results > from -xtmelogit- models that ran for days; am I going to have > to re-estimate with -i.female- instead of -female- to get marginal > effects? (-adjust- gives errors). That, or calculate my own > marginal effects from scratch. It isn't clear what Jeph means by "marginal effects" related to the -adjust- command. Martin Weiss <martin.weiss1@gmx.de> gave two examples using the -dydx()- option of -margins- to compute marginal effects using a -logit- model fit. The first used the 'i.' operator on a factor variable (named 'race') in the -logit- model fit, the second treated 'race' as a standard variable. Peter Lachenbruch <Peter.Lachenbruch@oregonstate.edu> noted that Martin's examples were fitting two different models. Note -margins- computed the marginal effect of 'race' differently, depending of whether it was specfied as a factor variable (with the 'i.' operator) or not. Jeph replied to Martin's post using a regular variable in the -margins- varlist, such as . margins smoke factor smoke not found in e(b) r(111); The variables in -margins- varlist specification are interpreted as factor variables, identifying the predictive margins of interest. Thus the above example is requesting the predictive margins for the -smoke- factor variable. I imagine that Jeph might be referring to the -by()- option of -adjust-. If that is the case, then we just need to translate between -adjust- and -margins- syntax. Here are a few examples based on Martin's first post to this thread (I've included the Stata output from these examples following my signature): . webuse lbw . logit low age lwt race smoke ptl ht ui Compute the mean prediction, Pr(low), over each level of smoking status, adjusting for the mean of each predictor within smoking status: . adjust, pr by(smoke) translates to . margins, over(smoke) at((means) *) Compute the mean prediction, Pr(low), over each level of smoking status, adjusting for the overall mean of each predictor (except smoking status): . adjust age lwt race ptl ht ui, pr by(smoke) translates to . margins, over(smoke) at((omeans) * (asobserved) smoke) Note that Jeph will get the same results from -margins- when the -logit- fit treated -smoke- (and -race-) as factor variables. Verkuilen, Jay <JVerkuilen@gc.cuny.edu> posted an example where -adjust- allows variables in the -by()- option that were not in the model fit. The -over()- option of -margins- allows this too. Philip Ender <ender97@gmail.com> used Jay's -logit- model fit to show that -margins- with the -if- clause produces similar point and standard error estimates, but that the confidence intervals are different. The -pr- confidence intervals from -adjust- are computed by transforming the end-points of the CI limits from the linear prediction. -margins- computes the CI limits using the normal approximation is valid. --Jeff jpitblado@stata.com *** Stata output from the preceeding examples: . webuse lbw, clear (Hosmer & Lemeshow data) . logit low age lwt race smoke ptl ht ui Iteration 0: log likelihood = -117.336 Iteration 1: log likelihood = -102.61679 Iteration 2: log likelihood = -102.17476 Iteration 3: log likelihood = -102.17373 Iteration 4: log likelihood = -102.17373 Logistic regression Number of obs = 189 LR chi2(7) = 30.32 Prob > chi2 = 0.0001 Log likelihood = -102.17373 Pseudo R2 = 0.1292 ------------------------------------------------------------------------------ low | Coef. Std. Err. z P>|z| [95% Conf. Interval] -------------+---------------------------------------------------------------- age | -.0332327 .0357713 -0.93 0.353 -.1033431 .0368777 lwt | -.0120948 .0066158 -1.83 0.068 -.0250617 .000872 race | .4462621 .2150445 2.08 0.038 .0247827 .8677415 smoke | .9255414 .3980923 2.32 0.020 .1452947 1.705788 ptl | .5397383 .3469187 1.56 0.120 -.1402099 1.219686 ht | 1.799337 .6872194 2.62 0.009 .4524118 3.146262 ui | .7148045 .4634311 1.54 0.123 -.1935037 1.623113 _cons | -.1029665 1.284609 -0.08 0.936 -2.620754 2.414821 ------------------------------------------------------------------------------ . . // Compute the mean prediction, Pr(low), over each level of smoking status, . // adjusting for the mean of each predictor within smoking status: . adjust, pr by(smoke) ------------------------------------------------------------------------------- Dependent variable: low Equation: low Command: logit Variables left as is: age, lwt, race, ptl, ht, ui ------------------------------------------------------------------------------- ---------------------- smoked | during | pregnancy | pr ----------+----------- 0 | .22079 1 | .395668 ---------------------- Key: pr = Probability . margins, over(smoke) at((means) *) Adjusted predictions Number of obs = 189 Model VCE : OIM Expression : Pr(low), predict() over : smoke at : 0.smoke age = 23.42609 (mean) lwt = 130.9043 (mean) race = 2.095652 (mean) smoke = 0 (mean) ptl = .1217391 (mean) ht = .0608696 (mean) ui = .1304348 (mean) 1.smoke age = 22.94595 (mean) lwt = 128.1351 (mean) race = 1.459459 (mean) smoke = 1 (mean) ptl = .3108108 (mean) ht = .0675676 (mean) ui = .1756757 (mean) ------------------------------------------------------------------------------ | Delta-method | Margin Std. Err. z P>|z| [95% Conf. Interval] -------------+---------------------------------------------------------------- smoke | 0 | .2207901 .0417458 5.29 0.000 .1389698 .3026104 1 | .3956685 .0609789 6.49 0.000 .2761519 .515185 ------------------------------------------------------------------------------ . . // Compute the mean prediction, Pr(low), over each level of smoking status, . // adjusting for the overall mean of each predictor (except smoking status): . adjust age lwt race ptl ht ui, pr by(smoke) ------------------------------------------------------------------------------- Dependent variable: low Equation: low Command: logit Covariates set to mean: age = 23.238095, lwt = 129.82011, race = 1.8465608, ptl = .1957672, ht = .06349206, ui = .14814815 ------------------------------------------------------------------------------- ---------------------- smoked | during | pregnancy | pr ----------+----------- 0 | .214918 1 | .408544 ---------------------- Key: pr = Probability . margins, over(smoke) at((omeans) * (asobserved) smoke) Predictive margins Number of obs = 189 Model VCE : OIM Expression : Pr(low), predict() over : smoke at : 0.smoke age = 23.2381 (omean) lwt = 129.8201 (omean) race = 1.846561 (omean) ptl = .1957672 (omean) ht = .0634921 (omean) ui = .1481481 (omean) 1.smoke age = 23.2381 (omean) lwt = 129.8201 (omean) race = 1.846561 (omean) ptl = .1957672 (omean) ht = .0634921 (omean) ui = .1481481 (omean) ------------------------------------------------------------------------------ | Delta-method | Margin Std. Err. z P>|z| [95% Conf. Interval] -------------+---------------------------------------------------------------- smoke | 0 | .2149182 .0435287 4.94 0.000 .1296035 .3002328 1 | .4085436 .0662837 6.16 0.000 .2786299 .5384573 ------------------------------------------------------------------------------ <end> * * 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/

**Follow-Ups**:**Re: st: -margins- vs -adjust-***From:*Fred Wolfe <fwolfe@arthritis-research.org>

**Re: st: -margins- vs -adjust-***From:*Jeph Herrin <junk@spandrel.net>

- Prev by Date:
**st: RE: t-test comparing the means of two samples in imputed datasets** - Next by Date:
**st: Re: RSS feed for Statalist** - Previous by thread:
**st: RE: -margins- vs -adjust-** - Next by thread:
**Re: st: -margins- vs -adjust-** - Index(es):

© Copyright 1996–2023 StataCorp LLC | Terms of use | Privacy | Contact us | What's new | Site index |