Я в целом согласен с анализом Бена, но позвольте мне добавить пару замечаний и немного интуиции.
Во-первых, общие результаты:
- Результаты lmerTest с использованием метода Satterthwaite верны
- Метод Кенварда-Роджера также верен и согласуется с Satterthwaite
Бен обрисовывает в общих чертах проект, в который subnum
вложен в group
то время как 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
is subnum
и что числитель df для subnum
, который равен знаменателю df group
, равен 18: 20 минус 1 df для group
и 1 df для общего среднего. Более полное введение в диаграммы факторной структуры доступно в главе 2 здесь: https://02429.compute.dtu.dk/eBook .
Если бы данные были точно сбалансированы, мы могли бы построить F-тесты из SSQ-декомпозиции, как указано в 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
где мы используем subnum
MS вместо Residuals
MS в знаменателе F- значения.
Обратите внимание, что эти значения довольно хорошо совпадают с результатами 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
Остальные различия связаны с тем, что данные не являются точно сбалансированными.
ОП сравнивается anova.lm
с anova.lmerModLmerTest
, что нормально, но для сравнения с тем, как мы должны использовать те же контрасты. В этом случае есть разница между 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 (на которые не влияет наблюдаемое количество образцов).
Последнее замечание заключается в том, что «медлительность» метода Кенварда-Роджера не связана с повторной подгонкой модели, а связана с тем, что она включает вычисления с предельной дисперсионно-ковариационной матрицей наблюдений / невязок (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)
Теперь естественным условием ошибки для 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
Теперь переходим к model2:
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 ) является ошибочным.
Эквивалентная таблица с методом Кенварда-Роджера дает
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
for direction
и group:direction
не должны быть меньше, чем ~ 36 и, вероятно, больше, чем тот, что у нас есть только случайный основной эффект direction
присутствия, так что, если что-то мне кажется, это показатель того, что метод KR становится DenDF
слишком низким в этом случае. Но имейте в виду, что данные на самом деле не поддерживают (group | direction)
структуру, поэтому сравнение немного искусственное - было бы более интересно, если бы модель действительно поддерживалась.
ezAnova
предупреждение, поскольку вы не должны запускать 2x2 anova, если на самом деле ваши данные взяты из дизайна 2x2x2.