相互作用のある混合効果モデル(lme4)に対するmultcomp :: glhtの事後テスト


10

Rlme4パッケージ)の線形混合効果モデルで事後テストを実行しています。私が使用していmultcompたパッケージ(glht()事後テストを実行する機能)。

私の実験計画は、ランダムなブロック効果を伴う反復測定です。モデルは次のように指定されます。

mymod <- lmer(variable ~ treatment * time + (1|block), data = mydata, REML = TRUE)

ここにデータを添付するのではなくwarpbreaksmultcompパッケージ内で呼び出されたデータを使用しています。

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)を比較することになります。

これを行うために次のコードを考え出しましたが、機能していないようです(以下のエラーメッセージを参照)。

まず、例から(場所wooltension入れ替えて):

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

回答:


6

lsmeansパッケージを使用する方がはるかに簡単です

library(lsmeans)
lsmeans(mod, pairwise ~ tension | wool)
lsmeans(mod, pairwise ~ wool | tension)

すばらしいです。ありがとう。注:このコードは、繰り返し変数を数値(3および6)からアルファベット値(AおよびB)に変更した後でのみ、私のデータに対して機能しました。

まあ、それはとても重要です!それはだから別のモデルtime数値予測因子としては。あなたはそれを要因として欲しかったのではないかと思います。
Russ Lenth、2016

より多くの予測子に一般化するにはどうすればよいですか?たとえば、3つの予測変数がある場合、どのように機能しますか?
持って楽しい

1
@havefunを見てくださいhelp("lsmeans", package = "lsmeans")vignette("using-lsmeans")。たくさんのドキュメントと多くの例があります。
Russ Lenth 2017

1
各メソッドで取得する比較の数を数えます。それらは同じではありません。複数のテストの調整についても確認してください。テストのファミリが大きい場合、調整されたP値は小さいファミリの場合とは異なります。by変数を使用すると、調整は各セットに個別に適用されます。
Russ Lenth 2017
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.