Sind Freiheitsgrade in lmerTest :: anova korrekt? Sie unterscheiden sich sehr von RM-ANOVA

10

Ich analysiere die Ergebnisse eines Reaktionszeitversuchs in R.

Ich führte eine ANOVA mit wiederholten Messungen durch (1 Faktor innerhalb des Subjekts mit 2 Stufen und 1 Faktor zwischen den Subjekten mit 2 Stufen). Ich habe ein ähnliches lineares gemischtes Modell ausgeführt und wollte die früheren Ergebnisse in Form einer ANOVA-Tabelle mit zusammenfassen lmerTest::anova.

Verstehen Sie mich nicht falsch: Ich habe nicht die identischen Ergebnisse erwartet, bin mir jedoch nicht sicher, welche Freiheitsgrade die lmerTest::anovaErgebnisse haben. Es scheint mir eher eine ANOVA ohne Aggregation auf Subjektebene zu reflektieren.

Mir ist bewusst, dass die Berechnung von Freiheitsgraden in Modellen mit gemischten Effekten schwierig ist, aber lmerTest::anovaim aktualisierten ?pvaluesThema ( lme4Paket) als eine mögliche Lösung erwähnt wird .

Ist diese Berechnung korrekt? Entsprechen die Ergebnisse von lmerTest::anovakorrekt dem angegebenen Modell?

Update: Ich habe die individuellen Unterschiede größer gemacht. Die Freiheitsgrade lmerTest::anovaunterscheiden sich stärker von einfachen Anova, aber ich bin mir immer noch nicht sicher, warum sie für den Faktor / die Interaktion innerhalb des Subjekts so groß sind.

# 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)

Ergebnisse des obigen Codes [ aktualisiert ]:

anova.ez

$ 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 (Modell)

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

Anova (m)

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
Jiri Lukavsky
quelle

Antworten:

13

Ich denke , das lmerTestmacht es richtig und ezanovamacht es in diesem Fall falsch.

  • Die Ergebnisse lmerTeststimmen mit meiner Intuition / meinem Verständnis überein
  • Zwei verschiedene Berechnungen in lmerTest(Satterthwaite und Kenward-Roger) stimmen überein
  • Sie stimmen auch zu nlme::lme
  • Wenn ich es ezanovastarte , gibt es eine Warnung, die ich nicht ganz verstehe, die aber nicht außer Acht gelassen werden sollte ...

Beispiel erneut ausführen:

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)]

Finden Sie den experimentellen Aufbau heraus

with(ANT.2,table(subnum,group,direction))

Es sieht also so aus, als ob Individuen ( subnum) entweder in Kontroll- oder Behandlungsgruppen eingeteilt werden und jede für beide Richtungen getestet wird - dh die Richtung kann innerhalb von Individuen getestet werden (Nenner df ist groß), aber Gruppe und Gruppe: Richtung kann nur unter getestet werden Einzelpersonen

(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

Hier bekomme ich den 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. Nenner DF ein wenig funky (alle gleich 18): Ich denke, sie sollten größer für Richtung und Gruppe: Richtung sein, die unabhängig getestet werden können (aber kleiner wären, wenn Sie (direction|subnum)dem Modell hinzufügen )?

# 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

die DfSpalte bezieht sich hier auf den Zähler df Denom(vorletzter) gibt den geschätzten Nenner df an; Sie stimmen mit der klassischen Intuition überein. Wichtiger ist, dass wir auch unterschiedliche Antworten für die F-Werte erhalten ...

Wir können uns auch bei Kenward-Roger erkundigen ( sehr langsam, da das Modell mehrmals umgerüstet werden muss).

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

Die Ergebnisse sind identisch.

In diesem Beispiel lme(aus dem nlmePaket) ist es tatsächlich sehr gut, den entsprechenden Nenner df zu erraten (die F- und p-Werte unterscheiden sich geringfügig):

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

Wenn ich eine Interaktion zwischen directionund subnumdem df für directionund group:directionviel kleiner passe (ich hätte gedacht, dass sie 18 wären, aber vielleicht verstehe ich etwas falsch):

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
quelle
Vielen Dank an Ben Bolker für Ihre Antwort. Ich werde über Ihre Kommentare nachdenken und noch einige Experimente durchführen. Ich verstehe die ezAnovaWarnung, da Sie 2x2 anova nicht ausführen sollten, wenn Ihre Daten tatsächlich aus 2x2x2-Design stammen.
Jiri Lukavsky
1
Möglicherweise könnte die damit verbundene Warnung ezumformuliert werden. Es besteht eigentlich aus zwei Teilen, die wichtig sind: (1) dass Daten aggregiert werden und (2) Informationen zu Teilentwürfen. # 1 ist für die Diskrepanz am relevantesten, da es erklärt, dass man, um eine traditionelle Anova mit nicht gemischten Effekten durchzuführen, die Daten zu einer einzigen Beobachtung pro Zelle des Entwurfs aggregieren muss. In diesem Fall möchten wir eine Beobachtung pro Subjekt pro Ebene der Variablen "Richtung" (unter Beibehaltung der Gruppenbezeichnungen für Subjekte). ezANOVA berechnet dies automatisch.
Mike Lawrence
+1 aber ich bin mir nicht sicher, ob ezanova es falsch gemacht hat. Ich lief summary(aov(rt ~ group*direction + Error(subnum/direction), data=ANT.2))und es gibt 16 (?) Dfs für groupund 18 für directionund group:direction. Die Tatsache, dass es ~ 125 Beobachtungen pro Gruppen- / Richtungskombination gibt, ist für RM-ANOVA ziemlich irrelevant, siehe z. B. meine eigene Frage stats.stackexchange.com/questions/286280 : Die Richtung wird sozusagen gegen das Subjekt getestet. Richtungswechselwirkung.
Amöbe sagt Reinstate Monica
Ben, der meinen vorherigen Kommentar weiterverfolgt: Ist es tatsächlich das, was Sie mit "Ich hätte gedacht, sie wären 18, aber vielleicht verstehe ich etwas falsch" gemeint haben? Wenn ja, sind wir uns einig. Aber auch hier stimmt 18 mit RM-ANOVA überein und stimmt lmerTestdieser Schätzung von ~ 125 dfs nicht zu.
Amöbe sagt Reinstate Monica
1
Update auf das oben Gesagte: Gibt lmerTest::anova(model2, ddf="Kenward-Roger")18.000 df für groupund 17.987df für die beiden anderen Faktoren zurück, was in hervorragender Übereinstimmung mit RM-ANOVA (gemäß ezAnova) steht. Mein Fazit ist, dass Satterthwaites Annäherung aus model2irgendeinem Grund fehlschlägt .
Amöbe sagt Reinstate Monica
10

Ich stimme Bens Analyse im Allgemeinen zu, aber lassen Sie mich ein paar Bemerkungen und ein wenig Intuition hinzufügen.

Zunächst die Gesamtergebnisse:

  1. lmerTest-Ergebnisse mit der Satterthwaite-Methode sind korrekt
  2. 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)

Faktorstrukturdiagramm

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.

Rune H Christensen
quelle
+6, danke, sehr interessant! Einige Fragen. (1) Wo kann ich mehr über "Fehlerschicht einschließen" lesen? Ich habe diesen Begriff gegoogelt und diese Antwort war der einzige Treffer. Welche Literatur würden Sie allgemein empfehlen, um mehr über diese Themen zu erfahren? (2a) Soweit ich weiß, entspricht die klassische RM-ANOVA für dieses Design Ihrer model3. Es wird jedoch subnum:directionals Fehlerbegriff zum Testen verwendet direction. Während Sie dies hier nur durch Ausschließen (1|subnum)wie in erzwingen können model4. Warum? (2b) Außerdem ergibt RM-ANOVA df = 18 für directionund nicht 36, wenn Sie einsteigen model4. Warum?
Amöbe sagt Reinstate Monica
Für meine Punkte (2a + 2b) siehe summary(aov(rt ~ group*direction + Error(subnum/direction), data=ANT.2)).
Amöbe sagt Reinstate Monica
1
(1) Das Thema der Fehlerschichten und welche Begriffe in welchen Schichten enthalten sind, werden aus den Ausdrücken des erwarteten mittleren Quadrats für ein bestimmtes Modell / Design abgeleitet. Dies ist "Standard" DoE-Material (Design of Experiments), obwohl diese eher technischen Themen häufig in einfachen ("angewandten") Varianten solcher Kurse behandelt werden. Eine Einführung finden Sie beispielsweise in Kapitel 11 und 12 unter users.stat.umn.edu/~gary/book/fcdae.pdf . Ich habe das Thema aus dem entsprechenden Text von DC Montgomery und den umfangreichen Zusatzmaterialien des (kürzlich und bedauerlicherweise) verstorbenen Professors Henrik Spliid gelernt.
Rune H Christensen
1
... Für eine gründlichere Behandlung sind Varianzkomponenten (1992 und 2006) von Searle et al. Ein Klassiker.
Rune H Christensen
Ahh, ja, ich hätte das sehen sollen: Wenn wir ein Modell haben, in dem beide subnumund subnum:directionnicht Null sind, dann anova(lm(rt2 ~ group * direction + subnum + subnum:direction, data = ANT.2)) ergibt 18 df für alle drei Faktoren, und das ist es, was die KR-Methode aufgreift. Dies ist bereits zu sehen, model3wenn KR die designbasierten 18 df für alle Terme angibt, auch wenn die Interaktionsvarianz Null ist, während Satterthwaite den verschwindenden Varianzterm erkennt und den df entsprechend anpasst ....
Rune H Christensen