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.