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)
「追加のMultcompの例-2 Way 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