Re: [R] xyplot: adding pooled regression lines to a paneled type="r" plot

From: Michael Friendly <friendly_at_yorku.ca>
Date: Wed, 23 Jun 2010 14:05:40 -0400

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 <friendly@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_at_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.
Received on Wed 23 Jun 2010 - 18:11:52 GMT

Archive maintained by Robert King, hosted by the discipline of statistics at the University of Newcastle, Australia.
Archive generated by hypermail 2.2.0, at Thu 24 Jun 2010 - 09:30:34 GMT.

Mailing list information is available at https://stat.ethz.ch/mailman/listinfo/r-help. Please read the posting guide before posting to the list.

list of date sections of archive