Schreiber, Stefan
2012-Jan-12 00:20 UTC
[R] multcomp two-way anova with interactions within and between
Hi all, I'd like to compare all levels of my interaction with each other. I read the pdf 'Additional multcomp Examples' but even though there is an example with an interaction it doesn't work for me when I want to compare within and between groups. Here is an example: #### d.fr<-data.frame(id=rep(1:16,3),treat1=rep(as.factor(LETTERS[1:3]),each16),treat2=rep(as.factor(letters[4:7]),each=4),response=rnorm(48)) require(multcomp) require(lme4) fit1<-lmer(response~treat1*treat2+(1|id),data=d.fr) temp<-expand.grid(treat1=unique(d.fr$treat1),treat2=unique(d.fr$treat2)) X<-model.matrix(~treat1*treat2,data=temp) # X gives me a matrix with the dimensions 12 by 12. glht(fit1, linfct = X) Tukey<-contrMat(table(d.fr$treat1),'Tukey') K1<-cbind(Tukey,matrix(0,nrow=nrow(Tukey),ncol=ncol(Tukey))) rownames(K1) <- paste(levels(d.fr$treat2)[1],rownames(K1), sep = ":") K2 <- cbind(matrix(0, nrow = nrow(Tukey), ncol = ncol(Tukey)), Tukey) rownames(K2) <- paste(levels(d.fr$treat2)[2],rownames(K1), sep = ":") K3 <- cbind(matrix(0, nrow = nrow(Tukey), ncol = ncol(Tukey)), Tukey) rownames(K3) <- paste(levels(d.fr$treat2)[3],rownames(K1), sep = ":") K4 <- cbind(matrix(0, nrow = nrow(Tukey), ncol = ncol(Tukey)), Tukey) rownames(K4) <- paste(levels(d.fr$treat2)[4],rownames(K1), sep = ":") K <- rbind(K1, K2, K3,K4) colnames(K) <- c(colnames(Tukey), colnames(Tukey)) #K gives me a matrix with the dimension 12 by 6 and this will obviously not work in the next step summary(glht(fit2, linfct = K %*% X)) #### So, my questions is how would a 12 by 12 matrix for K look like, in order to do K %*% X correctly for all levels within and between Tukey adjusted. But since I am not in interested in every *single* comparison within and between, I was wondering to how to come up with a potential maximal but empty matrix and code the comparisons myself. Thanks for any hints! Stefan