So führen sie eine einfaktorielle anova in r durch
Eine einfaktorielle ANOVA wird verwendet, um zu bestimmen, ob ein statistisch signifikanter Unterschied zwischen den Mittelwerten von drei oder mehr unabhängigen Gruppen besteht.
Diese Art von Test wird als einfaktorielle ANOVA bezeichnet, da wir den Einfluss einer Prädiktorvariablen auf eine Antwortvariable analysieren.
Hinweis : Wenn wir stattdessen an der Auswirkung zweier Prädiktorvariablen auf eine Antwortvariable interessiert wären, könnten wir eine Zwei-Wege-ANOVA durchführen.
So führen Sie eine einfaktorielle ANOVA in R durch
Das folgende Beispiel veranschaulicht, wie eine einfaktorielle ANOVA in R durchgeführt wird.
Hintergrund
Angenommen, wir möchten feststellen, ob drei verschiedene Trainingsprogramme unterschiedliche Auswirkungen auf die Gewichtsabnahme haben. Die von uns untersuchte Prädiktorvariable ist das Trainingsprogramm und die Antwortvariable ist der Gewichtsverlust, gemessen in Pfund.
Wir können eine einfaktorielle ANOVA durchführen, um festzustellen, ob es einen statistisch signifikanten Unterschied zwischen dem Gewichtsverlust aufgrund der drei Programme gibt.
Wir rekrutieren 90 Personen für die Teilnahme an einem Experiment, bei dem wir 30 Personen nach dem Zufallsprinzip dazu auffordern, einen Monat lang entweder Programm A, Programm B oder Programm C zu befolgen.
Der folgende Code erstellt den Datenrahmen, mit dem wir arbeiten werden:
#make this example reproducible
set.seed(0)
#create data frame
data <- data.frame(program = rep(c("A", "B", "C"), each = 30),
weight_loss = c(runif(30, 0, 3),
runif(30, 0, 5),
runif(30, 1, 7)))
#view first six rows of data frame
head(data)
# program weight_loss
#1 A 2.6900916
#2 A 0.7965260
#3 A 1.1163717
#4 A 1.7185601
#5 A 2.7246234
#6 A 0.6050458
Die erste Spalte des Datenrahmens zeigt das Programm, an dem die Person einen Monat lang teilgenommen hat, und die zweite Spalte zeigt den gesamten Gewichtsverlust, den die Person am Ende des Programms erlitten hat, gemessen in Pfund.
Erkunden Sie die Daten
Bevor wir überhaupt das einfaktorielle ANOVA-Modell anpassen, können wir die Daten besser verstehen, indem wir den Mittelwert und die Standardabweichung des Gewichtsverlusts für jedes der drei Programme mithilfe des dplyr- Pakets ermitteln:
#load dplyr package library (dplyr) #find mean and standard deviation of weight loss for each treatment group data %>% group_by (program) %>% summarize (mean = mean(weight_loss), sd = sd(weight_loss)) # A tibble: 3 x 3 # program mean sd # #1 A 1.58 0.905 #2 B 2.56 1.24 #3 C 4.13 1.57
Wir können auch ein Boxplot für jedes der drei Programme erstellen, um die Verteilung des Gewichtsverlusts für jedes Programm zu visualisieren:
#create boxplots
boxplot(weight_loss ~ program,
data = data,
main = "Weight Loss Distribution by Program",
xlab = "Program",
ylab = "Weight Loss",
col = "steelblue",
border = "black")
Aus diesen Boxplots können wir ersehen, dass der durchschnittliche Gewichtsverlust bei Teilnehmern an Programm C am höchsten und der durchschnittliche Gewichtsverlust bei Teilnehmern an Programm A am niedrigsten ist.
Wir können auch sehen, dass die Standardabweichung (die „Länge“ des Boxplots) für die Gewichtsabnahme in Programm C etwas höher ist als in den beiden anderen Programmen.
Als nächstes passen wir das einfaktorielle ANOVA-Modell an unsere Daten an, um zu sehen, ob diese visuellen Unterschiede tatsächlich statistisch signifikant sind.
Anpassung des einfaktoriellen ANOVA-Modells
Die allgemeine Syntax zum Anpassen eines einfaktoriellen ANOVA-Modells in R lautet:
aov(Antwortvariable ~ Vorhersagevariable, Daten = Datensatz)
In unserem Beispiel können wir den folgenden Code verwenden, um das einfaktorielle ANOVA-Modell anzupassen, indem wir „ weight_loss“ als Antwortvariable und „ program“ als Prädiktorvariable verwenden. Anschließend können wir die Funktion summary() verwenden, um das Ergebnis unseres Modells anzuzeigen:
#fit the one-way ANOVA model model <- aov(weight_loss ~ program, data = data) #view the model output summary(model) # Df Sum Sq Mean Sq F value Pr(>F) #program 2 98.93 49.46 30.83 7.55e-11 *** #Residuals 87 139.57 1.60 #--- #Significant. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
Aus den Modellergebnissen können wir ersehen, dass das Programm der Prädiktorvariablen auf dem Signifikanzniveau 0,05 statistisch signifikant ist.
Mit anderen Worten: Es gibt einen statistisch signifikanten Unterschied zwischen dem durchschnittlichen Gewichtsverlust, der sich aus den drei Programmen ergibt.
Überprüfung der Modellannahmen
Bevor wir fortfahren, müssen wir überprüfen, ob die Annahmen unseres Modells erfüllt sind, damit unsere Modellergebnisse zuverlässig sind. Insbesondere geht eine einfaktorielle ANOVA davon aus:
1. Unabhängigkeit – die Beobachtungen jeder Gruppe müssen unabhängig voneinander sein. Da wir ein randomisiertes Design verwendet haben (das heißt, wir haben die Teilnehmer den Übungsprogrammen nach dem Zufallsprinzip zugewiesen), sollte diese Annahme erfüllt sein, sodass wir uns darüber keine allzu großen Sorgen machen müssen.
2. Normalität – die abhängige Variable sollte für jede Ebene der Prädiktorvariablen eine annähernd normale Verteilung aufweisen.
3. Gleiche Varianz – die Varianzen für jede Gruppe sind gleich oder annähernd gleich.
Eine Möglichkeit, die Annahmen von Normalität und gleicher Varianz zu überprüfen, ist die Verwendung der Funktion plot() , die vier Diagramme zur Modellprüfung erstellt. Insbesondere sind wir an den folgenden beiden Grundstücken interessiert:
- Reste vs. angepasst – Dieses Diagramm zeigt die Beziehung zwischen Residuen und angepassten Werten. Anhand dieses Diagramms können wir grob beurteilen, ob die Varianz zwischen den Gruppen ungefähr gleich ist oder nicht.
- QQ-Diagramm – Dieses Diagramm zeigt die standardisierten Residuen gegenüber den theoretischen Quantilen an. Anhand dieses Diagramms können wir grob beurteilen, ob die Normalitätsannahme erfüllt ist oder nicht.
Der folgende Code kann verwendet werden, um diese Modellprüfdiagramme zu erstellen:
plot(model)
Das obige QQ-Diagramm ermöglicht es uns, die Normalitätsannahme zu überprüfen. Idealerweise würden die standardisierten Residuen entlang der geraden diagonalen Linie des Diagramms liegen. In der obigen Grafik können wir jedoch sehen, dass die Residuen zum Anfang und Ende hin ein wenig von der Linie abweichen. Dies weist darauf hin, dass unsere Normalitätsannahme möglicherweise verletzt wird.
Die Reste vs. Die angepasste Grafik oben ermöglicht es uns, unsere Annahme gleicher Varianzen zu überprüfen. Im Idealfall möchten wir, dass die Residuen für jede Ebene der angepassten Werte gleichmäßig verteilt sind.
Wir können sehen, dass die Residuen für die höher angepassten Werte viel stärker gestreut sind, was darauf hindeutet, dass unsere Annahme der Varianzgleichheit möglicherweise verletzt ist.
Um formal auf gleiche Varianzen zu testen, könnten wir den Levene-Test mit dem Paket car durchführen:
#load car package library (car) #conduct Levene's Test for equality of variances leveneTest(weight_loss ~ program, data = data) #Levene's Test for Homogeneity of Variance (center = median) # Df F value Pr(>F) #group 2 4.1716 0.01862 * #87 #--- #Significant. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
Der p-Wert des Tests beträgt 0,01862 . Wenn wir ein Signifikanzniveau von 0,05 verwenden, würden wir die Nullhypothese ablehnen, dass die Varianzen in allen drei Programmen gleich sind. Wenn wir jedoch ein Signifikanzniveau von 0,01 verwenden, werden wir die Nullhypothese nicht ablehnen.
Obwohl wir versuchen könnten, die Daten zu transformieren, um sicherzustellen, dass unsere Annahmen über Normalität und Varianzgleichheit erfüllt sind, machen wir uns darüber im Moment keine allzu großen Sorgen.
Analysieren Sie Behandlungsunterschiede
Sobald wir überprüft haben, dass die Modellannahmen erfüllt (oder einigermaßen erfüllt) sind, können wir einen Post-hoc-Test durchführen, um genau zu bestimmen, welche Behandlungsgruppen sich voneinander unterscheiden.
Für unseren Post-hoc-Test verwenden wir die Funktion TukeyHSD() , um den Tukey-Test für mehrere Vergleiche durchzuführen:
#perform Tukey's Test for multiple comparisons
TukeyHSD(model, conf.level=.95)
#Tukey multiple comparisons of means
# 95% family-wise confidence level
#
#Fit: aov(formula = weight_loss ~ program, data = data)
#
#$program
# diff lwr upr p adj
#BA 0.9777414 0.1979466 1.757536 0.0100545
#CA 2.5454024 1.7656076 3.325197 0.0000000
#CB 1.5676610 0.7878662 2.347456 0.0000199
Der p-Wert gibt an, ob zwischen den einzelnen Programmen ein statistisch signifikanter Unterschied besteht oder nicht. Die Ergebnisse zeigen, dass es einen statistisch signifikanten Unterschied zwischen dem durchschnittlichen Gewichtsverlust jedes Programms auf dem Signifikanzniveau 0,05 gibt.
Wir können die 95 %-Konfidenzintervalle, die sich aus dem Tukey-Test ergeben, auch mithilfe der Funktion plot(TukeyHSD()) in R visualisieren:
#create confidence interval for each comparison
plot(TukeyHSD(model, conf.level=.95), las = 2)
Die Ergebnisse der Konfidenzintervalle stimmen mit den Ergebnissen der Hypothesentests überein.
Insbesondere können wir erkennen, dass keines der Konfidenzintervalle für den durchschnittlichen Gewichtsverlust zwischen den Programmen den Wert Null enthält, was darauf hindeutet, dass es einen statistisch signifikanten Unterschied im durchschnittlichen Gewichtsverlust zwischen den drei Programmen gibt.
Dies steht im Einklang damit, dass alle p-Werte für unsere Hypothesentests unter 0,05 liegen.
Berichterstattung über Ergebnisse der einfaktoriellen ANOVA
Schließlich können wir die Ergebnisse der einfaktoriellen ANOVA auf eine Weise berichten, die die Ergebnisse zusammenfasst:
Um die Auswirkungen des Trainingsprogramms zu untersuchen, wurde eine einfaktorielle ANOVA durchgeführt zum Gewichtsverlust (gemessen in Pfund). Es gab einen statistisch signifikanten Unterschied zwischen den Auswirkungen der drei Programme auf die Gewichtsabnahme (F(2, 87) = 30,83, p = 7,55e-11). Post-hoc-Tukey-HSD-Tests wurden durchgeführt.
Der durchschnittliche Gewichtsverlust der Teilnehmer an Programm C ist deutlich größer als der durchschnittliche Gewichtsverlust der Teilnehmer an Programm B (p < 0,0001).
Der durchschnittliche Gewichtsverlust der Teilnehmer an Programm C ist deutlich größer als der durchschnittliche Gewichtsverlust der Teilnehmer an Programm A (p < 0,0001).
Darüber hinaus war der durchschnittliche Gewichtsverlust der Teilnehmer an Programm B deutlich größer als der durchschnittliche Gewichtsverlust der Teilnehmer an Programm A (p = 0,01).
Zusätzliche Ressourcen
Die folgenden Tutorials bieten zusätzliche Informationen zu einfaktoriellen ANOVAs:
Eine Einführung in die einfaktorielle ANOVA
Ein Leitfaden zur Verwendung von Post-Hoc-Tests mit ANOVA
Der vollständige Leitfaden: So melden Sie ANOVA-Ergebnisse