So führen sie eine zweifaktorielle anova in r durch


Eine zweifaktorielle ANOVA („Varianzanalyse“) wird verwendet, um zu bestimmen, ob ein statistisch signifikanter Unterschied zwischen den Mittelwerten von drei oder mehr unabhängigen Gruppen besteht, die auf zwei Faktoren aufgeteilt wurden.

In diesem Tutorial wird erläutert, wie eine zweifaktorielle ANOVA in R durchgeführt wird.

Beispiel: Zweifaktorielle ANOVA in R

Nehmen wir an, wir möchten herausfinden, ob Trainingsintensität und Geschlecht einen Einfluss auf die Gewichtsabnahme haben. In diesem Fall sind die beiden Faktoren, die wir betrachten, Bewegung und Geschlecht , und die Antwortvariable ist der Gewichtsverlust, gemessen in Pfund.

Wir können eine Zwei-Wege-ANOVA durchführen, um festzustellen, ob Bewegung und Geschlecht einen Einfluss auf die Gewichtsabnahme haben und um festzustellen, ob eine Wechselwirkung zwischen Bewegung und Geschlecht auf die Gewichtsabnahme besteht.

Wir rekrutieren 30 Männer und 30 Frauen für die Teilnahme an einem Experiment, bei dem wir jeweils 10 nach dem Zufallsprinzip dazu auffordern, einen Monat lang ein Programm ohne, leichtes oder intensives Training zu absolvieren.

Der folgende Code erstellt den Datenrahmen, mit dem wir arbeiten werden:

 #make this example reproducible
set.seed(10)

#create data frame
data <- data.frame(gender = rep(c("Male", "Female"), each = 30),
                   exercise = rep(c("None", "Light", "Intense"), each = 10, times = 2),
                   weight_loss = c(runif(10, -3, 3), runif(10, 0, 5), runif(10, 5, 9),
                                   runif(10, -4, 2), runif(10, 0, 3), runif(10, 3, 8)))

#view first six rows of data frame
head(data)

# gender exercise weight_loss
#1 Male None 0.04486922
#2 Male None -1.15938896
#3 Male None -0.43855400
#4 Male None 1.15861249
#5 Male None -2.48918419
#6 Male None -1.64738030

#see how many participants are in each group
table(data$gender, data$exercise)

# Intense Light None
# Female 10 10 10
# Male 10 10 10

Erkunden Sie die Daten

Bevor wir das Zwei-Wege-ANOVA-Modell überhaupt anpassen, können wir die Daten besser verstehen, indem wir mithilfe des dplyr- Pakets den Mittelwert und die Standardabweichung des Gewichtsverlusts für jede der sechs Behandlungsgruppen ermitteln:

 #load dplyr package
library(dplyr)

#find mean and standard deviation of weight loss for each treatment group
data %>%
  group_by (gender, exercise) %>%
  summarize (mean = mean(weight_loss),
            sd = sd(weight_loss))

# A tibble: 6 x 4
# Groups: gender [2]
# gender exercise means sd
#          
#1 Female Intense 5.31 1.02 
#2 Female Light 0.920 0.835
#3 Female None -0.501 1.77 
#4 Male Intense 7.37 0.928
#5 Male Light 2.13 1.22 
#6 Male None -0.698 1.12 

Wir können auch ein Boxplot für jede der sechs Behandlungsgruppen erstellen, um die Verteilung des Gewichtsverlusts für jede Gruppe zu visualisieren:

 #set margins so that axis labels on boxplot don't get cut off
by(mar=c(8, 4.1, 4.1, 2.1))

#create boxplots
boxplot(weight_loss ~ gender:exercise,
data = data,
main = "Weight Loss Distribution by Group",
xlab = "Group",
ylab = "Weight Loss",
col = "steelblue",
border = "black", 
las = 2 #make x-axis labels perpendicular
)

Wir können sofort erkennen, dass die beiden Gruppen, die intensiv trainierten, offenbar höhere Gewichtsverlustwerte aufwiesen. Wir können auch sehen, dass Männer sowohl in der intensiven als auch in der leichten Trainingsgruppe tendenziell höhere Gewichtsverlustwerte haben als Frauen.

Als nächstes passen wir das Zwei-Wege-ANOVA-Modell an unsere Daten an, um zu sehen, ob diese visuellen Unterschiede tatsächlich statistisch signifikant sind.

Anpassung des Zwei-Wege-ANOVA-Modells

Die allgemeine Syntax zum Anpassen eines Zwei-Wege-ANOVA-Modells in R lautet:

aov(Antwortvariable ~predictor_variable1 *predictor_variable2, data = dataset)

Beachten Sie, dass das * zwischen den beiden Prädiktorvariablen anzeigt, dass wir auch einen Interaktionseffekt zwischen den beiden Prädiktorvariablen testen möchten.

In unserem Beispiel können wir den folgenden Code verwenden, um das Zwei-Wege-ANOVA-Modell anzupassen, indem wir „weight_loss“ als Antwortvariable und „Geschlecht “ und „ Training“ als die beiden Prädiktorvariablen verwenden.

Anschließend können wir die Funktion summary() verwenden, um das Ergebnis unseres Modells anzuzeigen:

 #fit the two-way ANOVA model
model <- aov(weight_loss ~ gender * exercise, data = data)

#view the model output
summary(model)

# Df Sum Sq Mean Sq F value Pr(>F)    
#gender 1 15.8 15.80 11.197 0.0015 ** 
#exercise 2 505.6 252.78 179.087 <2e-16 ***
#gender:exercise 2 13.0 6.51 4.615 0.0141 *  
#Residuals 54 76.2 1.41                   
#---
#Significant. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

Anhand der Modellergebnisse können wir erkennen, dass Geschlecht , Bewegung und die Interaktion zwischen den beiden Variablen alle statistisch signifikant auf dem Signifikanzniveau 0,05 sind.

Ü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 zweifaktorielle ANOVA davon aus:

1. Unabhängigkeit – die Beobachtungen jeder Gruppe müssen unabhängig voneinander sein. Da wir ein randomisiertes Design verwendet haben , 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 Gruppenkombination der beiden Faktoren eine annähernd normale Verteilung aufweisen.

Eine Möglichkeit, diese Annahme zu testen, besteht darin, ein Histogramm der Modellresiduen zu erstellen. Wenn die Residuen annähernd normalverteilt sind, sollte diese Annahme erfüllt sein.

 #define model residuals
reside <- model$residuals

#create histogram of residuals
hist(resid, main = "Histogram of Residuals", xlab = "Residuals", col = "steelblue")

Die Residuen sind annähernd normalverteilt, sodass wir davon ausgehen können, dass die Normalitätsannahme erfüllt ist.

3. Gleiche Varianz – die Varianzen für jede Gruppe sind gleich oder annähernd gleich.

Eine Möglichkeit, diese Annahme zu überprüfen, besteht darin, einen Levene-Test auf Varianzgleichheit unter Verwendung des Autopakets durchzuführen:

 #load car package
library(car)

#conduct Levene's Test for equality of variances
leveneTest(weight_loss ~ gender * exercise, data = data)

#Levene's Test for Homogeneity of Variance (center = median)
# Df F value Pr(>F)
#group 5 1.8547 0.1177
#54  

Da der p-Wert des Tests größer als unser Signifikanzniveau von 0,05 ist, können wir davon ausgehen, dass unsere Annahme der Varianzgleichheit zwischen den Gruppen erfüllt ist.

Analysieren Sie Behandlungsunterschiede

Sobald wir überprüft haben, dass die Modellannahmen 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 ~ gender * exercise, data = data)
#
#$gender
# diff lwr upr p adj
#Male-Female 1.026456 0.4114451 1.641467 0.0014967
#
#$exercise
# diff lwr upr p adj
#Light-Intense -4.813064 -5.718493 -3.907635 0.0e+00
#None-Intense -6.938966 -7.844395 -6.033537 0.0e+00
#None-Light -2.125902 -3.031331 -1.220473 1.8e-06
#
#$`gender:exercise`
# diff lwr upr p adj
#Male:Intense-Female:Intense 2.0628297 0.4930588 3.63260067 0.0036746
#Female:Light-Female:Intense -4.3883563 -5.9581272 -2.81858535 0.0000000
#Male:Light-Female:Intense -3.1749419 -4.7447128 -1.60517092 0.0000027
#Female:None-Female:Intense -5.8091131 -7.3788841 -4.23934219 0.0000000
#Male:None-Female:Intense -6.0059891 -7.5757600 -4.43621813 0.0000000
#Female:Light-Male:Intense -6.4511860 -8.0209570 -4.88141508 0.0000000
#Male:Light-Male:Intense -5.2377716 -6.8075425 -3.66800066 0.0000000
#Female:None-Male:Intense -7.8719429 -9.4417138 -6.30217192 0.0000000
#Male:None-Male:Intense -8.0688188 -9.6385897 -6.49904786 0.0000000
#Male:Light-Female:Light 1.2134144 -0.3563565 2.78318536 0.2185439
#Female:None-Female:Light -1.4207568 -2.9905278 0.14901410 0.0974193
#Male:None-Female:Light -1.6176328 -3.1874037 -0.04786184 0.0398106
#Female:None-Male:Light -2.6341713 -4.2039422 -1.06440032 0.0001050
#Male:None-Male:Light -2.8310472 -4.4008181 -1.26127627 0.0000284
#Male:None-Female:None -0.1968759 -1.7666469 1.37289500 0.9990364

Der p-Wert gibt an, ob zwischen den einzelnen Gruppen ein statistisch signifikanter Unterschied besteht oder nicht.

In der letzten Zeile oben sehen wir beispielsweise, dass die Gruppe der Männer, die keine Übungen machten, keinen statistisch signifikanten Unterschied beim Gewichtsverlust im Vergleich zur Gruppe der Frauen, die keine Übungen machten, aufwies (p-Wert: 0,990364).

Wir können die 95 %-Konfidenzintervalle, die sich aus dem Tukey-Test ergeben, auch mithilfe der Funktion plot() in R visualisieren:

 #set axis margins so labels don't get cut off
by(mar=c(4.1, 13, 4.1, 2.1))

#create confidence interval for each comparison
plot(TukeyHSD(model, conf.level=.95), las = 2)

Berichterstattung über Ergebnisse der zweifaktoriellen ANOVA

Schließlich können wir die Ergebnisse der zweifaktoriellen ANOVA auf eine Weise berichten, die die Ergebnisse zusammenfasst:

Eine Zwei-Wege-ANOVA wurde durchgeführt, um die Auswirkungen des Geschlechts ( männlich, weiblich) und des Trainingsprogramms (kein, leicht, intensiv) auf den Gewichtsverlust (gemessen in Pfund) zu untersuchen. Es gab eine statistisch signifikante Wechselwirkung zwischen den Auswirkungen von Geschlecht und Bewegung auf den Gewichtsverlust (F(2, 54) = 4,615, p = 0,0141). Post-hoc-Tukey-HSD-Tests wurden durchgeführt.

Bei Männern führte ein intensives Trainingsprogramm zu einem deutlich größeren Gewichtsverlust als ein leichtes Programm (p < 0,0001) oder kein Trainingsprogramm (p < 0,0001). Darüber hinaus führte eine leichte Ernährung bei Männern zu einem deutlich größeren Gewichtsverlust als kein Training (p < 0,0001).

Bei Frauen führte ein intensives Trainingsprogramm zu einem deutlich größeren Gewichtsverlust als ein leichtes Programm (p < 0,0001) oder kein Trainingsprogramm (p < 0,0001).

Normalitätsprüfungen und der Levene-Test wurden durchgeführt, um zu überprüfen, ob die Annahmen der ANOVA erfüllt waren.

Einen Kommentar hinzufügen

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert