So führen Sie eine ANCOVA in R


17

Ich möchte eine ANCOVA-Analyse der Daten zur Dichte der Pflanzenepiphyten durchführen. Zuerst würde ich gerne wissen, ob es einen Unterschied in der Pflanzendichte zwischen zwei Hängen gibt, einem N und einem S, aber ich habe andere Daten wie die Höhe, die Offenheit der Überdachung und die Höhe der Wirtspflanze. Ich weiß, dass meine Kovariate die beiden Steigungen (N und S) sein müsste. Ich habe dieses Modell gebaut, das in R läuft und obwohl ich keine Ahnung habe, ob es gut funktioniert. Auch würde ich gerne wissen, was der Unterschied ist, wenn ich das Symbol +oder verwende *.

model1 <- aov(density~slope+altitude+canopy+height)
summary(model1)
model1

3
+ berechnet nur die Haupteffekte, * schätzt die Wechselwirkungen zwischen den mit * verbundenen Faktoren. ANCOVA-Frameworks schätzen normalerweise nur einen Haupteffekt des kontinuierlichen Faktors, aber Wechselwirkungen zwischen allen gruppierten Faktoren.
Russellpierce

Antworten:


14

Das grundlegende Werkzeug dafür ist lm; Beachten Sie, dass dies aovein Wrapper für ist lm.

Insbesondere wenn Sie eine Gruppierungsvariable (Faktor), G und eine kontinuierliche Kovariate x , y ~ x + gpasst das Modell zu einem ANCOVA-Modell mit Haupteffekten, während y ~ x * ges zu einem Modell passt, das die Interaktion mit der Kovariate umfasst. aovwird die gleichen Formeln annehmen.

Achten Sie besonders auf die Notein der Hilfe auf aov.

Was +vs *angeht, so behandelt russellpierce es ziemlich genau, aber ich empfehle Ihnen einen Blick auf ?lmund ?formulainsbesondere auf Abschnitt 11.1 des Handbuchs Eine Einführung in R , das mit R geliefert wird (oder Sie können es online finden, wenn Sie nicht herausgefunden haben, wie Um es auf Ihrem Computer zu finden, müssen Sie am einfachsten das Pulldown-Menü "Hilfe" in R oder RStudio aufrufen.


Angenommen, ich habe zwei Gruppenfaktoren und zwei Kovariaten x 1 , x 2 , wobei mein Modell y i j = μ + α i + η j + x i j 1 γ 1 + x i j 2 γ 2 ist + ϵ i j Tut y ~ g_1 + g_2 + x_1 + x_2 den gleichen Trick? Führen Sie die gegen x_1 und x_2 erhaltenen F-Werte durch und testen Sie γ 1 = 0 und γG1,G2x1,x2
yichj=μ+αich+ηj+xichj1γ1+xichj2γ2+ϵichj
γ1=0 bzw.? γ2=0
Sayan

Ich bin mir nicht sicher, wie ich das verpasst habe. Ja. .... und wenn Sie beide auf einmal testen möchten, passen Sie beide mit und ohne an und übergeben Sie die angepassten lm-Objekte an anova(Sie werden bald sehen, ob Sie sie in der falschen Reihenfolge angeben, da einige SS negativ sind, wenn Sie dies tun )
Glen_b

10

Ich empfehle, Discovering Statistics mit R by Field abzurufen und zu lesen . Er hat einen schönen Abschnitt über ANCOVA.

Um ANCOVA in R auszuführen, laden Sie die folgenden Pakete:

car
compute.es
effects
ggplot2
multcomp
pastecs
WRS

Wenn Sie lmoder verwenden aov(ich verwende aov), stellen Sie sicher, dass Sie die Kontraste mit der Funktion "Kontraste" einstellen, bevor Sie entweder aovoder ausführen lm. R verwendet standardmäßig nicht-orthogonale Kontraste, die alles in einer ANCOVA durcheinander bringen können. Wenn Sie orthogonale Kontraste einstellen möchten, verwenden Sie:

contrasts(dataname$factorvariable)=contr.poly(# of levels, i.e. 3) 

dann starte dein modell als

model.1=aov(dv~covariate+factorvariable, data=dataname)

So zeigen Sie das Modell an:

Anova(model.1, type="III") 

Stellen Sie sicher, dass Sie hier das Großbuchstaben "A" verwenden Anovaund nicht anova. Dies ergibt Ergebnisse unter Verwendung von Typ III SS.

summary.lm(model.1)wird eine weitere Zusammenfassung geben und die R-sq enthält. Ausgabe.

posth=glht(model.1, linfct=mcp(factorvariable="Tukey"))  ##gives the post-hoc Tukey analysis
summary(posth) ##shows the output in a nice format.

Wenn Sie die Homogenität von Regressionssteigungen testen möchten, können Sie auch einen Interaktionsterm für die IV und die Kovariate einfügen. Das wäre:

model=aov(dv~covariate+IV+covariate:IV, data=dataname)

Wenn der Interaktionsterm signifikant ist, haben Sie keine Homogenität.


Warum bringen nicht-orthogonale Kontraste alles durcheinander?
Tintinthong

1
Um die Frage zu beantworten, warum nicht-orthogonale Kontraste alles durcheinander bringen. Die Antwort ist, dass R standardmäßig nicht-orthogonal ist (dh die Differenz zwischen den Mittelwerten), was zu Problemen führen kann, wenn Sie den Beitrag jeder IV separat anzeigen möchten. Wenn wir orthogonale Kontraste angeben, teilen wir R mit, dass die SS für die IV vollständig partitioniert und nicht überlappend sein soll. Auf diese Weise können wir die Variation, die jedem Prädiktor zugeschrieben wird, klar und deutlich erkennen. Wenn Sie nicht angeben, verwendet R standardmäßig eine liberalere Herangehensweise an den Kontrast.

2
Warum das Interesse an Typ III SS?
Frank Harrell

4

Hier finden Sie eine ergänzende Dokumentation http://goo.gl/yxUZ1R des von @Butorovich vorgeschlagenen Verfahrens. Außerdem ist meine Beobachtung, dass, wenn die Kovariate binär ist, die Verwendung der Zusammenfassung (lm.Objekt) die gleiche IV-Schätzung ergibt, wie sie von Anova erzeugt wird (lm.Objekt, Typ = "III").


1
Es ist nicht klar, dass dies eine Antwort sein soll. Ist es? Wenn ja, bitte bearbeiten, um zu klären. Wenn es sich um eine Frage handelt, klicken Sie ASK QUESTIONoben auf und stellen Sie sie dort. Dann können wir Ihnen richtig helfen.
gung - Reinstate Monica

Einverstanden. Die Nachricht wurde als (ergänzende) Antwort zur vorherigen überarbeitet.
XX

3

Wir verwenden die Regressionsanalyse, um Modelle zu erstellen, die die Auswirkung der Variation von Prädiktorvariablen auf die Antwortvariable beschreiben. Manchmal, wenn wir eine kategoriale Variable mit Werten wie Ja / Nein oder Männlich / Weiblich usw. haben, liefert die einfache Regressionsanalyse mehrere Ergebnisse für jeden Wert der kategorialen Variablen. In einem solchen Szenario können wir die Auswirkung der kategorialen Variablen untersuchen, indem wir sie zusammen mit der Prädiktorvariablen verwenden und die Regressionslinien für jede Ebene der kategorialen Variablen vergleichen. Eine solche Analyse wird als Analyse der Kovarianz bezeichnet, die auch als ANCOVA bezeichnet wird.

Beispiel
Betrachten Sie den Reingebauten Datensatz mtcars. Darin beobachten wir, dass das Feld amdie Art der Übertragung darstellt (automatisch oder manuell). Es ist eine kategoriale Variable mit den Werten 0 und 1. Der Meilen pro Gallone-Wert ( mpg) eines Autos kann neben dem Wert der Pferdestärke ( hp) auch davon abhängen . Wir untersuchen die Auswirkung des Wertes von amauf die Regression zwischenmpg und hp. Dies geschieht mit der aov()Funktion, gefolgt von der anova()Funktion zum Vergleichen der mehreren Regressionen.

Eingabedaten
eines Datenrahmens Erstellen Sie die Felder enthalten mpg, hpund amaus dem Datensatz mtcars. Hier nehmen wir mpgals Antwortvariable,hp als Prädiktorvariable und amals kategoriale Variable.

input <- mtcars[,c("am","mpg","hp")]
head(input)

Wenn wir den obigen Code ausführen, wird folgendes Ergebnis erzeugt:

                  am  mpg  hp
Mazda RX4          1 21.0 110
Mazda RX4 Wag      1 21.0 110
Datsun 710         1 22.8  93
Hornet 4 Drive     0 21.4 110
Hornet Sportabout  0 18.7 175
Valiant            0 18.1 105

ANCOVA-Analyse
Wir erstellen ein Regressionsmodell, das hpals Prädiktorvariable und mpgals Antwortvariable die Wechselwirkung zwischen berücksichtigtam undhp .

Modell mit Interaktion zwischen kategorialer Variable und Prädiktorvariable

Erstellen Sie ein Regressionsmodell1

result1 <- aov(mpg~hp*am,data=mtcars)
summary(result1)

Wenn wir den obigen Code ausführen, wird folgendes Ergebnis erzeugt:

            Df Sum Sq Mean Sq F value   Pr(>F)    
hp           1  678.4   678.4  77.391 1.50e-09 ***
am           1  202.2   202.2  23.072 4.75e-05 ***
hp:am        1    0.0     0.0   0.001    0.981    
Residuals   28  245.4     8.8                     
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1   1

Dieses Ergebnis zeigt, dass sowohl die Pferdestärke als auch der Getriebetyp einen signifikanten Einfluss auf die Meilen pro Gallone haben, da der p-Wert in beiden Fällen unter 0,05 liegt. Die Wechselwirkung zwischen diesen beiden Variablen ist jedoch nicht signifikant, da der p-Wert mehr als 0,05 beträgt.

Modell ohne Wechselwirkung zwischen kategorialer Variable und Prädiktorvariable

Erstellen Sie das Regressionsmodell2

result2 <- aov(mpg~hp+am,data=mtcars)
summary(result2)

Wenn wir den obigen Code ausführen, wird folgendes Ergebnis erzeugt:

            Df Sum Sq Mean Sq F value   Pr(>F)    
hp           1  678.4   678.4   80.15 7.63e-10 ***
am           1  202.2   202.2   23.89 3.46e-05 ***
Residuals   29  245.4     8.5                     
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1   1

Dieses Ergebnis zeigt, dass sowohl die Pferdestärke als auch der Getriebetyp einen signifikanten Einfluss auf die Meilen pro Gallone haben, da der p-Wert in beiden Fällen unter 0,05 liegt.

Vergleich zweier Modelle
Nun können wir die beiden Modelle vergleichen, um festzustellen, ob die Wechselwirkung der Variablen wirklich unbedeutend ist. Dafür verwenden wir die anova()Funktion.

 anova(result1,result2)

 Model 1: mpg ~ hp * am
 Model 2: mpg ~ hp + am
   Res.Df    RSS Df  Sum of Sq     F Pr(>F)
 1     28 245.43                           
 2     29 245.44 -1 -0.0052515 6e-04 0.9806

Da der p-Wert größer als 0,05 ist, schließen wir, dass die Wechselwirkung zwischen Pferdestärke und Getriebetyp nicht signifikant ist. Die Laufleistung pro Gallone hängt also in ähnlicher Weise von der Pferdestärke des Fahrzeugs sowohl im automatischen als auch im manuellen Getriebemodus ab.


Also was war zuerst da, diese Antwort oder dieser Beitrag über Tutorials? tutorialspoint.com/r/r_analysis_of_covariance.htm . Sollte diese Antwort als Plagiat gelöscht werden? Oder haben Tutorials nur darauf hingewiesen, von hier zu kopieren?
John
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.