Tôi đang thực hiện các bài kiểm tra hậu hoc trên mô hình hiệu ứng hỗn hợp tuyến tính trong R
( lme4
gói). Tôi đang sử dụng multcomp
gói ( glht()
chức năng) để thực hiện các bài kiểm tra sau hoc.
Thiết kế thử nghiệm của tôi là các biện pháp lặp đi lặp lại, với hiệu ứng khối ngẫu nhiên. Các mô hình được chỉ định là:
mymod <- lmer(variable ~ treatment * time + (1|block), data = mydata, REML = TRUE)
Thay vì đính kèm dữ liệu của tôi ở đây, tôi đang xử lý dữ liệu được gọi warpbreaks
trong multcomp
gói.
data <- warpbreaks
warpbreaks$rand <- NA
Tôi đã thêm một biến ngẫu nhiên bổ sung để bắt chước hiệu ứng "khối" của mình:
warpbreaks$rand <- rep(c("foo", "bar", "bee"), nrow(warpbreaks)/3)
Mô hình này bắt chước mô hình của tôi:
mod <- lmer(breaks ~ tension * wool + (1|rand), data = warpbreaks)
Tôi biết về ví dụ này trong " Ví dụ đa thành phần bổ sung- Anova 2 cách" Ví dụ này dẫn bạn đến việc so sánh các mức độ căng thẳng trong các mức wool
.
Điều gì xảy ra nếu tôi muốn làm ngược lại - so sánh các cấp độ wool
trong các cấp độ tension
? (Trong trường hợp của tôi, điều này sẽ so sánh các mức độ điều trị (hai - 0, 1) trong các mức độ thời gian (ba - tháng sáu, tháng bảy, tháng tám).
Tôi đã đưa ra mã sau đây để làm như vậy, nhưng nó dường như không hoạt động (xem thông báo lỗi bên dưới).
Đầu tiên, từ ví dụ (có wool
và tension
đổi chỗ):
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 = ":")
Từ đây đến dưới cùng, mã của riêng tôi:
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