Dear Kevin,

If you look at the examples under ?xyplot, you'll get some idea
about using panel functions. In your case, assume your data frame
has variables x, y, w (for weight), G (for panel) and g (for sub-
group). You could plot this using something like the following
clumsy effort:

   x <- rnorm(500)
   y <- 0.9*x + sqrt(1-0.9*0.9)*rnorm(500)
   g <- sample(x=1:2, size=500, replace=TRUE)
   G <- sample(x=c("A", "B", "C"), size=500, replace=TRUE)
   w <- runif(500)
   tmp <- data.frame(x=x, y=y, w=w, g=g, G=G)
   #
   xyplot(y ~ x | G, data=tmp, groups=g, weights=w, 
          panel=function(x,y,groups,subscripts=subscripts,
                         weights,...) {
      t1 <- unique(groups)
      for (i in 1:length(t1)) {
         w <- is.element(groups[subscripts], t1[i])
         lpoints(x[w], y[w], pch=i, col=i)
         panel.abline(lm(y[w] ~ x[w], weights=(weights,
               [subscripts])[w]), lty=i, col=i)
      }
   }, key=list(space="top", columns=2, points=list(pch=1:2,
               col=1:2), text=list(paste("Group", 1:2),
               col=1:2)))
    


Regards,

Andrew C. Ward

CAPE Centre
Department of Chemical Engineering
The University of Queensland
Brisbane Qld 4072 Australia
[EMAIL PROTECTED]


Quoting Kevin Brown <[EMAIL PROTECTED]>:

> Dear R-users,
> 
> I am trying to create a multipanel scatter plot which displays
> weighted 
> regression lines for each subgroup. I am having diffuculty
> figuring out 
> how the Trellis multipanel plotting functions work, in general.
> Does 
> someone know where there are some beginners examples on how to
> create 
> and use  panel.xxx functions in conjunction with the xyplot
> functions?
> 
> Back to the matter at hand - There are two different ways that
> I could 
> add these lines, I think.
> 
> The first, and simplest would be to first find the coeffecients
> of the 
> weighted regression line for each panel ( I can do this). Then
> I would 
> add these coeffecients into a vector/matrix (i'm not sure what
> form of 
> vector would be suitable) and add them to each panel (I do not
> know how 
> to do this).
> 
> The second way would be to fiddle around with the function
> below to add 
> the "weights" to the lm function call. I do not know how to
> change this 
> "plot.regression" function to do that.
> 
> plot.regression = function(x,y)
> {
> panel.xyplot(x,y)
> panel.abline(lm(y~x))
> }
> 
> xyplot(yg~xg | g, panel="plot.regression")
> 
> Any help would be great!
> Thanks,
> Kevin Brown.
> 
> ______________________________________________
> [EMAIL PROTECTED] mailing list
> https://www.stat.math.ethz.ch/mailman/listinfo/r-help
>

______________________________________________
[EMAIL PROTECTED] mailing list
https://www.stat.math.ethz.ch/mailman/listinfo/r-help

Reply via email to