Wie man eine MANOVA in R durchführt

Von Fabian
Kategorie: R
Tags: ANOVA
Lesezeit: 4 Minuten

Um die MANOVA zu verstehen, ist es zunächst hilfreich, die ANOVA zu verstehen.

Eine ANOVA (Varianzanalyse) wird verwendet, um zu bestimmen, ob es einen statistisch signifikanten Unterschied zwischen den Mittelwerten von drei oder mehr unabhängigen Gruppen gibt oder nicht.

Angenommen, wir möchten wissen, ob sich das Lernen von Technik auf die Prüfungsergebnisse einer Klasse von Studenten auswirkt oder nicht. Wir haben die Klasse zufällig in drei Gruppen aufgeteilt. Jede Gruppe verwendet einen Monat lang eine andere Lerntechnik, um sich auf eine Prüfung vorzubereiten. Am Ende des Monats legen alle Schüler die gleiche Prüfung ab.

Um herauszufinden, ob sich das Studium der Technik auf die Prüfungsergebnisse auswirkt, können wir eine einfaktorielle ANOVA durchführen, die uns Aufschluss darüber gibt, ob zwischen den Durchschnittswerten der drei Gruppen ein statistisch signifikanter Unterschied besteht.

Einfaktorielle ANOVA-Beispiel

In einer ANOVA haben wir eine Antwortvariable. In einer MANOVA (multivariate Varianzanalyse) haben wir jedoch mehrere Antwortvariablen.

Angenommen, wir möchten wissen, wie sich das Bildungsniveau (d.h. High School, Associates Degree, Bachelor-Abschluss, Master-Abschluss usw.) sowohl auf das Jahreseinkommen als auch auf die Höhe der Studentendarlehensschulden auswirkt. In diesem Fall haben wir einen Faktor (Bildungsniveau) und zwei Antwortvariablen (Jahreseinkommen und Studentendarlehensschuld), sodass wir eine einfaktorielle MANOVA durchführen können.

Einfaktorielle MANOVA-Beispiel

Wie man eine MANOVA in R durchführt

Im folgenden Beispiel wird veranschaulicht, wie eine einfaktorielle MANOVA in R unter Verwendung des integrierten Datensatzes Iris durchgeführt wird, der Informationen über die Länge und Breite verschiedener Messungen von Blumen für drei verschiedene Arten enthält („setosa“, „virginica“, „versicolor“):

# Die ersten sechs Zeilen des Iris- Datensatzes anzeigen
head(iris)

#  Sepal.Length Sepal.Width Petal.Length Petal.Width Species
#1          5.1         3.5          1.4         0.2  setosa
#2          4.9         3.0          1.4         0.2  setosa
#3          4.7         3.2          1.3         0.2  setosa
#4          4.6         3.1          1.5         0.2  setosa
#5          5.0         3.6          1.4         0.2  setosa
#6          5.4         3.9          1.7         0.4  setosa

Angenommen, wir möchten wissen, ob die Art einen Einfluss auf die Kelchblattlänge und die Kelchblattbreite hat. Unter Verwendung von Spezies als unabhängige Variable und Kelchblattlänge und Kelchblattbreite als Antwortvariablen können wir eine einfaktorielle MANOVA unter Verwendung der manova()-Funktion in R durchführen.

Die Funktion manova() verwendet die folgende Syntax:

manova(cbind(rv1, rv2, …) ~ iv, data)

wo:

  • rv1, rv2: Antwortvariable 1, Antwortvariable 2 usw.
  • iv: unabhängige Variable
  • Daten: Name des Dataframes

In unserem Beispiel mit dem Iris-Dataset können wir eine MANOVA anpassen und die Ergebnisse mit der folgenden Syntax anzeigen:

#Passen Sie das MANOVA-Modell an
model <- manova(cbind(Sepal.Length, Sepal.Width) ~ Species, data = iris) 
#Die Ergebnisse anzeigen
summary(model)

#           Df  Pillai approx F num Df den Df    Pr(>F)    
#Species     2 0.94531   65.878      4    294 < 2.2e-16 ***
#Residuals 147                                             
#---
#Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

Aus der Ausgabe können wir erkennen, dass die F-Statistik 65,878 beträgt und der entsprechende p-Wert extrem klein ist. Dies weist darauf hin, dass es einen statistisch signifikanten Unterschied bei den auf Arten basierenden Kelchblattmessungen gibt.

Technischer Hinweis: Standardmäßig verwendet manova() die Pillai-Teststatistik. Da die Verteilung dieser Teststatistik komplex ist, wird zur leichteren Interpretation auch ein ungefährer F-Wert angegeben.

Darüber hinaus können Sie mit der folgenden Syntax „Roy“, „Hotelling-Lawley“ oder „Wilks“ als Teststatistik angeben: summary (model, test = ‚Wilks‘)

Um genau herauszufinden, wie sowohl die Kelchblattlänge als auch die Kelchblattbreite von Arten beeinflusst werden, können wir mit summary.aov() univariate ANOVAs durchführen, wie im folgenden Code gezeigt:

summary.aov(model)

# Response Sepal.Length :
#             Df Sum Sq Mean Sq F value    Pr(>F)    
#Species       2 63.212  31.606  119.26 < 2.2e-16 ***
#Residuals   147 38.956   0.265                      
#---
#Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

# Response Sepal.Width :
#             Df Sum Sq Mean Sq F value    Pr(>F)    
#Species       2 11.345  5.6725   49.16 < 2.2e-16 ***
#Residuals   147 16.962  0.1154                      
#---
#Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

Wir können der Ausgabe entnehmen, dass die p-Werte für beide univariaten ANOVAs extrem klein sind (<2.2e-16), was darauf hinweist, dass Arten einen statistisch signifikanten Einfluss sowohl auf die Kelchblattbreite als auch auf die Kelchblattlänge haben.

Visualisieren von Gruppenmitteln

Es kann auch hilfreich sein, die Gruppenmittelwerte für jede Ebene unserer unabhängigen variablen Spezies zu visualisieren, um ein besseres Verständnis unserer Ergebnisse zu erhalten.

Zum Beispiel können wir die gplots-Bibliothek und die Funktion plotmeans() verwenden, um die mittlere Kelchblattlänge nach Arten zu visualisieren:

#Laden der gplots Bibliothek
library(gplots)
#Visualisieren Sie die mittlere Kelchblattlänge nach Arten
plotmeans(iris$Sepal.Length ~ iris$Species)

gplots plot_means() Funktion in R

Aus der Darstellung können wir ersehen, dass die mittlere Kelchblattlänge je nach Art sehr unterschiedlich ist. Dies stimmt mit den Ergebnissen unserer MANOVA überein, aus der hervorgeht, dass es einen statistisch signifikanten Unterschied bei den sepalbasierten Messungen gibt.

Wir können auch die mittlere Kelchblattbreite nach Arten visualisieren:

plotmeans(iris$Sepal.Width ~ iris$Species)

MANOVA in R mit Parzellen

Die vollständige RDocumentation für die Funktion manova() finden Sie hier.

Statistik: Der Weg zur Datenanalyse

* Amazon Affiliate Link


Das könnte Sie auch interessieren: