lme4混合モデルの効果のp値(有意性をチェック)を取得する方法は?


56

Rでlme4を使用して混合モデルに適合させる

lmer(value~status+(1|experiment)))

値が連続的であり、ステータスと実験が要因であり、私は得る

Linear mixed model fit by REML 
Formula: value ~ status + (1 | experiment) 
  AIC   BIC logLik deviance REMLdev
 29.1 46.98 -9.548    5.911    19.1
Random effects:
 Groups     Name        Variance Std.Dev.
 experiment (Intercept) 0.065526 0.25598 
 Residual               0.053029 0.23028 
Number of obs: 264, groups: experiment, 10

Fixed effects:
            Estimate Std. Error t value
(Intercept)  2.78004    0.08448   32.91
statusD      0.20493    0.03389    6.05
statusR      0.88690    0.03583   24.76

Correlation of Fixed Effects:
        (Intr) statsD
statusD -0.204       
statusR -0.193  0.476

ステータスの影響が重要であることをどのようにして知ることができますか?Rは値のみを報告し、値は報告しません。ptp


1
この質問に提供された答えを見て、実際にOPがここで何に興味があるのか​​疑問に思います:nullに対する係数のテスト(バニラ nullに対する通常の線形回帰で行い)、または分散の最小化のテスト(多くのタイプのANOVAから得られるテスト)。これら2つは異なることを目指しています。混合効果モデルについてではありませんが、啓発的な答えがここにありますH 0β = β ヌル FtH0:β=βnullF
Firebug

回答:


61

GLMM FAQには、このトピックに関する多くの情報があります。ただし、特定のケースでは、使用することをお勧めします

library(nlme)
m1 <- lme(value~status,random=~1|experiment,data=mydata)
anova(m1)

lmer提供するもの(高速、クロスランダムエフェクトの処理、GLMMなど)を必要としないためです。lmeまったく同じ係数と分散の推定値が得られますが、df値とp値も計算されます(これ、あなたが持っているように見える「古典的な」設計で意味があります)。また、ランダムな用語を検討することもできます~status|experiment(ブロック間のステータス効果の変化を可能にするか、同等に実験ごとのステータスの相互作用を含めます)。上記のポスターも正しいので、t統計値が非常に大きいため、p値は確実に<0.05になりますが、「実際の」p値が必要になると思います。


3
この答えは知りません。lmer同じ種類のp値を簡単に報告できますが、正当な理由はありません。私はそれが私を悩ませている「本当の」p値があるというコメントだと思います。1つの可能なカットオフを見つけることができ、すべての合理的なカットオフが渡されると主張することができます。しかし、本当のp値があると主張することはできません。
ジョン

11
古典的な設計(バランス、入れ子など)の場合、実際のp-vaue、つまり、帰無仮説(beta = 0)の場合に観測された大きさまたはそれ以上のベータの推定値を取得する確率があると実際に主張できると思います指定されたモデルは、古典的な分母DFを計算するためのいくつかのヒューリスティックがうまくいく1のとき、それはlme4モデル構造から、一般的に検出することが困難だから偽だった... lme4は、これらの分母のDFを提供していない、私は...、と考えています
ベンボルカー

summary(m1)代わりに試してください(nlmeパッケージでこれを使用します)
イエナ

36

パッケージlmerTestを使用できます。インストール/ロードするだけで、lmerモデルが拡張されます。例えば

library(lmerTest)
lmm <- lmer(value~status+(1|experiment)))
summary(lmm)
anova(lmm)

p値の結果が得られます。p値が正しいことを示す場合は少し議論の余地がありますが、必要な場合はこれを取得する方法です。


28

p値の放棄を処理できる場合(および実行する必要がある場合)、次の方法でステータスの影響の証拠の重みを表す尤度比を計算できます。

#compute a model where the effect of status is estimated
unrestricted_fit = lmer(
    formula = value ~ (1|experiment) + status
    , REML = F #because we want to compare models on likelihood
)
#next, compute a model where the effect of status is not estimated
restricted_fit = lmer(
    formula = value ~ (1|experiment)
    , REML = F #because we want to compare models on likelihood
)
#compute the AIC-corrected log-base-2 likelihood ratio (a.k.a. "bits" of evidence)
(AIC(restricted_fit)-AIC(unrestricted_fit))*log2(exp(1))

16
その尤度比漸近している、すなわち残留分散の推定値の不確実性を考慮していない...注意
ベンBolker

5
あなたの最後の行に興味があります。結果の解釈は何ですか?それについて調べることができるソースはありますか?
mguzmann

13

問題は、これらのモデルのp値の計算が簡単ではないことです。パッケージの作成者がp値を出力に含めないように意図的に選択したため、ここで議論を参照してくださいlme4。これらの計算方法を見つけることができますが、必ずしも正しいとは限りません。


9

あなたが何を求めているか考えてください。ステータスの効果の全体的なp値が0.05などの任意のカットオフ値を通過するかどうかだけを知りたい場合は、簡単です。最初に、全体的な効果を調べます。から取得できますanova

m <- lmer(...) #just run your lmer command but save the model
anova(m)

これで、F値が得られました。あなたはそれを取って、いくつかのFテーブルで調べることができます。できるだけ低いデノムを選択してください。自由度。カットオフは約20になります。あなたのFはそれよりも大きいかもしれませんが、私は間違っている可能性があります。そうではない場合でも、ここにある実験の数を使用して、ここで従来のANOVA計算からの自由度の数を見てください。その値を固定すると、カットオフのために約5になります。これで、簡単に学習に合格できます。ANOVAがモデル化する集計値とは対照的に、すべてのデータポイントをモデル化しているため、モデルの「真の」dfはそれよりも高くなります。

実際に正確なp値が必要な場合は、理論的な説明をしない限り、そのようなことはありません。Pinheiro&Bates(2001年、およびおそらくこのテーマに関するいくつかの書籍...これらの回答の他のリンクを参照)を読んで、特定のdfについての議論を思いついたら、それを使用できます。しかし、実際には正確なp値を探しているわけではありません。したがって、正確なp値を報告するべきではなく、カットオフが渡されることのみを報告する必要があるため、これについて言及します。

マイク・ローレンスの答えを本当に考慮する必要があります。なぜなら、データから抽出する最後の最も重要な情報としてp値のパスポイントに固執するという全体の考えは、一般に見当違いです(しかし、 tは本当に十分な情報を持っています)。マイクは、興味深いLR計算のペットバージョンを使用していますが、多くのドキュメントを見つけるのは難しいかもしれません。AICを使用してモデルの選択と解釈を検討する場合は、それを気に入るかもしれません。


9

編集:このメソッドは、lme4の新しいバージョンではサポートされなくなりました。pbx101 によるこの回答で提案されているように、lmerTestパッケージを使用してください。

あるポスト p値が表示されない理由についてlme4の作者によるRのリストには。代わりにMCMCサンプルを使用することをお勧めします。これには、languageRパッケージのpvals.fncを使用します。

library("lme4")
library("languageR")
model=lmer(...)
pvals.fnc(model)

例と詳細については、http://www2.hawaii.edu/~kdrager/MixedEffectsModels.pdfを参照してください


3
lme4はこれをサポートしなくなりました。この投稿は、私がちょうどやったようにこれを見つけなくてはならない人々を助けるために更新されるかもしれません。
timothy.s.lau

5

の複合効果がstatus重要な効果を持っているかどうかを知りたいvalueですか?その場合Anovacarパッケージ内の関数を使用できます(anovabase の関数と混同しないでくださいR)。

dat <- data.frame(
  experiment = sample(c("A","B","C","D"), 264, replace=TRUE), 
  status = sample(c("D","R","A"), 264, replace=TRUE), 
  value = runif(264)   
)
require(lme4)
(fm <- lmer(value~status+(1|experiment), data=dat))

require(car)
Anova(fm)

パッケージを?Anovaロードした後に見てくださいcar


car::Anova()ミシェルがリンクするp値の計算を取り巻くスティッキーな問題をどのように回避するのでしょうか?
マイクローレンス

私はしませんが、私の推測では、スティッキーな問題を無視することで回避します!元の投稿を読み直して、質問を誤解したかもしれないと感じています。OPが固定効果パラメーターの正確なp値を求めている場合、s / heは問題を抱えています。ただし、OPが有意であるかどうかだけを知りたい場合、t値は正確なp値の計算方法の不確実性よりも大きいと思います。(言い換えれば、それらは重要です。)
smillig

1
ANOVA計算にリダイレクトして統計の全体的な効果を確認することは間違いなく良い考えだったと思いますが、p値の微調整が良いかどうかはわかりません。通常のanovaコマンドはFを提供します。
ジョン

これは見かけよりも少し粘着性があると思います。ANOVAの実行は、分散を最小限に抑えたい場合に有効ですが、質問文から、OPは変数の限界効果、つまりヌルに対する係数のテストを確立したいと思います。
Firebug

0

この関数pvals.fncはlme4でサポートされなくなりました。パッケージlmerTestパッケージを使用すると、他の方法を使用してp値を計算できます(Kenward-Rogerの近似など)。

model=lmer(value~status+1|experiment)
anova(model, ddf="Kenward-Roger")

0

afexパッケージをロードするだけで、lme4パッケージのlmer関数の出力にp値が出力されます(afexを使用する必要はありません;ロードするだけです):

library(lme4)  #for mixed model
library(afex)  #for p-values

これにより、固定効果のlmer(yourmodel)の出力にp値列が自動的に追加されます。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.