I'm using this code to plot a smoothed line. These two columns of data really represent 4 groups and I'd like to plot a separate line for each group but have them all in the same plot. The R-Docs for lowess do not seem to indicate some type of "GROUPS=var_name" option. What would be the syntax for this? plot(AWGT ~ lipid ) lines(lowess(lipid , AWGT, f=.8)) -- Dean Sonneborn, MS Programmer Analyst Department of Public Health Sciences University of California, Davis (530) 754-9516
Try using the panel.plsmo function in Dr. Harrell's Hmisc package. xyplot(AWGT ~ lipid, groups = var_name, panel=panel.plsmo) --Matt Matt Austin Statistician Amgen, Inc. -----Original Message----- From: r-help-bounces at stat.math.ethz.ch [mailto:r-help-bounces at stat.math.ethz.ch]On Behalf Of Dean Sonneborn Sent: Wednesday, January 04, 2006 8:54 AM To: r-help at stat.math.ethz.ch Subject: [R] multiple lowess line in one plot I'm using this code to plot a smoothed line. These two columns of data really represent 4 groups and I'd like to plot a separate line for each group but have them all in the same plot. The R-Docs for lowess do not seem to indicate some type of "GROUPS=var_name" option. What would be the syntax for this? plot(AWGT ~ lipid ) lines(lowess(lipid , AWGT, f=.8)) -- Dean Sonneborn, MS Programmer Analyst Department of Public Health Sciences University of California, Davis (530) 754-9516 ______________________________________________ R-help at stat.math.ethz.ch mailing list https://stat.ethz.ch/mailman/listinfo/r-help PLEASE do read the posting guide! http://www.R-project.org/posting-guide.html
## Copy and paste this into R. x1<-rbinom(dim(cars)[1],2,.5) plot(cars,main="lowess(modified cars)",col=x1+1) for(i in unique(x1)) lines(lowess(cars[x1==i,]),col=i+1) This might help... Matthew McIntosh -----Original Message----- From: r-help-bounces at stat.math.ethz.ch [mailto:r-help-bounces at stat.math.ethz.ch] On Behalf Of Dean Sonneborn Sent: Wednesday, January 04, 2006 10:54 AM To: r-help at stat.math.ethz.ch Subject: [R] multiple lowess line in one plot I'm using this code to plot a smoothed line. These two columns of data really represent 4 groups and I'd like to plot a separate line for each group but have them all in the same plot. The R-Docs for lowess do not seem to indicate some type of "GROUPS=var_name" option. What would be the syntax for this? plot(AWGT ~ lipid ) lines(lowess(lipid , AWGT, f=.8)) -- Dean Sonneborn, MS Programmer Analyst Department of Public Health Sciences University of California, Davis (530) 754-9516 ______________________________________________ R-help at stat.math.ethz.ch mailing list https://stat.ethz.ch/mailman/listinfo/r-help PLEASE do read the posting guide! http://www.R-project.org/posting-guide.html
Here is one approach using lattice (trellis) graphics: tmp.state <- data.frame( Frost=state.x77[,'Frost'], Murder=state.x77[,'Murder'], Region=state.region) library(lattice) trellis.par.set(col.whitebg()) xyplot( Murder ~ Frost, groups=Region, data=tmp.state, panel.groups=function(...){panel.loess(...);panel.xyplot(...)} ,span=.8) Just substitute in your variables and variable names. Hope this helps, -- Gregory (Greg) L. Snow Ph.D. Statistical Data Center Intermountain Healthcare greg.snow at intermountainmail.org (801) 408-8111> -----Original Message----- > From: r-help-bounces at stat.math.ethz.ch > [mailto:r-help-bounces at stat.math.ethz.ch] On Behalf Of Dean Sonneborn > Sent: Wednesday, January 04, 2006 9:54 AM > To: r-help at stat.math.ethz.ch > Subject: [R] multiple lowess line in one plot > > I'm using this code to plot a smoothed line. These two > columns of data really represent 4 groups and I'd like to > plot a separate line for each group but have them all in the > same plot. The R-Docs for lowess do not seem to indicate some > type of "GROUPS=var_name" option. What would be the syntax for this? > > plot(AWGT ~ lipid ) > lines(lowess(lipid , AWGT, f=.8)) > > > -- > Dean Sonneborn, MS > Programmer Analyst > Department of Public Health Sciences > University of California, Davis > (530) 754-9516 > > ______________________________________________ > R-help at stat.math.ethz.ch mailing list > https://stat.ethz.ch/mailman/listinfo/r-help > PLEASE do read the posting guide! > http://www.R-project.org/posting-guide.html >
It appears to me lowess has no "subset" or "strata" option. The brute-force way (which my students like best) is just to create 4 columns, one for each group (with "unstack" or such) and then run one lines(lowess()) command for each one. I think there is a bit more art in using by, which will create subsets on the fly for you. Here is a self contained example that I just worked out to illustrate. grp is the grouping factor, x and y are just illustrative data. The by function creates the data subsets and they are accessed in the FUN as "sub1". x <- rnorm(100) grp <- gl(4,25) y <- rpois(100, lambda=4) mydf <- data.frame(x,y,grp) with(mydf, plot(x,y)) by (mydf, list(grp), function(sub1) lines(lowess(sub1$x, sub1$y))) Hope that helps On 1/4/06, Dean Sonneborn <dsonneborn at ucdavis.edu> wrote:> I'm using this code to plot a smoothed line. These two columns of data > really represent 4 groups and I'd like to plot a separate line for each > group but have them all in the same plot. The R-Docs for lowess do not > seem to indicate some type of "GROUPS=var_name" option. What would be > the syntax for this? > > plot(AWGT ~ lipid ) > lines(lowess(lipid , AWGT, f=.8)) > > > -- > Dean Sonneborn, MS > Programmer Analyst > Department of Public Health Sciences > University of California, Davis > (530) 754-9516 > > ______________________________________________ > R-help at stat.math.ethz.ch mailing list > https://stat.ethz.ch/mailman/listinfo/r-help > PLEASE do read the posting guide! http://www.R-project.org/posting-guide.html >-- Paul E. Johnson Professor, Political Science 1541 Lilac Lane, Room 504 University of Kansas
> xyplot( Murder ~ Frost, groups=Region, data=tmp.state, > panel.groups=function(...){panel.loess(...);panel.xyplot(...)} > ,span=.8)or more simply (but with less control over options) xyplot( Murder ~ Frost, groups=Region, data=tmp.state, type=c("p","smooth")) Hadley