lmerTest :: anova中的自由度正确吗?它们与RM-ANOVA有很大不同


10

我正在分析R中反应时间实验的结果。

我进行了重复测量方差分析(1个受试者内部因素具有2个水平,而1个受试者之间因素具有2个水平)。我运行了一个类似的线性混合模型,我想使用ANOVA表的形式总结lmer结果lmerTest::anova

不要误会我的意思:我没想到会有相同的结果,但是我不确定lmerTest::anova结果的自由度。在我看来,它反映的是ANOVA,而在主题级别上没有任何汇总。

我知道以下事实:在混合效应模型中计算自由度是很棘手的,但lmerTest::anova在更新的?pvalues主题(lme4包)中被提及为一种可能的解决方案。

这个计算正确吗?结果lmerTest::anova是否正确反映了指定的模型?

更新:我使个体差异更大。自由度lmerTest::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

           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

方差(米)

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

Answers:


13

认为lmerTest是正确的,ezanova在这种情况下是错误的。

  • 结果来自lmerTest我的直觉/理解
  • lmerTest(Satterthwaite和Kenward-Roger)中的两种不同的计算方法是一致的
  • 他们也同意 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大),但是group和group:direction只能在以下人群中进行测试个人

(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):我认为方向和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(倒数第二)给出估计的分母df;他们同意经典的直觉。更重要的是,对于F值,我们还会得到不同的答案...

我们还可以与Kenward-Roger进行双重检查(速度非常慢,因为它涉及到多次重新安装模型)

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

结果是相同的。

对于此示例lme(从nlme包中)实际上可以很好地猜测出适当的分母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

如果我适应之间的相互作用direction,并subnum为DF directiongroup: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方差分析。
吉里·卢卡夫斯基

1
可能附带的警告ez可以改写;它实际上有两个很重要的部分:(1)正在聚合数据;(2)有关部分设计的内容。#1与差异最相关,因为它说明了要进行传统的非混合效应方差分析,必须将数据汇总到设计中每个单元的单个观察值中。在这种情况下,我们希望每个级别的“方向”变量(同时保持主题的组标签)对每个主题进行一次观察。ezANOVA自动计算。
2014年

+1,但我不确定ezanova是否有错。我跑summary(aov(rt ~ group*direction + Error(subnum/direction), data=ANT.2)),它给出了16(?),DFS group和18 directiongroup:direction。对于RM-ANOVA,每个组/方向组合中有〜125个观测值的事实几乎是无关紧要的,请参阅例如我自己的问题stats.stackexchange.com/questions/286280:方向已测试,可以说是针对主题-方向互动。
变形虫

Ben,继续我的先前评论:“我本以为他们会18岁,但也许我出了点问题”,实际上是您的意思吗?如果是这样,那么我们表示同意。但同样,18同意RM-ANOVA并不同意lmerTest这一估计〜125 dfs。
变形虫

1
更新上述:lmerTest::anova(model2, ddf="Kenward-Roger")返回18.000 DF用于group17.987DF对于其他两个因素的影响,这与RM-ANOVA极好的一致性(按照ezAnova)。我的结论是,Satterthwaite的近似model2由于某种原因而失败。
变形虫

10

我大体上同意Ben的分析,但让我补充一些观点和一些直觉。

一,总体效果:

  1. 使用Satterthwaite方法的lmerTest结果正确
  2. Kenward-Roger方法也是正确的,并且与Satterthwaite一致

Ben概述了subnum嵌套在group其中directiongroup:direction与之交叉的设计subnum。这意味着的自然误差项(即所谓的“封闭误差层”)为groupsubnum而其他项(包括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为subnum,它等于分母为DF group,是18:20减去1 DF为group和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 

在这里我们使用subnumMS而不是F值分母中的ResidualsMS 。

请注意,这些值与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.lmanova.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型对比度相同(不受观察到的样本数量的影响)。

最后一点是,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)

现在对于天然误差项groupdirectiongroup:directionsubnum:directionnlevels(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,他们有同样多的随机效应; 每个2个subnum,即总计2 * 20 = 40。虽然model4为所有40个随机效应规定了一个方差参数,但model2规定每subnum对随机效应均具有带有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。在随机效应方面,我们可以将这两种效应或结构视为分别捕获行与逐列之间的变化:

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按设计嵌套),而directionand group:directionDenDF在36(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值的差异很小。我上面的分析表明,DenDFfor directiongroup:direction应该不小于〜36,并且可能大于给定值,因为我们基本上只具有directionpresent 的随机主效应,因此,如果有任何发现,我认为这表明KR方法变得DenDF太低在这种情况下。但是请记住,数据并不真正支持该(group | direction)结构,因此比较有点人为-如果实际支持该模型会更有趣。


+6,谢谢,非常有趣!有几个问题。(1)在哪里可以阅读有关“封闭错误层”的更多信息?我用谷歌搜索了这个词,唯一的答案就是这个答案。更一般而言,您会推荐哪些文献来了解这些问题?(2a)据我了解,此设计的经典RM-ANOVA与您的相对应model3。但是,它subnum:direction用作测试的错误项direction。而在这里,您可以通过仅(1|subnum)像中的排除那样来强制发生这种情况model4。为什么?(2b)此外,direction当您进入时,RM-ANOVA的df = 18 ,而不是36 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的等效教科书中学到了这个主题,最近(令人遗憾的是)已故的亨里克·斯普利德教授亨里克·斯普利德(Henrik Spliid)教授也提供了广泛的补充材料。
符文H克里斯滕森

1
...对于更彻底的治疗,Searle等人的Variance Components(1992和2006)是经典之作。
符文H克里斯滕森

嗯,是的,我应该看到:如果我们有一个模型,其中subnumsubnum:direction都不为零,那么anova(lm(rt2 ~ group * direction + subnum + subnum:direction, data = ANT.2)) 对于所有三个因素,给出18 df,这就是KR方法所采用的方法。这已经可以看出与model3在那里KR给出了基于设计的18 DF的所有条款,即使当互作方差为零,而萨特斯韦特识别消失的变化项,并相应调整DF ....
符文^ h克里斯滕森
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.