Dear R users, I am looking for a simple way to define a contrast in a linear model. I have a data frame with two factors (f1, f2) and a dependent y.
x <- data.frame(y =rnorm(30), f1=gl(2, 15), f2=gl(3, 5, 30)) Now I want to specify the following contrast: "f1= 1 or 2 and f2=1" vs. "f1= 1 or 2 and f2=3" The best I can come up with is the following: x$new[x$f1==1 & x$f2==1] <- 1 x$new[x$f1==1 & x$f2==2] <- 2 x$new[x$f1==1 & x$f2==3] <- 3 x$new[x$f1==2 & x$f2==1] <- 4 x$new[x$f1==2 & x$f2==2] <- 5 x$new[x$f1==2 & x$f2==3] <- 6 x$new <- as.factor(x$new) contrasts(x$new) <- cbind(" my constrast" = c( .5, -.5, 0, .5, 0, -.5)) summary(lm(y ~ new, x)) I have two questions concerning this: 1) if I take a look at the constrast matrix derived from the one contrast I specified, I assume that R automatically adds the missing constrasts so they are orthogonal. round(cor(attributes(x$new)$contrast), 1) Is that always the case? 2) Can I get this in a simpler way? I find it a bit tedious to define the constrast like above. Is there something simpler, like: lm(y ~ f1:f2, + "user defined contrast definition inside lm that is equivalent to the above") Thanks in advance, Mark ––––––––––––––––––––––––––––––––––––––– Mark Heckmann Blog: www.markheckmann.de R-Blog: http://ryouready.wordpress.com ______________________________________________ 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.