Bookmark and Share

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: How do I graph prediction of mean growth trajectory?


From   Michael Norman Mitchell <[email protected]>
To   [email protected]
Subject   Re: st: How do I graph prediction of mean growth trajectory?
Date   Sat, 22 May 2010 10:16:45 -0700

Dear David

The easiest way that I would know to graph this would be to type the marginal means from the margins command into a new dataset and then graph them. For example...

clear
input age m1 m2 m3 m4 m5 m6
20 1 2 3 4 5 6
25 9 3 4 3 2 7
30 8 3 3 2 1 2
35 8 2 3 4 5 6
end

line age m1 m2 m3 m4 m5 m6, sort

Where m1 to m6 are the marginal means that you obtained from the margins command for the 6 groups at the specified age.

Best luck,

Michael N. Mitchell
See the Stata tidbit of the week at...
http://www.MichaelNormanMitchell.com

On 2010-05-22 8.59 AM, David Torres wrote:
Thanks, Michael, for the help. I think your suggestion may get my closer to where I need to be. Now I just need to find a quick and easy way to graph it so I can sit back and enjoy some old James Bond movies today.

Ciao,

Diego
--------------------------------------------

David Diego Torres, MA(Sociology)
PhD Candidate in Sociology


Quoting Michael Norman Mitchell <[email protected]>:

Dear David

I think that this is a case where the -margins- command could be your friend. It won't directly draw the graph that you seek, but I think it will be useful for obtaining the adjusted means that you could then use for drawing a graph. I have created an example modeled after your description using the Stata example dataset -nlswork-. I renamed the variables to match your description and fit a model based on what I saw in your email. The creating of the dataset and the xtmixed command to fit the model is shown below...

. webuse nlswork, clear

. * age
. rename ttl_exp assess
. rename collgrad homeenv
. rename c_city trt
. rename race matiq
. xtmixed ln_w c.age##c.age assess homeenv i.matiq##i.trt || id: , cov(unstruct)

Then, after fitting this model, I used the -margins- command to get the adjusted means (averaging across the other variables in the model) for ages ranging from 40 to 45 crossed with the three levels of maternal IQ. This yields 6 (age) times 3 (matiq) = 18 predicted means.

. margins , at(age=(40(1)45) matiq=(1 2 3))

The margins command, by default, is giving the "Average Marginal Effect", which is averaging the across all of the other predictors in the model. You might be asking yourself, shouldn't these be held constant at their mean? (I ask myself this.) On my website, I have a page that describes the difference between "Marginal Effect at the Mean" and "Average Marginal Effects", and it shows that although these are different in a logit model, they are identical in a linear model. The URL (which may wrap) is....

http://www.michaelnormanmitchell.com/stow/marginal-effect-at-mean-vs-average-marginal-effect.html

  Below I show the commands again with the output...

. webuse nlswork, clear
(National Longitudinal Survey.  Young Women 14-26 years of age in 1968)

..
. * age
. rename ttl_exp assess

. rename collgrad homeenv

. rename c_city trt

. rename race matiq

..
. xtmixed ln_w c.age##c.age assess homeenv i.matiq##i.trt || id: , cov(unstruct) Note: single-variable random-effects specification; covariance structure set to
      identity

Performing EM optimization:

Performing gradient-based optimization:

Iteration 0:   log restricted-likelihood = -9818.6258
Iteration 1:   log restricted-likelihood = -9818.6258

Computing standard errors:

Mixed-effects REML regression Number of obs = 28502 Group variable: idcode Number of groups = 4710

Obs per group: min = 1 avg = 6.1 max = 15


Wald chi2(9) = 7180.74 Log restricted-likelihood = -9818.6258 Prob > chi2 = 0.0000

------------------------------------------------------------------------------ ln_wage | Coef. Std. Err. z P>|z| [95% Conf. Interval] -------------+---------------------------------------------------------------- age | .0456086 .0026478 17.22 0.000 .040419 .0507983
             |
c.age#c.age | -.0009042 .000044 -20.53 0.000 -.0009905 -.0008179
             |
assess | .0450014 .0009785 45.99 0.000 .0430836 .0469192 homeenv | .3603894 .0117634 30.64 0.000 .3373336 .3834452
             |
       matiq |
2 | -.121281 .0127061 -9.55 0.000 -.1461844 -.0963776 3 | .1005461 .0497622 2.02 0.043 .0030141 .1980782
             |
1.trt | .0390282 .0071551 5.45 0.000 .0250044 .053052
             |
   matiq#trt |
2 1 | .0363523 .0137009 2.65 0.008 .0094991 .0632055 3 1 | -.0515755 .0558514 -0.92 0.356 -.1610422 .0578911
             |
_cons | .8204718 .0391195 20.97 0.000 .7437989 .8971446 ------------------------------------------------------------------------------

------------------------------------------------------------------------------ Random-effects Parameters | Estimate Std. Err. [95% Conf. Interval] -----------------------------+------------------------------------------------
idcode: Identity             |
sd(_cons) | .281425 .003769 .274134 .28891 -----------------------------+------------------------------------------------ sd(Residual) | .2962138 .0013607 .2935589 .2988928 ------------------------------------------------------------------------------ LR test vs. linear regression: chibar2(01) = 9454.47 Prob >= chibar2 = 0.0000

. margins , at(age=(40(1)45) matiq=(1 2 3))

Predictive margins Number of obs = 28502

Expression   : Linear prediction, fixed portion, predict()

1._at        : age             =          40
               matiq           =           1

2._at        : age             =          40
               matiq           =           2

3._at        : age             =          40
               matiq           =           3

4._at        : age             =          41
               matiq           =           1

5._at        : age             =          41
               matiq           =           2

6._at        : age             =          41
               matiq           =           3

7._at        : age             =          42
               matiq           =           1

8._at        : age             =          42
               matiq           =           2

9._at        : age             =          42
               matiq           =           3

10._at       : age             =          43
               matiq           =           1

11._at       : age             =          43
               matiq           =           2

12._at       : age             =          43
               matiq           =           3

13._at       : age             =          44
               matiq           =           1

14._at       : age             =          44
               matiq           =           2

15._at       : age             =          44
               matiq           =           3

16._at       : age             =          45
               matiq           =           1

17._at       : age             =          45
               matiq           =           2

18._at       : age             =          45
               matiq           =           3

------------------------------------------------------------------------------
             |            Delta-method
| Margin Std. Err. z P>|z| [95% Conf. Interval] -------------+----------------------------------------------------------------
         _at |
1 | 1.552311 .0093973 165.19 0.000 1.533893 1.570729 2 | 1.444016 .0119263 121.08 0.000 1.420641 1.467392 3 | 1.634432 .043937 37.20 0.000 1.548318 1.720547 4 | 1.524682 .0102364 148.95 0.000 1.504619 1.544745 5 | 1.416388 .0126123 112.30 0.000 1.391668 1.441107 6 | 1.606804 .0441239 36.42 0.000 1.520322 1.693285 7 | 1.495245 .0111808 133.73 0.000 1.473331 1.517159 8 | 1.38695 .0134051 103.46 0.000 1.360677 1.413224 9 | 1.577366 .0443525 35.56 0.000 1.490437 1.664296 10 | 1.463999 .0122296 119.71 0.000 1.44003 1.487969 11 | 1.355705 .0143071 94.76 0.000 1.327663 1.383746 12 | 1.546121 .0446286 34.64 0.000 1.45865 1.633591 13 | 1.430945 .0133814 106.93 0.000 1.404718 1.457172 14 | 1.322651 .0153192 86.34 0.000 1.292626 1.352676 15 | 1.513067 .0449583 33.65 0.000 1.42495 1.601183 16 | 1.396083 .014635 95.39 0.000 1.367399 1.424767 17 | 1.287788 .0164415 78.33 0.000 1.255564 1.320013 18 | 1.478204 .0453477 32.60 0.000 1.389324 1.567084 ------------------------------------------------------------------------------

..
end of do-file


I hope this helps,

Best luck,


Michael N. Mitchell
See the Stata tidbit of the week at...
http://www.MichaelNormanMitchell.com

On 2010-05-21 2.27 PM, David Torres wrote:
Hello all,

I am trying to graph expected growth in IQ scores by maternal IQ class and treatment/control group assignment. Since there are three maternal IQ classes and two group assignments, I should have six lines or growth curves.

Now, my models were calculated using Stata's -xtmixed- command, so I've been following Rabe-Hesketh and Skrondal's text on multilevel modeling, 2nd edition, page 210-220. They give an example of how to graph growth, but the example does not include interactions nor does it allow for the slopes to change between some other time-varying covariate, which I have in my model. The outcome is test score, of course. The list of the predictor variables in the full model from which I would like to create my graphs follow:

1.  age
2.  age^2
3.  assessment given (two different assessments over several years, so
   this is entered as a time-varying covariate.  It would be great if I
could get the slope to vary by assessment) - Stanford-Binet or Wechsler
4.  home environment - 0/1, less stimulating/more stimulating
5.  treatment - 0/1, control/treatment
6 & 7. maternal IQ class - 1/2/3, IQ<=75/IQ between 76&90/IQ between 91&110
      1 is the reference category
8 & 9.  interaction between treatment and maternal IQ class

All of the variables in this model are significant, so I want to make sure that my graph accurately reflects that. Also, I understand that since interactions can be difficult to interpret sometimes a visual represention of the data are always good as an accompaniment.

A related question is this: If I have to produce these lines separately, creating six graphs, is there a way I can overlay them?

--------------------------------------------

David Diego Torres, MA(Sociology)
PhD Candidate in Sociology
*
*   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/
*
*   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/





*
*   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/
*
*   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/


© Copyright 1996–2018 StataCorp LLC   |   Terms of use   |   Privacy   |   Contact us   |   Site index