Я виконую пост-спеціальні тести на лінійній моделі зі змішаними ефектами в R
( lme4
пакет). Я використовую 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)
Мені відомо про приклад у " Додаткові приклади багатокомпонентної роботи - 2 способи Anova" Цей приклад приводить вас до порівняння рівнів напруженості в межах рівнів wool
.
Що робити, якщо я хочу зробити зворотне - порівняти рівні в wool
межах рівнів tension
? (У моєму випадку це було б порівнянням рівнів лікування (два - 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