Thanks, Deepayan

I read your presentation and understand how this works for the case you presented, but I can't get it to work for my case, where I want to superimpose model fitted lines over individual
subject regression lines.  Here's what I tried

library(nlme)
library(lattice)

## ------------------
## pooled OLS model
## ------------------

Ortho.OLS <- lm(distance ~ age * Sex, data=Orthodont)
#coef(Ortho.OLS)

   # plot individual lines
xyplot(distance ~ age|Sex, data=Orthodont, type='r', groups=Subject, col=gray(.50),
   main="Individual linear regressions ~ age")

grid <- expand.grid(age=8:14, Sex=c("Male", "Female"))

fm.OLS <-cbind(grid, distance = predict(Ortho.OLS, newdata = grid))

Ortho <-Orthodont[c("age", "Sex", "distance")]
combined <- make.groups(original = Ortho,
                           OLS = fm.OLS)
str(combined)
xyplot(distance ~ age|Sex, data=combined, groups=which, col="black", lwd=2,
 type = c("r", "l"), distribute.type = TRUE
   )

This last just gives me the pooled within-Sex regression lines, which is what I want to overlay
on the first plot.

Further, if I try a mixed model, I get errors trying to get the predicted values in a similar form

Ortho.MLM <- lme(distance ~ age * Sex, data=Orthodont,
       random = ~ 1 + age | Subject,
       correlation = corAR1 (form = ~ 1 | Subject))

fm.MLM <-cbind(grid, distance = predict(Ortho.MLM, newdata = grid))

> fm.MLM <-cbind(grid, distance = predict(Ortho.MLM, newdata = grid))
Error in predict.lme(Ortho.MLM, newdata = grid) :
 Cannot evaluate groups for desired levels on "newdata"
>

Deepayan Sarkar wrote:
On Tue, Jun 22, 2010 at 9:30 AM, Michael Friendly <frien...@yorku.ca> wrote:
Consider the following plot that shows separate regression lines ~ age for
each subject in the Pothoff-Roy Orthodont data,
with separate panels by Sex:

library(nlme)
#plot(Orthodont)
xyplot(distance ~ age|Sex, data=Orthodont, type='r', groups=Subject,
col=gray(.50),
  main="Individual linear regressions ~ age")

I'd like to also show in each panel the pooled OLS regression line for each
Sex in the corresponding panel,
generated by the following model:

Ortho.OLS <- lm(distance ~ age * Sex, data=Orthodont)

Sex is a factor, with Male=0, so the coefficients are:
coef(Ortho.OLS)
 (Intercept)           age     SexFemale age:SexFemale
 16.3406250     0.7843750     1.0321023    -0.3048295

I anticipate wanting to fit other models to these data, and also displaying
the model-predicted
regression lines in the same or similar plot, e.g., for a simple linear
mixed model:

Ortho.MLM <- lme(distance ~ age * Sex, data=Orthodont,
      random = ~ 1 + age | Subject,
      correlation = corAR1 (form = ~ 1 | Subject))

Have a look at

http://user2007.org/program/presentations/sarkar.pdf

-Deepayan


--
Michael Friendly Email: friendly AT yorku DOT ca Professor, Psychology Dept.
York University      Voice: 416 736-5115 x66249 Fax: 416 736-5814
4700 Keele Street    Web:   http://www.datavis.ca
Toronto, ONT  M3J 1P3 CANADA

______________________________________________
R-help@r-project.org mailing list
https://stat.ethz.ch/mailman/listinfo/r-help
PLEASE do read the posting guide http://www.R-project.org/posting-guide.html
and provide commented, minimal, self-contained, reproducible code.

Reply via email to