マルチレベルモデルで、ランダム効果相関パラメーターを推定する場合と推定しない場合の実際的な意味は何ですか?


27

マルチレベルモデルで、ランダム効果相関パラメーターを推定する場合と推定しない場合の実際的および解釈関連の意味は何ですか?これを尋ねる実際的な理由は、Rのlmerフレームワークでは、パラメーター間の相関のモデルで推定が行われる場合、MCMC手法を介してp値を推定する実装された方法がないことです。

たとえば、この例を見ると(以下に引用する部分)、M2対M3の実際的な意味は何ですか。明らかに、あるケースではP5が推定されず、別のケースではP5が推定されます。

ご質問

  1. 実用的な理由(MCMC手法でp値を取得したいという願望)のため、P5が実質的にゼロでなくても、変量効果間の相関なしにモデルを近似したい場合があります。これを行い、MCMC手法を介してp値を推定する場合、結果は解釈可能ですか?(私は@Ben Bolkerが以前と言及している知っている「私はそうする衝動を理解するものの、MCMCで有意性検定を組み合わせること(信頼区間を得ることがよりサポート可能である)、統計的に、少し支離滅裂である」それはあなたがよく眠れるようになりますもしそうなら、夜のふりで信頼区間を言った。)
  2. P5を推定できない場合、それは0であると断定することと同じですか?
  3. P5が実際にゼロ以外の場合、P1-P4の推定値はどのように影響を受けますか?
  4. P5が実際にゼロ以外の場合、P1-P4の誤差の推定値はどのように影響を受けますか?
  5. P5が実際にゼロ以外の場合、モデルの解釈にP5が含まれていないのはどのような点ですか?

@Mike Lawrenceの答えから借ります(これを自由に完全なモデル表記に置き換えるよりも知識が豊富な人は、合理的な忠実度でこれを行うことができるとは完全に確信していません):

M2:( V1 ~ (1|V2) + V3 + (0+V3|V2)推定値P1-P4)

M3:( V1 ~ (1+V3|V2) + V3推定P1-P5)

推定される可能性のあるパラメーター:

P1:グローバルインターセプト

P2:V2のランダム効果インターセプト(つまり、V2の各レベルに対して、そのレベルのインターセプトのグローバルインターセプトからの偏差)

P3:V3の効果(勾配)の単一のグローバル推定

P4:V2の各レベル内のV3の効果(より具体的には、特定のレベル内のV3効果がV3のグローバル効果から逸脱する程度) V2の。

P5:V2のレベル全体のインターセプト偏差とV3偏差の相関

lmerを使用したRの付随コードに加えて、十分に大規模で幅広いシミュレーションから得られた回答は受け入れられます。



@JackTanner:あなたもそこに満足しているようには見えません。この質問への回答であなたの懸念も扱われたら素晴らしいと思います。
russellpierce

4
あなたの質問の多くに正確な答えを与える-「_______の方法でモデルを誤って指定すると_______に何が起こるか」-おそらく難解な理論を掘り下げないと、おそらく不可能です(これは何かが可能な特別な場合かもしれません-Iわからない)。おそらく使用する戦略は、勾配と切片が高度に相関している場合にデータをシミュレートし、2つを無相関に制約するモデルに適合させ、結果をモデルが正しく指定されている場合と比較することです。
マクロ

4
あなたの質問について、私は80(しかし100ではない)です。#2、はい、相関を推定しない場合、強制的に0にします。残りについては、相関が実際に正確に 0でない場合、データの非独立性を誤って指定しています。それにもかかわらず、ベータは偏りがありませんが、p値はオフになります(高すぎるか低すぎるかは依存し、認識できない場合があります)。したがって、ベータ版の解釈は通常どおりに進めることができますが、「重要性」の解釈は不正確になります。
GUNG -復活モニカ

2
@Macro:私の希望は、賞金がシミュレーションではなく理論に基づいた良い答えを解き放つかもしれないということでした。シミュレーションでは、適切なエッジケースを選択しなかったことが頻繁に懸念されます。私はシミュレーションを実行するのが得意ですが、いつも少し...正しいシミュレーションをすべて実行しているのかどうか不確かです(ただし、それをジャーナルエディターに任せて決定することもできます)。どのシナリオを含めるかについて、別の質問をしなければならない場合があります。
ラッセルピアス

回答:


16

lme4に含まれるsleepstudyデータを検討してください。ベイツは、lme4に関する彼のオンラインブックでこれについて説明しています。第3章では、データの2つのモデルを検討します。

M0反応1+日々+1|件名+0+日々|件名

そして

MA反応1+日々+日々|件名

この研究には18人の被験者が参加し、10日間睡眠不足状態で研究しました。反応時間は、ベースラインとその後の日に計算されました。反応時間と睡眠不足の期間との間には明確な効果があります。被験者間にも大きな違いがあります。モデルAは、ランダムインターセプトとスロープ効果の間の相互作用の可能性を考慮します。たとえば、反応時間が悪い人は睡眠不足の影響により深刻に苦しむと想像してください。これは、ランダム効果に正の相関があることを意味します。

ベイツの例では、ラティスプロットから明らかな相関関係はなく、モデル間に有意差はありませんでした。しかし、上記の質問を調査するために、私は睡眠研究の適合値を取り、相関関係を調べ、2つのモデルのパフォーマンスを調べることにしました。

画像からわかるように、反応時間が長くなるとパフォーマンスが大幅に低下します。シミュレーションに使用された相関は0.58でした

ここに画像の説明を入力してください

私は人工データの適合値に基づいて、lme4のsimulateメソッドを使用して、1000個のサンプルをシミュレートしました。M0とMaをそれぞれに当てはめ、結果を調べました。元のデータセットには180の観測(18人の被験者ごとに10)があり、シミュレートされたデータは同じ構造を持ちます。

一番下の行は、ほとんど違いがないということです。

  1. 固定パラメーターは、両方のモデルでまったく同じ値を持ちます。
  2. ランダム効果はわずかに異なります。シミュレートされたサンプルごとに、18個の切片と18個の勾配ランダム効果があります。サンプルごとに、これらの効果は強制的に0に加算されます。つまり、2つのモデルの平均差は(人工的に)0です。しかし、分散と共分散は異なります。MAの下での共分散の中央値は104でしたが、M0では84でした(実際の値は112)。スロープとインターセプトの分散はMAよりM0で大きく、おそらく自由共分散パラメーターがない場合に必要な余地のあるゆらぎを得るためです。
  3. lmerのANOVAメソッドは、スロープモデルをランダムインターセプトのみのモデル(睡眠不足による影響なし)と比較するためのF統計量を提供します。明らかに、この値は両方のモデルの下で非常に大きかったが、通常は(常にではないが)MAの下で大きかった(平均62対平均55)。
  4. 固定効果の共分散と分散は異なります。
  5. 約半分の時間で、MAが正しいことがわかります。M0とMAを比較するためのp値の中央値は0.0442です。意味のある相関関係と180のバランスの取れた観測値が存在するにもかかわらず、正しいモデルは約半分の時間しか選択されません。
  6. 予測値は2つのモデルで異なりますが、わずかに異なります。予測間の平均差は0で、sdは2.7です。予測値自体のsdは60.9です

なぜこれが起こるのですか?@gungは、合理的に、相関の可能性を含めないと、ランダム効果が無相関になることを推測しました。おそらくそうすべきだ。ただし、この実装では、ランダム効果を相関させることができます。つまり、モデルに関係なく、データがパラメーターを正しい方向に引き出すことができます。間違ったモデルの誤りが尤度に現れるため、そのレベルで2つのモデルを(場合によっては)区別することができます。混合効果モデルは、基本的に各対象に線形回帰を当てはめており、モデルがどうあるべきかによって影響を受けます。間違ったモデルは、適切なモデルの下で得られるよりも妥当性の低い値の適合を強制します。しかし、パラメータは、一日の終わりに、実際のデータへの適合によって管理されます。

ここに画像の説明を入力してください

これが私のやや不格好なコードです。その考えは、睡眠研究データを適合させ、同じパラメーターを使用して、ランダム効果に対してより大きな相関関係を持つシミュレーションデータセットを構築することでした。そのデータセットはsimulate.lmer()に送られ、1000サンプルをシミュレートし、それぞれが両方向に適合しました。フィットしたオブジェクトをペアリングしたら、フィットのさまざまな機能を引き出して、t検定などを使用してそれらを比較できます。

    # Fit a model to the sleep study data, allowing non-zero correlation
fm01 <- lmer(Reaction ~ 1 + Days +(1+Days|Subject), data=sleepstudy, REML=FALSE)
# Now use this to build a similar data set with a correlation = 0.9
# Here is the covariance function for the random effects
# The variances come from the sleep study. The covariance is chosen to give a larger correlation
sigma.Subjects <- matrix(c(565.5,122,122,32.68),2,2) 
# Simulate 18 pairs of random effects
ranef.sim <- mvrnorm(18,mu=c(0,0),Sigma=sigma.Subjects)
# Pull out the pattern of days and subjects.
XXM <- model.frame(fm01) 
n <- nrow(XXM) # Sample size
# Add an intercept to the model matrix.
XX.f <- cbind(rep(1,n),XXM[,2])
# Calculate the fixed effects, using the parameters from the sleep study. 
yhat <- XX.f %*%  fixef(fm01 )
# Simulate a random intercept for each subject
intercept.r <- rep(ranef.sim[,1], each=10) 
# Now build the random slopes
slope.r <- XXM[,2]*rep(ranef.sim[,2],each=10)
# Add the slopes to the random intercepts and fixed effects
yhat2 <- yhat+intercept.r+slope.r
# And finally, add some noise, using the variance from the sleep study
y <- yhat2 + rnorm(n,mean=0,sd=sigma(fm01))
# Here is new "sleep study" data, with a stronger correlation.
new.data <- data.frame(Reaction=y,Days=XXM$Days,Subject=XXM$Subject)
# Fit the new data with its correct model
fm.sim <- lmer(Reaction ~ 1 + Days +(1+Days|Subject), data=new.data, REML=FALSE)
# Have a look at it
xyplot(Reaction ~ Days | Subject, data=new.data, layout=c(6,3), type=c("p","r"))
# Now simulate 1000 new data sets like new.data and fit each one
# using the right model and zero correlation model.
# For each simulation, output a list containing the fit from each and
# the ANOVA comparing them.
n.sim <- 1000
    sim.data <- vector(mode="list",)
    tempReaction <- simulate(fm.sim, nsim=n.sim)
    tempdata <- model.frame(fm.sim)
    for (i in 1:n.sim){
        tempdata$Reaction <- tempReaction[,i]
			output0 <- lmer(Reaction ~ 1 + Days +(1|Subject)+(0+Days|Subject), data = tempdata, REML=FALSE)
			output1 <- lmer(Reaction ~ 1 + Days +(Days|Subject), data=tempdata, REML=FALSE)
			temp <- anova(output0,output1)
			pval <- temp$`Pr(>Chisq)`[2]
        sim.data[[i]] <- list(model0=output0,modelA=output1, pvalue=pval)
    }

1
それは面白い仕事です。ありがとうございました。答えを受け入れる前に、今後数日間で他のコメントがどのようなものになり、他のケースに物事がどのように一般化するのかを見たいです。また、回答に関連するRコードを含め、使用したlmerのバージョンを指定することを検討しますか?同じシミュレートされたケースをPROC MIXEDにフィードして、不特定のランダム効果相関をどのように処理するかを確認することは興味深いでしょう。
ラッセルピアス14年

1
@rpierceリクエストに応じてコードサンプルを追加しました。私はもともとLaTeX / Sweaveで書いたので、コード行には自分へのコメントが織り込まれていました。2014
Placidia

@Benは、2番目の段落で「モデルAが許可する」と言ったとき、MOであってはなりませんか
nzcoops

私は、テキストが正しいだと思う(私はこの質問のためにしたすべての式を少し飾り立てるた)
ベン・Bolker

+6。優れた答えです。古くて価値のある質問に注目してください。
アメーバは

4

Placidiaは、sleepstudyデータセットに基づいてシミュレートされたデータを使用して、すでに完全な回答を提供しています。sleepstudyデータを使用するもう1つの(それほど厳密ではない)回答を次に示します。

ランダムな予測変数を「シフト」することにより、ランダムな切片とランダムな傾きの間の推定相関に影響を与えることができることがわかります。以下のモデルの結果fm1fm2ご覧ください。

library(lmer)

#Fit Models
fm1 <- lmer(Reaction ~ Days + (Days | Subject), sleepstudy)
k <- 3 # Shift "Days" by an arbitrary amount
fm2 <- lmer(Reaction ~ I(Days + k) + (I(Days + k)| Subject), sleepstudy)

fm1 # Model Output
# Linear mixed model fit by REML ['lmerMod']
# Formula: Reaction ~ Days + (Days | Subject)
# Data: sleepstudy
# REML criterion at convergence: 1743.628
# Random effects:
#   Groups   Name        Std.Dev. Corr
# Subject  (Intercept) 24.740       
# Days         5.922   0.07
# Residual             25.592       
# Number of obs: 180, groups:  Subject, 18
# Fixed Effects:
#   (Intercept)         Days  
# 251.41        10.47

fm2 # Model Output
# Linear mixed model fit by REML ['lmerMod']
# Formula: Reaction ~ I(Days + k) + (I(Days + k) | Subject)
# Data: sleepstudy
# REML criterion at convergence: 1743.628
# Random effects:
#   Groups   Name        Std.Dev. Corr 
# Subject  (Intercept) 29.498        
# I(Days + k)  5.922   -0.55
# Residual             25.592        
# Number of obs: 180, groups:  Subject, 18
# Fixed Effects:
#   (Intercept)  I(Days + k)  
# 220.00        10.47

# Random effects from both models
cbind(ranef(fm1)$Subject,ranef(fm2)$Subject)
# (Intercept)        Days (Intercept) I(Days + k)
# 308   2.2585654   9.1989719 -25.3383538   9.1989727
# 309 -40.3985769  -8.6197032 -14.5394628  -8.6197043
# 310 -38.9602458  -5.4488799 -22.6136027  -5.4488807
# 330  23.6904985  -4.8143313  38.1334933  -4.8143315
# 331  22.2602027  -3.0698946  31.4698868  -3.0698946
# 332   9.0395259  -0.2721707   9.8560377  -0.2721706
# 333  16.8404311  -0.2236244  17.5113040  -0.2236243
# 334  -7.2325792   1.0745761 -10.4563076   1.0745761
# 335  -0.3336958 -10.7521591  31.9227854 -10.7521600
# 337  34.8903508   8.6282840   9.0054946   8.6282850
# 349 -25.2101104   1.1734142 -28.7303527   1.1734141
# 350 -13.0699567   6.6142050 -32.9125736   6.6142054
# 351   4.5778352  -3.0152572  13.6236077  -3.0152574
# 352  20.8635924   3.5360133  10.2555505   3.5360138
# 369   3.2754530   0.8722166   0.6588028   0.8722167
# 370 -25.6128694   4.8224646 -40.0802641   4.8224648
# 371   0.8070397  -0.9881551   3.7715053  -0.9881552
# 372  12.3145393   1.2840297   8.4624492   1.2840300

モデル出力から、ランダム分散相関が変更されていることがわかります。ただし、勾配(固定およびランダム)は同じままで、残差分散の推定値も同じです。インターセプト(固定およびランダム)推定値は、シフトされた変数に応じて変化しました。

LMMのランダムなインターセプトとスロープの共分散の非相関化については、ジャックワイス博士の講義ノート説明しています。ワイスは、この方法で分散相関を減らすことは、とりわけモデルの収束に役立つ場合があることに注意しています。

上記の例は、ランダム相関(パラメーター「P5」)を変化させます。OPのQ3に部分的に対処すると、上記の出力から次のことがわかります。

#   Parameter           Status
=================================
P1  Fixed Intercept     Affected
P2  Random Intercepts   Affected
P3  Fixed Slope         Not Affected
P4  Random Slopes       Not Affected
P5  Random Correlation  Affected

この長年の質問にシグナルを追加していただきありがとうございます!
ラッセルピアス

注:ジャックワイスの優れた講義とクラスの演習/メモはすべて、この投稿に
-theforestecologist

次に、問題のデータをどのように解釈する必要がありますか?「真の」相関とは何ですか?最初のモデルからですか、それとも2番目のモデルからですか?またはBLUPからのものですか?
User33268
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.