Split-Plot-ANOVA: Modellvergleichstests in R

12

Wie kann ich testen Effekte in einem Split-Plot ANOVA unter Verwendung geeigneter Modellvergleiche zur Verwendung mit den Xund MArgumente anova.mlm()in R? Ich kenne ?anova.mlmund Dalgaard (2007). Leider werden nur Split-Plot-Designs gebürstet. Dies in einem vollständig randomisierten Design mit zwei Faktoren innerhalb des Subjekts zu tun:

N  <- 20  # 20 subjects total
P  <- 3   # levels within-factor 1
Q  <- 3   # levels within-factor 2
DV <- matrix(rnorm(N* P*Q), ncol=P*Q)           # random data in wide format
id <- expand.grid(IVw1=gl(P, 1), IVw2=gl(Q, 1)) # intra-subjects layout of data matrix

library(car)        # for Anova()
fitA <- lm(DV ~ 1)  # between-subjects design: here no between factor
resA <- Anova(fitA, idata=id, idesign=~IVw1*IVw2)
summary(resA, multivariate=FALSE, univariate=TRUE)  # all tests ...

Die folgenden Modellvergleiche führen zu den gleichen Ergebnissen. Das eingeschränkte Modell enthält nicht den fraglichen Effekt, sondern alle anderen Effekte in derselben oder einer niedrigeren Reihenfolge. Das vollständige Modell fügt den fraglichen Effekt hinzu.

anova(fitA, idata=id, M=~IVw1 + IVw2, X=~IVw2, test="Spherical") # IVw1
anova(fitA, idata=id, M=~IVw1 + IVw2, X=~IVw1, test="Spherical") # IVw2
anova(fitA, idata=id, M=~IVw1 + IVw2 + IVw1:IVw2,
                      X=~IVw1 + IVw2, test="Spherical")          # IVw1:IVw2

Ein Split-Splot-Design mit einem Faktor innerhalb und einem Faktor zwischen Subjekten:

idB  <- subset(id, IVw2==1, select="IVw1")          # use only first within factor
IVb  <- gl(2, 10, labels=c("A", "B"))               # between-subjects factor
fitB <- lm(DV[ , 1:P] ~ IVb)                        # between-subjects design
resB <- Anova(fitB, idata=idB, idesign=~IVw1)
summary(resB, multivariate=FALSE, univariate=TRUE)  # all tests ...

Dies sind die anova()Befehle zum Replizieren der Tests, aber ich weiß nicht, warum sie funktionieren. Warum führen die Tests der folgenden Modellvergleiche zu den gleichen Ergebnissen?

anova(fitB, idata=idB, X=~1, test="Spherical") # IVw1, IVw1:IVb
anova(fitB, idata=idB, M=~1, test="Spherical") # IVb

Zwei Faktoren innerhalb der Subjekte und ein Faktor zwischen den Subjekten:

fitC <- lm(DV ~ IVb)  # between-subjects design
resC <- Anova(fitC, idata=id, idesign=~IVw1*IVw2)
summary(resC, multivariate=FALSE, univariate=TRUE)  # all tests ...

Wie repliziere ich die oben angegebenen Ergebnisse mit den entsprechenden Modellvergleichen zur Verwendung mit Xund MArgumenten von anova.mlm()? Welche Logik steckt hinter diesen Modellvergleichen?

EDIT: suncoolsu wies darauf hin, dass für alle praktischen Zwecke Daten aus diesen Entwürfen mit gemischten Modellen analysiert werden sollten. Ich möchte jedoch immer noch verstehen, wie die Ergebnisse von summary(Anova())mit repliziert werden anova.mlm(..., X=?, M=?).

[1]: Dalgaard, S. 2007. Neue Funktionen für die multivariate Analyse. R News, 7 (2), 2-7.

caracal
quelle
Hey @caracal, ich denke, die Art und Weise, wie Sie "Split-Plot Design" verwenden, ist nicht die Art und Weise, wie Casella es in seinem Buch "Statistical Design" definiert. Split Plot spricht definitiv von Verschachtelung, ist aber eine spezielle Methode, um die Korrelationsstruktur festzulegen. Und die meiste Zeit werden Sie lme4Paket verwenden, um das Modell zu passen UND NICHT lm. Dies kann jedoch eine sehr spezifische buchbasierte Ansicht sein. Ich werde es von anderen kommentieren lassen. Ich kann ein Beispiel dafür geben, wie ich es interpretiere, das sich von Ihrem unterscheidet.
Suncoolsu
2
@suncoolsu Die Terminologie in den Sozialwissenschaften mag unterschiedlich sein, aber sowohl Kirk (1995, S. 512) als auch Maxwell & Delaney (2004, S. 592) nennen Modelle mit einem Zwischen-Faktor- und einem Innerhalb-Faktor- "Split-Plot". Der Zwischenfaktor liefert die "Parzellen" (analog zum landwirtschaftlichen Ursprung).
Karakal
Ich habe im Moment eine Menge Dinge auf meinem Teller. Ich werde meine Antwort erweitern, um Ihre Frage genauer zu beantworten. Ich sehe, Sie haben viel Mühe darauf verwendet, Ihre Frage zu formulieren. Dank dafür.
Suncoolsu

Antworten:

10

Das Xund Mspezifizieren im Wesentlichen die beiden Modelle, die Sie vergleichen möchten, jedoch nur in Bezug auf die subjektinternen Effekte. Daraufhin werden Ergebnisse für die Interaktion aller Effekte zwischen Subjekten (einschließlich des Abschnitts) mit den Effekten innerhalb des Subjekts angezeigt, die sich zwischen Xund geändert haben M.

Ihre Beispiele für fitBsind einfacher zu verstehen, wenn wir die Standardeinstellungen für Xund hinzufügen M:

anova(fitB, idata=idB, M=~1, X=~0, test="Spherical") # IVb
anova(fitB, idata=idB, M=diag(3), X=~1, test="Spherical") # IVw1, IVw1:IVb

Das erste Modell ist der Wechsel von No-in-Subjekt-Effekten (alle haben den gleichen Mittelwert) in einen anderen Mittelwert für jeden. Daher haben wir den idZufallseffekt hinzugefügt. Dies ist das Richtige, um den Gesamtabschnitt und den Gesamtzwischen-Subjekt-Effekt zu testen auf.

Das zweite Modell zeigt die id:IVw1Interaktion an, die das Richtige ist, um sie zu testen IVw1und mit den IVw1:IVbBegriffen abzugleichen. Da es nur einen subjektinternen Effekt gibt (mit drei Ebenen), wird der Standardwert diag(3)im zweiten Modell berücksichtigt. es wäre gleichbedeutend mit laufen

anova(fitB, idata=idB, M=~IVw1, X=~1, test="Spherical") # IVw1, IVw1:IVb

fitCIch glaube für Sie , dass diese Befehle die AnovaZusammenfassung neu erstellen .

anova(fitC, idata=id, M=~1, X=~0, test="Spherical") #IVb
anova(fitC, idata=id, M=~IVw1 + IVw2, X=~IVw2, test="Spherical") # IVw1
anova(fitC, idata=id, M=~IVw1 + IVw2, X=~IVw1, test="Spherical") # IVw2
anova(fitC, idata=id, M=~IVw1 + IVw2 + IVw1:IVw2,
                  X=~IVw1 + IVw2, test="Spherical")          # IVw1:IVw2

Nun, wie Sie festgestellt haben, sind diese Befehle wirklich schwierig. Zum Glück gibt es keinen Grund mehr, sie zu benutzen. Wenn Sie bereit sind, Sphärizität anzunehmen, sollten Sie einfach die richtigen F-Tests aovverwenden lmund selbst berechnen, um die Syntax zu vereinfachen . Wenn Sie nicht bereit sind, Sphärizität anzunehmen, lmeist die Verwendung von die richtige Wahl, da Sie viel flexibler sind als bei den Korrekturen für GG und HF.

Zum Beispiel ist hier der aovund lmCode für Ihre fitA. Sie müssen die Daten zuerst im Langformat haben. Hier ist eine Möglichkeit, dies zu tun:

library(reshape)
d0 <- data.frame(id=1:nrow(DV), DV)
d0$IVb <- IVb
d0 <- melt(d0, id.vars=c(1,11), measure.vars=2:10)
id0 <- id
id0$variable <- factor(levels(d0$variable), levels=levels(d0$variable))
d <- merge(d0, id0)
d$id <- factor(d$id)

Und hier ist lm andaov` Code:

anova(lm(value ~ IVw1*IVw2*id, data=d))
summary(aov(value ~ IVw1*IVw2 + Error(id/(IVw1*IVw2)), data=d))
Aaron hat Stack Overflow verlassen
quelle
Vielen Dank, genau das habe ich gesucht! Ich war immer noch an anova()dem hierAnova() beschriebenen Problem interessiert . Aber Ihr letzter Vorschlag funktioniert genauso gut und ist einfacher. (Kleinigkeit: Ich denke, in den letzten 2 Zeilen fehlt jeweils eine schließende Klammer, und es sollte lauten )Error(id/(IVw1*IVw2))
Caracal
8

Split-Plot-Entwürfe stammen aus der Landwirtschaft, daher der Name. Aber sie kommen häufig vor und ich würde sagen - das Arbeitstier der meisten klinischen Studien. Die Hauptdarstellung wird mit einem Faktor behandelt, während die Werte eines anderen Faktors mit den Unterdarstellungen variieren können. Das Design ergibt sich aus Einschränkungen einer vollständigen Randomisierung. Zum Beispiel: Ein Feld kann in vier Unterzeichnungen unterteilt werden. Es kann möglich sein, verschiedene Sorten in Teilflächen anzupflanzen, es kann jedoch nur eine Art der Bewässerung für das gesamte Feld verwendet werden. Nicht die Unterscheidung zwischen Splits und Blöcken. Blöcke sind Merkmale der experimentellen Einheiten, die wir im experimentellen Design nutzen können, weil wir wissen, dass sie vorhanden sind. Splits schränken dagegen ein, welche Zuordnungen von Faktoren möglich sind. Sie stellen Anforderungen an das Design, die eine vollständige Randomisierung verhindern.

Sie werden häufig in klinischen Studien eingesetzt, bei denen ein Faktor leicht zu ändern ist, während ein anderer Faktor viel mehr Zeit in Anspruch nimmt. Wenn der Experimentator nacheinander alle Läufe für jede Stufe des schwer zu ändernden Faktors ausführen muss, wird ein Split-Plot-Design erstellt, bei dem der schwer zu ändernde Faktor den gesamten Plot-Faktor darstellt.

Hier ein Beispiel: In einem landwirtschaftlichen Feldversuch sollten die Auswirkungen von zwei Pflanzensorten und vier verschiedenen Bewässerungsmethoden ermittelt werden. Es standen acht Felder zur Verfügung, es kann jedoch nur eine Art von Bewässerung auf jedes Feld angewendet werden. Die Felder können in zwei Teile mit jeweils unterschiedlicher Sorte unterteilt werden. Der gesamte Plotfaktor ist die Bewässerung, die den Feldern zufällig zugewiesen werden sollte. In jedem Feld wird die Sorte zugeordnet.

So machen Sie das in R:

install.packages("faraway")
data(irrigation)
summary(irrigation)

library(lme4)

R> (lmer(yield ~ irrigation * variety + (1|field), data = irrigation))
Linear mixed model fit by REML 
Formula: yield ~ irrigation * variety + (1 | field) 
   Data: irrigation 
  AIC  BIC logLik deviance REMLdev
 65.4 73.1  -22.7     68.6    45.4
Random effects:
 Groups   Name        Variance Std.Dev.
 field    (Intercept) 16.20    4.02    
 Residual              2.11    1.45    
Number of obs: 16, groups: field, 8

Fixed effects:
                       Estimate Std. Error t value
(Intercept)               38.50       3.02   12.73
irrigationi2               1.20       4.28    0.28
irrigationi3               0.70       4.28    0.16
irrigationi4               3.50       4.28    0.82
varietyv2                  0.60       1.45    0.41
irrigationi2:varietyv2    -0.40       2.05   -0.19
irrigationi3:varietyv2    -0.20       2.05   -0.10
irrigationi4:varietyv2     1.20       2.05    0.58

Correlation of Fixed Effects:
            (Intr) irrgt2 irrgt3 irrgt4 vrtyv2 irr2:2 irr3:2
irrigation2 -0.707                                          
irrigation3 -0.707  0.500                                   
irrigation4 -0.707  0.500  0.500                            
varietyv2   -0.240  0.170  0.170  0.170                     
irrgtn2:vr2  0.170 -0.240 -0.120 -0.120 -0.707              
irrgtn3:vr2  0.170 -0.120 -0.240 -0.120 -0.707  0.500       
irrgtn4:vr2  0.170 -0.120 -0.120 -0.240 -0.707  0.500  0.500

Nach diesem Modell sind Bewässerung und Vielfalt im Grunde genommen feste Effekte, und die Vielfalt ist in die Bewässerung eingebettet. Die Felder sind die zufälligen Effekte und werden bildlich so ähnlich sein

I_1 | I_2 | I_3 | I_4

V_1 V_2 | V_1 V_2 | V_1 V_2 | V_1 V_2

Dies war jedoch eine spezielle Variante mit festem Gesamtplot-Effekt und Nebenplot-Effekt. Es kann Varianten geben, bei denen eine oder mehrere zufällig sind. Es kann kompliziertere Designs wie Split-Split-Plot-Designs geben. Grundsätzlich kann man wild und verrückt werden. Aber angesichts der zugrunde liegenden Struktur und Verteilung (dh fest oder zufällig, verschachtelt oder gekreuzt, ..) ist klar, dass ein lmer-NinjaWille keine Probleme bei der Modellierung hat. Vielleicht ist die Interpretation ein Chaos.

Sagen Sie in Bezug auf Vergleiche, Sie haben lmer1und lmer2:

anova(lmer1, lmer2)

Sie erhalten den geeigneten Test basierend auf der Chi-Quadrat-Teststatistik mit Freiheitsgraden, die der Differenz der Parameter entsprechen.

Siehe: Faraway, J., Extending Linear Models with R.

Casella, G., Statistical Design

suncoolsu
quelle
Ich schätze die Einführung in die Analyse von Split-Splot-Designs mit Mixed-Effects-Modellen und weiteren Hintergrundinformationen! Dies ist sicherlich die bevorzugte Methode zur Durchführung der Analyse. Ich habe meine Frage aktualisiert, um zu betonen, dass ich immer noch gerne wissen möchte, wie dies "auf die alte Art" gemacht wird.
Karakal