Estou realizando testes post-hoc em um modelo linear de efeitos mistos em R
( lme4
pacote). Estou usando o multcomp
pacote ( glht()
função) para executar os testes post-hoc.
Meu projeto experimental é de medidas repetidas, com um efeito de bloqueio aleatório. Os modelos são especificados como:
mymod <- lmer(variable ~ treatment * time + (1|block), data = mydata, REML = TRUE)
Em vez de anexar meus dados aqui, estou trabalhando com os dados chamados warpbreaks
dentro do multcomp
pacote.
data <- warpbreaks
warpbreaks$rand <- NA
Eu adicionei uma variável aleatória extra para imitar meu efeito de "bloqueio":
warpbreaks$rand <- rep(c("foo", "bar", "bee"), nrow(warpbreaks)/3)
Isso imita meu modelo:
mod <- lmer(breaks ~ tension * wool + (1|rand), data = warpbreaks)
Estou ciente do exemplo em " Exemplos adicionais de multcomp - 2 vias Anova" Este exemplo leva você a uma comparação de níveis de tensão dentro dos níveis de wool
.
E se eu quiser fazer o oposto - comparar os níveis de wool
dentro dos níveis de tension
? (No meu caso, isso seria comparar os níveis de tratamento (dois - 0, 1) dentro dos níveis de tempo (três - junho, julho, agosto).
Eu vim com o código a seguir, mas ele não parece funcionar (veja a mensagem de erro abaixo).
Primeiro, do exemplo (com wool
e tension
lugares trocados):
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 = ":")
Daqui para baixo, meu próprio código:
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
fonte
time
um preditor numérico. Eu suspeito que você queria isso como um fator.help("lsmeans", package = "lsmeans")
evignette("using-lsmeans")
. Há muita documentação e muitos exemplos.