lmerTest :: anovaの自由度は正しいですか?RM-ANOVAとは大きく異なります


10

Rでの反応時間実験の結果を分析しています。

私は反復測定ANOVAを実行しました(2レベルの被験者内因子1つと2レベルの被験者間因子1つ)。私は同様の線形混合モデルを実行し、lmerの結果をを使用してANOVA表の形式で要約したいと思いましたlmerTest::anova

誤解しないでください。同じ結果になるとは思っていませんでしたが、結果の自由度についてはわかりませんlmerTest::anovaそれは、主題レベルでの集約のない分散分析を反映しているように思えます。

混合効果モデルの自由度を計算するのは難しいことを私は知っていlmerTest::anovaますが、更新されたものの1つの可能な解決策として言及されています?pvaluesトピック(lme4パッケージ)ます。

この計算は正しいですか?の結果はlmerTest::anova指定されたモデルを正しく反映していますか?

アップデート:個人差を大きくしました。の自由度はlmerTest::anova単純なanovaとは異なりますが、なぜ被験者内因子/相互作用に対してそれらがそれほど大きいのかはまだわかりません。

# mini example with ANT dataset from ez package
library(ez); library(lme4); library(lmerTest)

# repeated measures ANOVA with ez package
data(ANT)
ANT.2 <- subset(ANT, !error)
# update: make individual differences larger
baseline.shift <- rnorm(length(unique(ANT.2$subnum)), 0, 50)
ANT.2$rt <- ANT.2$rt + baseline.shift[as.numeric(ANT.2$subnum)]

anova.ez <- ezANOVA(data = ANT.2, dv = .(rt), wid = .(subnum), 
  within = .(direction), between = .(group))
anova.ez

# similarly with lmer and lmerTest::anova
model <- lmer(rt ~ group * direction + (1 | subnum), data = ANT.2)
lmerTest::anova(model)

# simple ANOVA on all available data
m <- lm(rt ~ group * direction, data = ANT.2)
anova(m)

上記のコードの結果[ 更新 ]:

anova.ez

$ ANOVA

           Effect DFn DFd         F          p p<.05          ges
2           group   1  18 2.6854464 0.11862957       0.1294475137
3       direction   1  18 0.9160571 0.35119193       0.0001690471
4 group:direction   1  18 4.9169156 0.03970473     * 0.0009066868

lmerTest :: anova(モデル)

Analysis of Variance Table of type 3  with  Satterthwaite 
approximation for degrees of freedom
                Df Sum Sq Mean Sq F value Denom Pr(>F)
group            1  13293   13293  2.6830    18 0.1188
direction        1   1946    1946  0.3935  5169 0.5305
group:direction  1  11563   11563  2.3321  5169 0.1268

anova(m)

Analysis of Variance Table

Response: rt
                  Df   Sum Sq Mean Sq  F value Pr(>F)    
group              1  1791568 1791568 242.3094 <2e-16 ***
direction          1      728     728   0.0985 0.7537    
group:direction    1    12024   12024   1.6262 0.2023    
Residuals       5187 38351225    7394                    
---
Signif. codes:  0***0.001**0.01*0.05 ‘.’ 0.1 ‘ ’ 1

回答:


13

それlmerTestezanovaそれを正しくしていると思います、そしてこの場合それを間違っていると思います

  • からの結果 lmerTest私の直感/理解に同意し
  • lmerTest(SatterthwaiteとKenward-Roger)の2つの異なる計算は同意します
  • 彼らも同意する nlme::lme
  • それを実行すると、ezanova警告が表示されますが、完全には理解できませんが、無視してはいけません...

再実行の例:

library(ez); library(lmerTest); library(nlme)
data(ANT)
ANT.2 <- subset(ANT, !error)
set.seed(101)  ## for reproducibility
baseline.shift <- rnorm(length(unique(ANT.2$subnum)), 0, 50)
ANT.2$rt <- ANT.2$rt + baseline.shift[as.numeric(ANT.2$subnum)]

実験計画を理解する

with(ANT.2,table(subnum,group,direction))

したがって、個体(subnum)は対照群または治療群のいずれかに配置されているように見え、それぞれが両方向についてテストされます-つまり、方向は個体内でテストできます(分母dfは大きい)が、グループとグループ:方向は個人

(anova.ez <- ezANOVA(data = ANT.2, dv = .(rt), wid = .(subnum), 
    within = .(direction), between = .(group)))
## $ANOVA
##            Effect DFn DFd         F          p p<.05          ges
## 2           group   1  18 2.4290721 0.13651174       0.1183150147
## 3       direction   1  18 0.9160571 0.35119193       0.0002852171
## 4 group:direction   1  18 4.9169156 0.03970473     * 0.0015289914

ここで私はWarning: collapsing data to cell means. *IF* the requested effects are a subset of the full design, you must use the "within_full" argument, else results may be inaccurate. 分母DFが少しファンキーに見えます(すべて18に等しい):独立してテストできるdirectionおよびgroup:directionの方が大きいはずです(ただし(direction|subnum)、モデルに追加した場合は小さくなります)?

# similarly with lmer and lmerTest::anova
model <- lmer(rt ~ group * direction + (1 | subnum), data = ANT.2)
lmerTest::anova(model)
##                 Df  Sum Sq Mean Sq F value Denom Pr(>F)
## group            1 12065.7 12065.7  2.4310    18 0.1364
## direction        1  1952.2  1952.2  0.3948  5169 0.5298
## group:direction  1 11552.2 11552.2  2.3299  5169 0.1270

Dfここの列は分子dfを参照し、Denom(2番目から最後まで)は推定された分母dfを示します。彼らは古典的な直観に同意します。さらに重要なのは、F値についてもさまざまな答えが得られることです...

Kenward-Rogerで再確認することもできます(非常に再モデルを数回再調整する必要があるため、時間がかかります)。

lmerTest::anova(model,ddf="Kenward-Roger")

結果は同じです。

この例ではlmenlmeパッケージから)、適切な分母dfを推測することで完全に適切に機能します(F値とp値はわずかに異なります)。

model3 <- lme(rt ~ group * direction, random=~1|subnum, data = ANT.2)
anova(model3)[-1,]
##                 numDF denDF   F-value p-value
## group               1    18 2.4334314  0.1362
## direction           1  5169 0.3937316  0.5304
## group:direction     1  5169 2.3298847  0.1270

私は間の相互作用にフィットした場合directionsubnumのためのDFをdirectionしてgroup:directionはるかに小さいです(私は、彼らが18だろうと思っているだろう、多分私は何かを間違っを取得しています):

model2 <- lmer(rt ~ group * direction + (direction | subnum), data = ANT.2)
lmerTest::anova(model2)
##                 Df  Sum Sq Mean Sq F value   Denom Pr(>F)
## group            1 20334.7 20334.7  2.4302  17.995 0.1364
## direction        1  1804.3  1804.3  0.3649 124.784 0.5469
## group:direction  1 10616.6 10616.6  2.1418 124.784 0.1459

回答してくれてありがとう@Ben Bolker。私はあなたのコメントを熟考し、さらにいくつかの実験を行います。ezAnova実際にデータが2x2x2設計のものである場合は、2x2 anovaを実行しないでください。警告を理解しました。
Jiri Lukavsky、2014

1
おそらく、付属の警告をez書き直すことができます。実際には、2つの重要な部分があります。(1)データが集約されていること、(2)部分的な設計に関するものです。#1は、従来の非混合効果分散分析を実行するために、設計のセルごとに単一の観測値にデータを集約する必要があることを説明しているため、不一致に最も関連しています。この場合、「方向」変数のレベルごとに、被験者ごとに1つの観測値が必要です(被験者のグループラベルを維持します)。ezANOVAはこれを自動的に計算します。
マイクローレンス

+1が、ezanovaが間違っているかどうかはわかりません。私は走ったsummary(aov(rt ~ group*direction + Error(subnum/direction), data=ANT.2))、それは16を与える(?)DFSのためgroupのための18 directiongroup:direction。グループ/方向の組み合わせごとに〜125の観測があるという事実は、RM-ANOVAにはほとんど関係ありません。たとえば、私自身の質問stats.stackexchange.com/questions/286280を参照してください。方向の相互作用。
アメーバは

ベン、私の以前のコメントをフォローアップします。「18歳になると思っていたはずですが、何か問題が発生しているのでしょうか」という意味ですか。もしそうなら、私たちは同意しています。しかし、再び、18はRM-ANOVAに同意しlmerTest、その推定値は〜125 dfsに同意しません。
アメーバは

1
上記のアップデート:lmerTest::anova(model2, ddf="Kenward-Roger")戻る18.000 DF用group及び17.987(ezAnovaに従って)RM-ANOVAとよく一致している他の二つの要因のためにDF。私の結論は、Satterthwaiteの近似がmodel2何らかの理由で失敗することです。
アメーバはモニカを復活させる

10

私は一般的にベンの分析に同意しますが、いくつかの発言と少しの直観を加えさせてください。

まず、全体的な結果:

  1. Satterthwaiteメソッドを使用したlmerTestの結果は正しい
  2. Kenward-Rogerの方法も正しく、Satterthwaiteに同意します

ベンsubnumは、groupwhileにネストされ、directiongroup:direction交差するデザインの概要を説明していsubnumます。以下のための自然な誤差項(いわゆる「囲みエラー地層が」)というこれは手段groupであるsubnum他の用語のための囲みエラー地層(含めてsubnum)残差があります。

この構造は、いわゆる因子構造図で表すことができます。

names <- c(expression("[I]"[5169]^{5191}),
           expression("[subnum]"[18]^{20}), expression(grp:dir[1]^{4}),
           expression(dir[1]^{2}), expression(grp[1]^{2}), expression(0[1]^{1}))
x <- c(2, 4, 4, 6, 6, 8)
y <- c(5, 7, 5, 3, 7, 5)
plot(NA, NA, xlim=c(2, 8), ylim=c(2, 8), type="n", axes=F, xlab="", ylab="")
text(x, y, names) # Add text according to ’names’ vector
# Define coordinates for start (x0, y0) and end (x1, y1) of arrows:
x0 <- c(1.8, 1.8, 4.2, 4.2, 4.2, 6, 6) + .5
y0 <- c(5, 5, 7, 5, 5, 3, 7)
x1 <- c(2.7, 2.7, 5, 5, 5, 7.2, 7.2) + .5
y1 <- c(5, 7, 7, 3, 7, 5, 5)
arrows(x0, y0, x1, y1, length=0.1)

因子構造図

ここで、ランダムな用語は括弧で囲まれ0、全体の平均(または切片)を[I]表し、誤差の項を表し、上付きの数字はレベルの数であり、下付きの数字はバランスの取れた設計を想定した自由度の数です。この図は、の自然誤差項(囲み誤差層)がgroupsubnumあり、の分子df(の分母dfにsubnum等しいgroup)が18であることを示しています:20-1 groupdfと全体平均の1 df 因子構造図のより包括的な概要については、第2章のhttps://02429.compute.dtu.dk/eBookを参照してください

データが正確にバランスが取れていれば、によって提供されるSSQ分解からF検定を構築できanova.lmます。データセットは非常に密接にバランスが取れているため、次のように近似F検定を取得できます。

ANT.2 <- subset(ANT, !error)
set.seed(101)
baseline.shift <- rnorm(length(unique(ANT.2$subnum)), 0, 50)
ANT.2$rt <- ANT.2$rt + baseline.shift[as.numeric(ANT.2$subnum)]
fm <- lm(rt ~ group * direction + subnum, data=ANT.2)
(an <- anova(fm))
Analysis of Variance Table

Response: rt
                  Df   Sum Sq Mean Sq  F value Pr(>F)    
group              1   994365  994365 200.5461 <2e-16 ***
direction          1     1568    1568   0.3163 0.5739    
subnum            18  7576606  420923  84.8927 <2e-16 ***
group:direction    1    11561   11561   2.3316 0.1268    
Residuals       5169 25629383    4958                    
---
Signif. codes:  0***0.001**0.01*0.05 ‘.’ 0.1 ‘ ’ 1

ここですべてのFpの値は、すべての項が残差をそれらの囲んでいるエラーストラタムとして持つと想定して計算され、それは「グループ」以外のすべてに当てはまります。代わりに、グループの「バランスの取れた」F検定は次のとおりです。

F_group <- an["group", "Mean Sq"] / an["subnum", "Mean Sq"]
c(Fvalue=F_group, pvalue=pf(F_group, 1, 18, lower.tail = FALSE))
   Fvalue    pvalue 
2.3623466 0.1416875 

ここでは、F値の分母にsubnumMSの代わりにMS を使用しています。Residuals

これらの値はSatterthwaiteの結果と非常によく一致することに注意してください。

model <- lmer(rt ~ group * direction + (1 | subnum), data = ANT.2)
anova(model, type=1)
Type I Analysis of Variance Table with Satterthwaite's method
                 Sum Sq Mean Sq NumDF DenDF F value Pr(>F)
group           12065.3 12065.3     1    18  2.4334 0.1362
direction        1951.8  1951.8     1  5169  0.3936 0.5304
group:direction 11552.2 11552.2     1  5169  2.3299 0.1270

残りの違いは、データが正確にバランスされていないためです。

OPはと比較anova.lmしますanova.lmerModLmerTest。これは問題ありませんが、同じように比較するには、同じコントラストを使用する必要があります。この場合には差があるanova.lmanova.lmerModLmerTest、それらがそれぞれデフォルトではI型およびIIIのテストを生成し、このデータセットのためのI型およびIIIコントラストとの間の(小)差があるために。

show_tests(anova(model, type=1))$group
               (Intercept) groupTreatment directionright groupTreatment:directionright
groupTreatment           0              1    0.005202759                     0.5013477

show_tests(anova(model, type=3))$group # type=3 is default
               (Intercept) groupTreatment directionright groupTreatment:directionright
groupTreatment           0              1              0                           0.5

データセットが完全にバランスが取れていた場合、タイプIのコントラストはタイプIIIのコントラストと同じになります(観察されたサンプル数の影響を受けません)。

最後の注意点の1つは、Kenward-Roger法の「遅さ」はモデルの再フィッティングによるものではなく、観測/残差(この場合は5191x5191)の限界分散共分散行列による計算が含まれるためです。 Satterthwaiteの方法の場合。

モデル2について

MODEL2に関しては、状況はより複雑になり、私は私が「古典的」な相互作用の間に含まれている他のモデルとの議論を開始する方が簡単だと思うsubnumとをdirection

model3 <- lmer(rt ~ group * direction + (1 | subnum) +
                 (1 | subnum:direction), data = ANT.2)
VarCorr(model3)
 Groups           Name        Std.Dev.  
 subnum:direction (Intercept) 1.7008e-06
 subnum           (Intercept) 4.0100e+01
 Residual                     7.0415e+01

交互作用に関連する分散は(subnumランダムな主効果の存在下で)本質的にゼロであるため、交互作用項は分母の自由度、F値およびp値の計算に影響を与えません。

anova(model3, type=1)
Type I Analysis of Variance Table with Satterthwaite's method
                 Sum Sq Mean Sq NumDF DenDF F value Pr(>F)
group           12065.3 12065.3     1    18  2.4334 0.1362
direction        1951.8  1951.8     1  5169  0.3936 0.5304
group:direction 11552.2 11552.2     1  5169  2.3299 0.1270

ただし、subnum:directionそれを囲んでいるエラーストラタムであるsubnumためsubnum、関連するすべてのSSQ を削除すると、subnum:direction

model4 <- lmer(rt ~ group * direction +
                 (1 | subnum:direction), data = ANT.2)

今のための自然な誤差項groupdirectionおよびはgroup:directionある subnum:directionとしてnlevels(with(ANT.2, subnum:direction))= 40と四つのパラメータこれらの用語の自由分母度は36であるべきです:

anova(model4, type=1)
Type I Analysis of Variance Table with Satterthwaite's method
                 Sum Sq Mean Sq NumDF  DenDF F value  Pr(>F)  
group           24004.5 24004.5     1 35.994  4.8325 0.03444 *
direction          50.6    50.6     1 35.994  0.0102 0.92020  
group:direction   273.4   273.4     1 35.994  0.0551 0.81583  
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

これらのF検定は、「バランスのとれた」F検定で近似することもできます。

an4 <- anova(lm(rt ~ group*direction + subnum:direction, data=ANT.2))
an4[1:3, "F value"] <- an4[1:3, "Mean Sq"] / an4[4, "Mean Sq"]
an4[1:3, "Pr(>F)"] <- pf(an4[1:3, "F value"], 1, 36, lower.tail = FALSE)
an4
Analysis of Variance Table

Response: rt
                   Df   Sum Sq Mean Sq F value Pr(>F)    
group               1   994365  994365  4.6976 0.0369 *  
direction           1     1568    1568  0.0074 0.9319    
group:direction     1    10795   10795  0.0510 0.8226    
direction:subnum   36  7620271  211674 42.6137 <2e-16 ***
Residuals        5151 25586484    4967                   
---
Signif. codes:  0***0.001**0.01*0.05 ‘.’ 0.1 ‘ ’ 1

今model2に目を向けます:

model2 <- lmer(rt ~ group * direction + (direction | subnum), data = ANT.2)

このモデルは、2x2分散共分散行列を使用したかなり複雑な変量効果共分散構造を記述します。デフォルトのパラメーター化は簡単に処理できず、モデルの再パラメーター化の方が優れています。

model2 <- lmer(rt ~ group * direction + (0 + direction | subnum), data = ANT.2)

と比較するmodel2model4、同等のランダム効果があります。それぞれsubnumに2つ、つまり合計で2 * 20 = 40。ながらmodel4規定全て40のランダム効果のための単一の分散パラメータは、model2各ことを規定subnumランダム効果の-pairは、のパラメータはによって与えられる分散共分散行列の2x2と二変量正規分布を有しています

VarCorr(model2)
 Groups   Name           Std.Dev. Corr 
 subnum   directionleft  38.880        
          directionright 41.324   1.000
 Residual                70.405        

これは過剰適合を示していますが、別の日のために保存しておきましょう。ここで重要な点は、それがあるmodel4の特殊なケースであるmodel2 ことmodel特殊なケースmodel2。大まかに(そして直感的に)話すこと(direction | subnum)は、主な効果subnum 相互作用に関連するバリエーションを含むか、またはキャプチャしdirection:subnumます。変量効果の観点から、これらの2つの効果または構造は、行と列ごとの変化をそれぞれ捉えると考えることができます。

head(ranef(model2)$subnum)
  directionleft directionright
1    -25.453576     -27.053697
2     16.446105      17.479977
3    -47.828568     -50.835277
4     -1.980433      -2.104932
5      5.647213       6.002221
6     41.493591      44.102056

この場合、これらのランダム効果の推定値と分散パラメーターの推定値はどちらも、subnumここには(行間の変化)のランダムな主効果のみが実際にあることを示しています。これがすべてを導くのは、Satterthwaiteの分母の自由度が

anova(model2, type=1)
Type I Analysis of Variance Table with Satterthwaite's method
                 Sum Sq Mean Sq NumDF   DenDF F value Pr(>F)
group           12059.8 12059.8     1  17.998  2.4329 0.1362
direction        1803.6  1803.6     1 125.135  0.3638 0.5475
group:direction 10616.6 10616.6     1 125.136  2.1418 0.1458

これらの主効果及び相互作用構造の間の妥協である:グループDenDFは18のままである(にネストsubnum設計によって)しかしdirectiongroup:directionDenDF 36との間の妥協(ARE model4)および5169( model)。

ここでは、Satterthwaite近似(またはlmerTestでの実装)に問題があることを示しているとは思いません。

Kenward-Roger法を使用した同等の表では、

anova(model2, type=1, ddf="Ken")
Type I Analysis of Variance Table with Kenward-Roger's method
                 Sum Sq Mean Sq NumDF  DenDF F value Pr(>F)
group           12059.8 12059.8     1 18.000  2.4329 0.1362
direction        1803.2  1803.2     1 17.987  0.3638 0.5539
group:direction 10614.7 10614.7     1 17.987  2.1414 0.1606

KRとSatterthwaiteが異なる可能性があることは驚くべきことではありませんが、実際には、p値の違いはわずかです。上記の私の分析では、ことを示しているDenDFためdirectiongroup:direction〜36よりも小さく、私たちは基本的に唯一のランダムな主効果があることを与えられたものよりもおそらく大きくするべきではないdirection、存在をどちらかと言えばそう、私は、これはKR方法が得ることの指標であると考えるDenDFが低すぎるとこの場合。ただし、データは実際には(group | direction)構造をサポートしていないため、比較は少し人為的なものであることに注意してください。モデルが実際にサポートされていると、より興味深いものになります。


+6、ありがとう、非常に興味深い!いくつか質問があります。(1)「囲みエラー層」の詳細はどこで参照できますか?私はこの用語をググりました、そして、この答えは唯一のヒットでした。より一般的には、これらの問題について学ぶためにどんな文献を勧めますか?(2a)私が理解している限り、この設計の古典的なRM-ANOVAはに対応していますmodel3。ただし、subnum:directionテストのエラー用語として使用しますdirection。ここのに対し、あなたは排除することによってのみ行われるように強制することができます(1|subnum)のようにmodel4。どうして?(2b)また、RM-ANOVAは、で得られるdirection36ではなくでdf = 18を生成しますmodel4。どうして?
アメーバはモニカを復活させる

私のポイント(2a + 2b)については、を参照してくださいsummary(aov(rt ~ group*direction + Error(subnum/direction), data=ANT.2))
アメーバは、モニカを

1
(1)エラー階層のトピックと、どの階層に含まれる用語が、特定のモデル/設計の期待平均二乗式から導出されます。これは「標準」の実験計画法(DoE)資料ですが、これらのより技術的なトピックは、そのようなコースの使いやすい(「適用された」)バリアントに落とされることがよくあります。概要については、たとえば、users.stat.umn.edu /〜gary / book / fcdae.pdfの ch 11&12を参照してください。私はDCモンゴメリーの同等のテキストと(最近、そして残念ながら)故ヘンリック・スプリッド教授から広範な追加資料からトピックを学びました。
ルーンHクリステンセン

1
...より完全な処理のために、Searle等によるVariance Components(1992および2006)は古典的です。
ルーンHクリステンセン

我々は両方でモデルを持っている場合:ああ、はい、私はそれを見ているはずですsubnumし、subnum:direction非ゼロで、その後anova(lm(rt2 ~ group * direction + subnum + subnum:direction, data = ANT.2)) すべての3つの要因のために18 DFを与え、これはKR-方法が拾うものです。これは、Satterthwaiteが消失分散項を認識し、それに応じてdfを調整する一方で、相互作用分散がゼロの場合でもmodel3、KRがすべての項に対して設計ベースの18 dfを与える場所ですでに確認できます。–
Rune H Christensen
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.