Prof Brian Ripley wrote:
On Sun, 20 Feb 2005, Lorin Hochstein wrote:
Hello all,
(Apologies in advance if my terminology is incorrect, I'm relatively new to R and statistics).
I have data from a factorial design with two treatments (CRF-23), and I'm trying to compute treatment-contrast interactions through analysis of variance.
[snip]
Let's say I want to compute some contrasts on B and see if there is an interaction with A. I try to specify a matrix with the columns being the different contrasts on B:
contrasts.B <- matrix(c(1,-1,0,1,0,-1,0,1,-1),nrow=3)
There are only be two independent contrasts for a three-level factor, so you need to choose what you really want.
As it turns out, the contrasts I'm trying to compute are not independent. (This is just an exercise in a textbook...)
(I really want the result for each contrast separately, so should I be passing one vector as an argument to contrasts?)
I am not at all sure what you want to do. Here is one possibility
contrasts(B) <- contrasts.B[, 1:2] fit <- aov(score~A*B) summary(fit, split=list(B=1:2), expand.split = T)
Ah, this gives me what we want! Unfortunately, since no pair of contrasts I have are independent, I have to compute them one at a time. This seems to work.
for(i in 1:3) {
contrasts(B) <- contrasts.B[, i]
fit <- aov(score~A*B)
s <- summary(fit, split=list(B=1:2), expand.split = T)
f <- s[[1]]$"F value"[6]
print(f)
}
If you want to look at the patterns of contrasts, use model.tables(), and to assess a single contrast, use se.contrast (but beware of lack of independence, even collinearity, if using multiple contrasts). Here is one way:
cont <- c(1, -1)[A] * c(1, -1, 0)[B] sum(cont) # 0 sum(cont*score) se.contrast(fit, as.matrix(cont))
I'd like to understand this approach as well, but I can't reproduce my results using se.contrast. In particular, I get the same standard error even though I tried to use different contrasts:
> c1 <- c(1,-1)[A]*c(1,-1,0)[B] > c2 <- c(1,-1)[A]*c(1,0,-1)[B] > c3 <- c(1,-1)[A]*c(0,1,-1)[B] > se.contrast(fit, as.matrix(c1)) Contrast 1 14.24547 > se.contrast(fit,as.matrix(c2)) Contrast 1 14.24547 > se.contrast(fit,as.matrix(c3)) Contrast 1 14.24547
Lorin
______________________________________________ [email protected] mailing list https://stat.ethz.ch/mailman/listinfo/r-help PLEASE do read the posting guide! http://www.R-project.org/posting-guide.html
