R
( lme4
package) 의 선형 혼합 효과 모델에서 사후 테스트를 수행하고 있습니다. 내가 사용하고 multcomp
패키지 ( glht()
후 임시 테스트를 수행하는 기능).
내 실험 설계는 임의의 블록 효과로 반복 측정됩니다. 모델은 다음과 같이 지정됩니다.
mymod <- lmer(variable ~ treatment * time + (1|block), data = mydata, REML = TRUE)
여기에 내 데이터를 첨부하는 대신 패키지 warpbreaks
내에서 호출 된 데이터 를 처리하고 multcomp
있습니다.
data <- warpbreaks
warpbreaks$rand <- NA
"블록"효과를 모방하기 위해 추가 임의 변수를 추가했습니다.
warpbreaks$rand <- rep(c("foo", "bar", "bee"), nrow(warpbreaks)/3)
이것은 내 모델을 모방합니다.
mod <- lmer(breaks ~ tension * wool + (1|rand), data = warpbreaks)
" 추가 Multcomp 예 -2 방법 Anova" 의 예를 알고 있습니다. 이 예는의 레벨 내에서 장력 레벨을 비교 wool
합니다.
내가 반대를 수행하려는 경우 - 수준의 비교 wool
의 수준에서 tension
? (제 경우에는 시간 수준 (3-6 월, 7 월, 8 월) 내에서 치료 수준 (2-0, 1)을 비교하는 것입니다.
그렇게하기 위해 다음 코드를 생각해 냈지만 작동하지 않는 것 같습니다 (아래 오류 메시지 참조).
먼저, 예에서 ( 장소 wool
와 tension
교환 한 장소) :
tmp <- expand.grid(wool = unique(warpbreaks$wool), tension = unique(warpbreaks$tension))
X <- model.matrix(~ tension * wool, data = tmp)
glht(mod, linfct = X)
Tukey <- contrMat(table(warpbreaks$wool), "Tukey")
K1 <- cbind(Tukey, matrix(0, nrow = nrow(Tukey), ncol = ncol(Tukey)))
rownames(K1) <- paste(levels(warpbreaks$tension)[1], rownames(K1), sep = ":")
K2 <- cbind(matrix(0, nrow = nrow(Tukey), ncol = ncol(Tukey)), Tukey)
rownames(K2) <- paste(levels(warpbreaks$tension)[2], rownames(K2), sep = ":")
여기에서 내 자신의 코드 :
K3 <- cbind(matrix(0, nrow = nrow(Tukey), ncol = ncol(Tukey)), Tukey)
rownames(K2) <- paste(levels(warpbreaks$tension)[3], rownames(K3), sep = ":")
K <- rbind(K1, K2, K3)
colnames(K) <- c(colnames(Tukey), colnames(Tukey))
> summary(glht(mod, linfct = K %*% X))
Error in summary(glht(mod, linfct = K %*% X)) :
error in evaluating the argument 'object' in selecting a method for function 'summary': Error in K %*% X : non-conformable arguments