[R] xyplot: adding pooled regression lines to a paneled type="r" plot
Michael Friendly
friendly at yorku.ca
Thu Jun 24 20:37:55 CEST 2010
Dennis Murphy wrote:
> Hi:
>
> Does this work for you?
>
> xyplot(distance ~ age | Sex, data = Orthodont, groups = Subject,
> main = 'Individual linear regressions ~ age', type = c('g', 'r'),
> panel = function(x, y, ...) {
> panel.xyplot(x, y, ..., col = gray(0.5))
> panel.lmline(x, y, ..., lwd = 3, col = 'red')
> })
>
Perfectly. Thanks to you and to Deepayan for the help on this.
> HTH,
> Dennis
>
> On Wed, Jun 23, 2010 at 11:05 AM, Michael Friendly <friendly at yorku.ca
> <mailto:friendly at yorku.ca>> wrote:
>
> 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 at yorku.ca <mailto:friendly at 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 <mailto: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.
>
>
--
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
More information about the R-help
mailing list