我大体上同意 Ben 的分析,但让我补充几点意见和一点直觉。
一、总体结果:
- 使用 Satterthwaite 方法的 lmerTest 结果是正确的
- Kenward-Roger 方法也是正确的,并且同意 Satterthwaite
Ben 概述了subnum
嵌套在group
while中direction
并与 .group: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]
代表误差项,上标数字是水平数,下标数字是假设平衡设计的自由度数。该图表明 是 的自然误差项(封闭误差层)group
和subnum
的分子 dfsubnum
等于 的分母 dfgroup
是 18: 20 减去 1 dfgroup
和 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
这里所有的F和p值都是假设所有项都具有作为其封闭误差层的残差,并且对于除“组”之外的所有项都是如此。组的“平衡正确” 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值分母中使用subnum
MS 而不是Residuals
MS 。
请注意,这些值与 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
这没关系,但要比较 like 和 like,我们必须使用相同的对比。在这种情况下,它们之间存在差异anova.lm
,anova.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)进行计算,这不是萨特思韦特方法的例子。
关于模型2
至于模型2,情况变得更加复杂,我认为用另一个模型开始讨论会更容易,其中我已经包含了和之间的“经典”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
SSQ会退回到subnum
subnum
subnum:direction
model4 <- lmer(rt ~ group * direction +
(1 | subnum:direction), data = ANT.2)
现在自然误差项group
,direction
和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
现在转向模型2:
model2 <- lmer(rt ~ group * direction + (direction | subnum), data = ANT.2)
该模型描述了一个相当复杂的具有 2x2 方差-协方差矩阵的随机效应协方差结构。默认参数化不容易处理,我们最好对模型进行重新参数化:
model2 <- lmer(rt ~ group * direction + (0 + direction | subnum), data = ANT.2)
如果我们比较model2
,model4
它们有同样多的随机效应;每个 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
设计嵌套),但direction
和
group:direction
DenDF 是 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值的差异很小。我上面的分析表明DenDF
fordirection
和group:direction
不应小于 ~36 并且可能大于考虑到我们基本上只有当前的随机主效应direction
,所以如果有的话,我认为这表明 KR 方法变得DenDF
太低了在这种情况下。但请记住,数据并不真正支持(group | direction)
结构,因此比较有点人为 - 如果模型真的得到支持会更有趣。