Ich stimme Bens Analyse im Allgemeinen zu, aber lassen Sie mich ein paar Bemerkungen und ein wenig Intuition hinzufügen.
Zunächst die Gesamtergebnisse:
- lmerTest-Ergebnisse mit der Satterthwaite-Methode sind korrekt
- Die Kenward-Roger-Methode ist ebenfalls korrekt und stimmt mit Satterthwaite überein
Ben skizziert das Design, in das währenddessen subnumverschachtelt ist
und mit dem gekreuzt wird . Dies bedeutet, dass der natürliche Fehlerterm (dh die sogenannte "einschließende Fehlerschicht") für ist, während die einschließende Fehlerschicht für die anderen Begriffe (einschließlich ) die Residuen sind.groupdirectiongroup:directionsubnumgroupsubnumsubnum
Diese Struktur kann in einem sogenannten Faktorstrukturdiagramm dargestellt werden:
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)

Hier sind zufällige Terme in Klammern eingeschlossen, 0stellen den Gesamtmittelwert (oder Achsenabschnitt) dar, [I]stellen den Fehlerterm dar, die Superskriptnummern sind die Anzahl der Ebenen und die Unterskriptnummern sind die Anzahl der Freiheitsgrade, die ein ausgeglichenes Design voraussetzen. Das Diagramm zeigt, dass der natürliche Fehlerterm (einschließlich der Fehlerschicht) für groupist subnumund dass der Zähler df für subnum, der dem Nenner df für entspricht group, 18: 20 minus 1 df für groupund 1 df für den Gesamtmittelwert beträgt . Eine umfassendere Einführung in Faktorstrukturdiagramme finden Sie in Kapitel 2 hier: https://02429.compute.dtu.dk/eBook .
Wenn die Daten genau ausgeglichen wären, könnten wir die F-Tests aus einer SSQ-Zerlegung wie von konstruieren anova.lm. Da der Datensatz sehr genau ausgewogen ist, können wir ungefähre F-Tests wie folgt erhalten:
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
Hier werden alle F- und p- Werte unter der Annahme berechnet, dass alle Terme die Residuen als ihre einschließende Fehlerschicht haben, und das gilt für alle außer 'Gruppe'. Der 'ausgeglichen-korrekte' F- Test für die Gruppe lautet stattdessen:
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
wo wir die subnumMS anstelle der ResidualsMS im F- Wert-Nenner verwenden.
Beachten Sie, dass diese Werte recht gut mit den Satterthwaite-Ergebnissen übereinstimmen:
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
Die verbleibenden Unterschiede sind darauf zurückzuführen, dass die Daten nicht genau ausgewogen sind.
Das OP vergleicht anova.lmmit anova.lmerModLmerTest, was in Ordnung ist, aber um Gleiches mit Gleichem zu vergleichen, müssen wir die gleichen Kontraste verwenden. In diesem Fall gibt es einen Unterschied zwischen anova.lmund anova.lmerModLmerTestda sie standardmäßig Tests vom Typ I bzw. III erzeugen, und für diesen Datensatz gibt es einen (kleinen) Unterschied zwischen den Kontrasten vom Typ I und 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
Wenn der Datensatz vollständig ausgeglichen gewesen wäre, wären die Kontraste vom Typ I dieselben gewesen wie die Kontraste vom Typ III (die von der beobachteten Anzahl von Proben nicht beeinflusst werden).
Eine letzte Bemerkung ist, dass die "Langsamkeit" der Kenward-Roger-Methode nicht auf eine Modellanpassung zurückzuführen ist, sondern auf Berechnungen mit der marginalen Varianz-Kovarianz-Matrix der Beobachtungen / Residuen (in diesem Fall 5191x5191), was nicht der Fall ist der Fall für Satterthwaites Methode.
Zum Modell2
Was Modell 2 betrifft, wird die Situation komplexer und ich denke, es ist einfacher, die Diskussion mit einem anderen Modell zu beginnen, in das ich die 'klassische' Interaktion zwischen subnumund aufgenommen habe 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
Da die mit der Wechselwirkung verbundene Varianz im Wesentlichen Null ist (bei Vorhandensein des subnumzufälligen Haupteffekts), hat der Wechselwirkungsterm keinen Einfluss auf die Berechnung der Nennerfreiheitsgrade , F- Werte und p- Werte:
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
Jedoch subnum:directionist die umschließende Fehler Stratum für subnumso , wenn wir entfernen subnumalle zugehörigen SSQ fällt zurück insubnum:direction
model4 <- lmer(rt ~ group * direction +
(1 | subnum:direction), data = ANT.2)
Nun ist die natürliche Fehlerterm für group, directionund group:directionist
subnum:directionund mit nlevels(with(ANT.2, subnum:direction))= 40 und vier Parametern die Nenner - Freiheitsgrade für diese Begriffe etwa 36 sein sollten:
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
Diese F- Tests können auch mit den 'ausgeglichen-korrekten' F- Tests angenähert werden:
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
Wenden wir uns nun Modell2 zu:
model2 <- lmer(rt ~ group * direction + (direction | subnum), data = ANT.2)
Dieses Modell beschreibt eine ziemlich komplizierte Kovarianzstruktur mit zufälligen Effekten mit einer 2x2-Varianz-Kovarianz-Matrix. Die Standardparametrierung ist nicht einfach zu handhaben und wir sind besser mit einer Neuparametrisierung des Modells:
model2 <- lmer(rt ~ group * direction + (0 + direction | subnum), data = ANT.2)
Wenn wir vergleichen model2zu model4, haben sie ebenso viele Zufallseffekte; 2 für jeden subnum, dh 2 * 20 = 40 insgesamt. Während model4für alle 40 zufälligen Effekte ein model2einzelner subnumVarianzparameter festgelegt ist , ist festgelegt, dass jedes Paar zufälliger Effekte eine bi-variable Normalverteilung mit einer 2x2-Varianz-Kovarianz-Matrix aufweist, deren Parameter durch gegeben sind
VarCorr(model2)
Groups Name Std.Dev. Corr
subnum directionleft 38.880
directionright 41.324 1.000
Residual 70.405
Dies deutet auf eine Überanpassung hin, aber bewahren wir das für einen anderen Tag auf. Der wichtige Punkt hier ist , dass model4ist ein Sonderfall model2 und das modelist auch ein Sonderfall model2. Das lose (und intuitive) Sprechen (direction | subnum)enthält oder erfasst die Variation, die mit dem Haupteffekt subnum sowie der Interaktion verbunden ist direction:subnum. In Bezug auf die zufälligen Effekte können wir uns diese beiden Effekte oder Strukturen so vorstellen, dass sie Variationen zwischen Zeilen bzw. zeilenweise erfassen:
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
In diesem Fall zeigen diese zufälligen Effektschätzungen sowie die Varianzparameterschätzungen beide, dass wir hier wirklich nur einen zufälligen Haupteffekt von subnum(Variation zwischen Zeilen) haben. Dies alles führt dazu, dass Satterthwaite Nenner Freiheitsgrade in
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
ist ein Kompromiss zwischen diesen Haupteffekt- und Interaktionsstrukturen: Die Gruppe DenDF bleibt bei 18 ( subnumvom Design her verschachtelt ), aber die directionund
group:directionDenDF sind Kompromisse zwischen 36 ( model4) und 5169 ( model).
Ich glaube, hier deutet nichts darauf hin, dass die Satterthwaite-Näherung (oder ihre Implementierung in lmerTest ) fehlerhaft ist.
Die äquivalente Tabelle mit der Kenward-Roger-Methode gibt
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
Es ist nicht überraschend, dass KR und Satterthwaite unterschiedlich sein können, aber für alle praktischen Zwecke ist der Unterschied in den p- Werten winzig. Meine obige Analyse zeigt, dass das DenDFfür directionund group:directionnicht kleiner als ~ 36 und wahrscheinlich größer als das sein sollte, da wir im Grunde nur den zufälligen Haupteffekt der directionGegenwart haben. Wenn ich also etwas denke, ist dies ein Hinweis darauf, dass die KR-Methode DenDFzu niedrig wird in diesem Fall. Beachten Sie jedoch, dass die Daten die (group | direction)Struktur nicht wirklich unterstützen , sodass der Vergleich etwas künstlich ist - es wäre interessanter, wenn das Modell tatsächlich unterstützt würde.
ezAnovaWarnung, da Sie 2x2 anova nicht ausführen sollten, wenn Ihre Daten tatsächlich aus 2x2x2-Design stammen.