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 subnum
verschachtelt 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.group
direction
group:direction
subnum
group
subnum
subnum
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, 0
stellen 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 group
ist subnum
und dass der Zähler df für subnum
, der dem Nenner df für entspricht group
, 18: 20 minus 1 df für group
und 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 subnum
MS anstelle der Residuals
MS 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.lm
mit 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.lm
und anova.lmerModLmerTest
da 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 subnum
und 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 subnum
zufä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:direction
ist die umschließende Fehler Stratum für subnum
so , wenn wir entfernen subnum
alle 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
, direction
und group:direction
ist
subnum:direction
und 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 model2
zu model4
, haben sie ebenso viele Zufallseffekte; 2 für jeden subnum
, dh 2 * 20 = 40 insgesamt. Während model4
für alle 40 zufälligen Effekte ein model2
einzelner subnum
Varianzparameter 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 model4
ist ein Sonderfall model2
und das model
ist 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 ( subnum
vom Design her verschachtelt ), aber die direction
und
group:direction
DenDF 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 DenDF
für direction
und group:direction
nicht kleiner als ~ 36 und wahrscheinlich größer als das sein sollte, da wir im Grunde nur den zufälligen Haupteffekt der direction
Gegenwart haben. Wenn ich also etwas denke, ist dies ein Hinweis darauf, dass die KR-Methode DenDF
zu 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.
ezAnova
Warnung, da Sie 2x2 anova nicht ausführen sollten, wenn Ihre Daten tatsächlich aus 2x2x2-Design stammen.