lme4を使用した混合効果モデルの交互作用項のP値


10

私はを使用lme4していくつかの行動データを分析していますがR、主にBodo Winterの優れたチュートリアルに従っていますが、インタラクションを適切に処理しているかどうかわかりません。さらに悪いことに、この研究に関与している他の誰も混合モデルを使用していないので、物事が正しいことを確認することに関して、私は少しドリフトしています。

助けを求める叫びを投稿するのではなく、私は問題を解釈するために最善の努力をし、それからあなたの集団的な修正を頼むべきだと思いました。他のいくつかのサイドは次のとおりです。

  • 執筆中に、この質問を見つけました。nlme相互作用項のp値をより直接的に与えることを示していますが、との関係で尋ねることは依然として有効だと思いますlme4
  • Livius'この質問への回答には、今後数日で読み進めようとする追加の読み物へのリンクが含まれているので、進展があった場合はコメントします。

私のデータでは、私は、従属変数持ちdvcondition操作(高になるはずである0 =制御、1 =実験条件、dv)、また、ラベルされた前提条件、appropriateコード化された臨床試験:1このためには、効果を示す必要がありますが、試験がコード化された0かもしれないが重要な要素がないためです。

また、各対象内の、および解決された14の各問題内の相関値を反映するsubject、およびの2つのランダムな切片も含めました(各参加者は、各問題のコントロールバージョンと実験バージョンの両方を解決しました)。targetdv

library(lme4)
data = read.csv("data.csv")

null_model        = lmer(dv ~ (1 | subject) + (1 | target), data = data)
mainfx_model      = lmer(dv ~ condition + appropriate + (1 | subject) + (1 | target),
                         data = data)
interaction_model = lmer(dv ~ condition + appropriate + condition*appropriate +
                              (1 | subject) + (1 | target), data = data)
summary(interaction_model)

出力:

## Linear mixed model fit by REML ['lmerMod']
## ...excluded for brevity....
## Random effects:
##  Groups   Name        Variance Std.Dev.
##  subject  (Intercept) 0.006594 0.0812  
##  target   (Intercept) 0.000557 0.0236  
##  Residual             0.210172 0.4584  
## Number of obs: 690, groups: subject, 38; target, 14
## 
## Fixed effects:
##                                Estimate Std. Error t value
## (Intercept)                    0.2518     0.0501    5.03
## conditioncontrol               0.0579     0.0588    0.98
## appropriate                   -0.0358     0.0595   -0.60
## conditioncontrol:appropriate  -0.1553     0.0740   -2.10
## 
## Correlation of Fixed Effects:
## ...excluded for brevity.

次に、ANOVA interaction_modelmainfx_model、よりもはるかによく適合していることを示しています。これから、有意な相互作用が存在すると結論付けます(p = .035)。

anova(mainfx_model, interaction_model)

出力:

## ...excluded for brevity....
##                   Df AIC BIC logLik deviance Chisq Chi Df Pr(>Chisq)  
## mainfx_model       6 913 940   -450      901                          
## interaction_model  7 910 942   -448      896  4.44      1      0.035 *
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

そこから、appropriate要件が満たされているデータのサブセット(つまりappropriate = 1)を分離し、それがnullモデルとcondition、効果として含むモデルに適合し、ANOVAを使用して2つのモデルを再度比較します。condition重要な予測因子です。

good_data = data[data$appropriate == 1, ]
good_null_model   = lmer(dv ~ (1 | subject) + (1 | target), data = good_data)
good_mainfx_model = lmer(dv ~ condition + (1 | subject) + (1 | target), data = good_data)

anova(good_null_model, good_mainfx_model)

出力:

## Data: good_data
## models:
## good_null_model: dv ~ (1 | subject) + (1 | target)
## good_mainfx_model: dv ~ condition + (1 | subject) + (1 | target)
##                   Df AIC BIC logLik deviance Chisq Chi Df Pr(>Chisq)  
## good_null_model    4 491 507   -241      483                          
## good_mainfx_model  5 487 507   -238      477  5.55      1      0.018 *
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

p値の詳細については、この質問を確認してください。stats.stackexchange.comlme4 / questions
Tim

lmerTest :: anova()を使用すると、各項のp値を含むanovaテーブルが得られます。これにより、モデル全体を比較するのではなく、相互作用を直接調べることができます。リンクされた質問@Timへのこの回答を参照してください:stats.stackexchange.com/a/118436/35304
Sawyer

回答:


3

ここで言うことはあまりありません。あなたは良い仕事をしたと思います。

人々が効果をテストし、複雑な混合効果モデルのp値を取得するために議論したいくつかの方法があります。ここに良い概要があります。計算量の多い方法(ブートストラップ法またはベイジアン法)を使用するのが最善ですが、これはほとんどの人にとってより高度です。2番目に優れた(そして最も便利な)方法は、尤度比検定を使用することです。それがanova()(技術的には?anova.merMod())が行っていることです。制限された最尤ではなく、完全な最尤で適合したモデルの尤度比検定のみを使用することが重要です(REML)。一方、最終モデルと解釈にはREMLを使用します。これは多くの人々を混乱させます。あなたの出力では、我々はオプションに設定されているため、これは(あなたがREMLであなたのモデルに合うことがわかりTRUE、デフォルトでlmer()このような一般的な間違いですので。テストが無効であることを意味するということが、anova.merMod()含まれているrefitことにより、引数をデフォルトはに設定されてTRUEおり、ユーザーはそれを変更しなかったため、パッケージ開発者の予見により、そこに保存されました。

インタラクションを展開するための戦略については、あなたがやったことは問題ありません。インタラクションはテストにすべてのデータを使用することを覚えておいてください。重要な相互作用をすることは可能ですが、層別化テストのいずれも重要ではなく、一部の人々を混乱させます。(しかし、それはあなたには起こらなかったようです。)


0

私は初心者で、Zuurらのアドバイスに従います。他の線形モデルに階層エラー構造を追加する必要があるときの代わりにlmenlmeパッケージから使用しますlme4。私の反応はかなりずれているかもしれません。

2つのコメント:

(1)conditionサブセットでappropriate==1のみテストすることが意味があるかどうかはわかりません。主効果のp値を取得する場合Anovaは、「car」パッケージから使用できます。

require(car)
Anova(M,type="III")# type III Sum of Squares. M was fitted using method=REML

相互作用を解決したい場合は、ペアの比較を直接(?)実行するか、両方のサブセットで(つまり、サブセットのを使用してappropriate==0)実行したことを実行できます。

(2)(1 | subject) + (1 | target)は、最良のエラー構造であると想定するのではなく、最初にエラー構造を選択することをお勧めします。あなたが書いたものから、私conditionはそれが被験者間要因である一方appropriateで、被験者間または目標間要因のどちらかであると私は収集します。たとえば、被験者内因子および/または標的内因子に勾配を追加することができます。たとえば、dv ~ condition + appropriate + (1+condition | subject) + (1 | target)被験者内因子にランダムな勾配を追加しますcondition。被験者間/目標間の因子に勾配は必要ありません。

乾杯


ありがとう。ではないだろうAnovaだけで被験者内のふりをして-target相関関係があるというわけではないですか。データのみを使用して分析を繰り返す理由appropriate==1は、使用した多くの材料がポストテストで問題があることが示されているため、「不適切」であるということです。最後に、モデルがランダムスロープなしでよりよくフィットするという単純な理由で、ランダムスロープを使用していません。
Eoin 14
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.