install.packages(c("ggpubr", "rstatix"))
Wir haben zuvor bereits mehrere Möglichkeiten gesehen, wie qualitative Daten dargestellt werden können.
Im Vordergrund bei der Betrachtung von Häufigkeiten liegen Balkendiagramme. Jedoch werden qualitative Daten auch häufig verwendet, um Daten zu gruppieren und somit verschiedene Gruppen von kontinuierlichen Daten darzustellen und zu unterscheiden.
Für Experimente und dessen Auswertung ist es wichtig, einen Überblick zu haben, wie viele Beobachtungen pro Gruppe vorhanden sind, damit die fortlaufenden Analysen nicht durch unbalancierte Gruppen (und der daraus resultierenden erhöhten Varianz) beeinflusst werden.
Betrachten wir ein typisches Experiment aus dem Agrarbereich. Der
Datensatz npk
beschreibt einen vollständigen Versuchsplan,
bei dem der Effekt von Stickstoff, Phosphat und Kalium auf das Wachstum
von Erbsen untersucht wurde. Für mehr Information schauen Sie unter
?npk
nach.
library(tidyverse)
<- as_tibble(npk)
npk npk
Wir sehen, dass block
, N
, P
und K
Faktoren sind, wobei 1 für die Anwendung des Stoffes
steht und 0 für dessen Abwesenheit.
Bei vollständigen Versuchsplanungen, wobei jeder Faktor entweder
vorliegt oder nicht (0/1), gibt es insgesamt 2^X Möglichkeiten, wobei X
die Anzahl der Faktoren ist. In diesem Fall liegen 3 Faktoren vor,
sodass es 2^3=8 Kombinationen gibt.
Jede Kombination wurde in dreifacher Wiederholung getestet.
Verifizieren wir diesen Zusammenhang durch Balkendiagramme. Statt
jeden Faktor einzeln zu betrachten, sollen die Faktoren gemeinsam (als
Kombination) veranschaulicht werden. Hierzu müssen die Einträge z. B.
durch str_c()
kombiniert werden:
<- npk %>%
npk mutate(kombination = str_c(N, P, K))
npk
ggplot(npk) +
geom_bar(aes(kombination))
%>%
npk group_by(kombination) %>%
summarise(n = n())
Wir sehen, dass tatsächlich jedes Experiment in dreifacher Wiederholung durchgeführt wurde. Das ist besonders wichtig zu verifizieren, wenn die Datenmenge unübersichtlich bzw. sehr groß ist oder die Daten nicht selbst erhoben wurden.
Für eine gemeinsame Verteilung von kontinuierlichen Variablen hatten wir Streudiagramme betrachtet. Bei qualitativen Variablen wird die Betrachung des gemeinsamen Auftretens von Variablen häufig vernachlässigt. Sie ist aber besonders dann wichtig, wenn viele Gruppen bzw. unbalancierte Daten vorliegen.
Für gemeinsame qualitative Variablen hatten wir bereits eine
Visualisierung der paarweisen Häufigkeiten (Matrix-/Tabellenform)
gesehen. Betrachten wir hierzu den Datensatz ?ToothGrowth
,
welcher das Zahnwachstum von Meerschweinchen bei verschiedenen täglichen
Vitamin C Dosen und Zuführungsmethoden (Orangensaft oder Askorbinsäure)
untersucht:
<- as_tibble(ToothGrowth)
ToothGrowth <- ToothGrowth %>%
ToothGrowth mutate(dose = as.factor(dose))
ToothGrowth
Schauen wir nun, wie sich die beiden Faktoren supp
und
dose
verteilen:
ggplot(ToothGrowth) +
geom_count(aes(supp, dose))
%>%
ToothGrowth count(supp, dose) %>%
ggplot(aes(supp, dose)) +
geom_tile(aes(fill = n))
Es scheint, dass das Experiment balanciert ist und jede Kombination in derselben Wiederholung vorliegt.
Bei Umfrageergebnissen oder extern erhobenen Daten (ohne experimentellen Zusammenhang) kann das jedoch auch stark abweichen:
# Häufigkeitentabelle
%>%
diamonds count(cut, clarity)
%>%
diamonds count(cut, clarity) %>%
ggplot(aes(cut, clarity)) +
geom_tile(aes(fill = n)) +
scale_fill_gradient(low = "forestgreen", high = "tomato")
Hier sehen wir beispielsweise, dass Diamanten mit idealem Schliff
häufig mit der Klarheit VS2
vorliegen und scheinbar ein
Diamanten mit besserem Schliff häufiger verkauft werden bzw. in dem
Datensatz vorhanden sind.
Die Wichtigkeit der Gruppierung von kontinuierlichen Daten und dessen Durchführung hatten wir in dem letzten Kurs bereits beschrieben.
In dem vorherigen Abschnitt wurde beschrieben wie die gemeinsamen Häufigkeiten visualisiert und betrachtet werden können. An dieser Stelle kurz ergänzend, dass die Stärke des Zusammenhangs von qualitativen Variablen ebenfalls mit Cramers V berechnet werden kann. Hierzu wird eine Tabelle mit gemeinsamen Häufigkeiten benötigt:
library(rstatix)
<- diamonds %>%
anzahlen count(cut, clarity) %>%
pivot_wider(names_from = c(cut), values_from = n) %>%
column_to_rownames(var = "clarity")
anzahlen
cramer_v(anzahlen)
[1] 0.1426645
Ein Wert von 0 zeigt hierbei keinen Zusammenhang an (Gleichverteilung) und ein Wert von 1 einen perfekten Zusammenhang.
Da der Wert in diesem Fall nahe bei 0 liegt, scheint es keinen besonderen Zusammenhang zwischen Schliff und Klarheit zu existieren.
Der Hauptteil des heutigen Kurses soll die Durchführung der Varianzanalyse (ANOVA) darstellen.
Bei der ANOVA wird der Einfluss von einer (oder mehrerer) Faktoren
(qualitative Variablen) auf eine kontinuierliche Variable betrachtet.
Ein perfektes Beispiel hierfür ist der Datensatz npk
, den
wir zuvor gesehen haben. Hier liegen 3 Faktoren (Stickstoff, Phosphat
und Kalium) vor, dessen Einfluss auf den Ertrag von Erbsen untersucht
werden soll.
npk
Ebenso stellt der ToothGrowth
Datensatz einen typischen
Versuch dar, welcher mit ANOVA ausgewertet wird. Hierbei liegen
ebenfalls Faktoren (Dosis und Zufuhrart) vor, dessen Einfluss auf eine
kontinuierliche Variable (Länge) untersucht werden soll:
ToothGrowth
Das Ziel der Varianzanalyse ist es, herauszufinden, ob verschiedene Faktoren einen Einfluss auf eine Zielvariable haben.
Hierzu wird bei der ANOVA zunächst geprüft, ob es einen Unterschied zwischen den Gruppen gibt bzw. ob alle Gruppen im Mittel zu demselben Resultat (bezogen auf die Zielvariable) führen.
Das Hypothesenpaar prüft entsprechend, ob es mindestens eine Gruppe gibt, die statistisch signifikant von den anderen Gruppen abweicht:
H0: Die Gruppen sind alle gleich.
H1: Es gibt mindestens eine Gruppe, die von den anderen Gruppen abweicht.
Dementsprechend prüfen wir mit der ANOVA zunächst, ob es grundsätzlich “relevante” (abweichende) Ergebnisse gibt.
Falls die ANOVA ein signifikanten p-Wert liefert (z. B. kleiner als ⍺ = 0,05), dann können wir mit Hilfe eines Post-Hoc-Tests herausfinden, welche Gruppen abweichen.
Wir sehen gleich anhand von Beispielen, wie die ANOVA durchgeführt wird, was das bedeutet und wie diese zu interpretieren ist.
Bevor eine ANOVA durchgeführt werden kann, muss geprüft werden, ob die Daten den Voraussetzungen der ANOVA genügen.
Falls die Daten zu sehr von den Voraussetzungen abweichen, verliert
der ANOVA-Test an Aussagekraft, d. h. es ist fragwürdig/unsicher, ob dem
Ergebnis zu trauen ist. Die Statistik soll uns absichern (im
Wahrscheinlichkeitssinn), wo es statistisch signifikante Unterschiede
gibt. Das ist bei fehlender Erfüllung der Voraussetzungen gestört.
Erinnern Sie sich an dieser Stelle auch zurück an die Bedeutung des
p-Werts. Das Signifikanzniveau gibt stets an, wie sicher wir sind bzw.
sein wollen.
Betrachten wir zunächst die Voraussetzungen der ANOVA und beginnen wir mit einem Faktor.
Die Beobachtungen müssen unabhängig und zufällig sein. Das kann nur bei der Durchführung des Experiments geschehen, d. h. die Testobjekte dürfen beispielsweise nicht wilkürlich oder mehrfach gemessen werden (außer bei zeitlichen Verläufen) und sollten zufällig (z. B. durch computer-gestützte randomisierte Zahlen/Auswahlen) ausgewählt werden.
Für die übliche ANOVA sollten keine (extremen) Ausreißer in den Gruppen vorliegen. Die einfachste Möglichkeit zum Entdecken von Ausreißern sind Boxplots:
ggplot(ToothGrowth) +
geom_boxplot(aes(supp, len, fill = supp))
Falls Ausreißer vorhanden sind, können diese mit Hilfe von
identify_outliers()
aus rstatix
entdeckt
werden:
%>%
ToothGrowth group_by(supp) %>%
identify_outliers(len)
Ausreißer sind definiert als diejenigen, die mehr als das 1,5-fache von dem 1. bzw. 3. Quartil nach unten bzw. oben abweichen.
Extreme Ausreißer werden bei der identify_outliers()
als die 3-fache Abweichung definiert.
Falls große Ausreißer vorhanden sind, sollte geprüft werden, ob diese Messfehler sind und ob diese mit in die Analyse hineinfließen sollten. Als Alternative zur ANOVA könnte der Kruskal-Walis-Test robuster sein, falls viele/starke Ausreißer vorhanden sind. Hierdurch wird insbesondere meistens die Normalverteilung gestört.
Falls die Ausreißer sich im Rahmen halten, können die Gruppen auf Normalverteilung getestet werden.
Hierzu können Boxplot und Histogramme nützlich sein:
ggplot(ToothGrowth, aes(len, after_stat(density))) +
geom_histogram(binwidth = 4, fill = "steelblue") +
geom_density() +
facet_wrap(~supp)
Auf den ersten Blick ist es schwer zu deuten, ob die Daten normalverteilt sind.
Hierzu führen wir den Shapiro-Wilk-Test für jede Gruppe durch, um uns abzusichern.
%>%
ToothGrowth group_by(supp) %>%
shapiro_test(len)
Anmerkung:
Die ANOVA ist typischerweise relativ robust gegenüber der Verletzung der Voraussetzung der Normalverteilung der Gruppen.
Falls die Daten keiner Normalverteilung folgen, kann ebenfalls der Kruskal-Wallis-Test eine gute Alternative bieten.
Tatsächlich ist die Normalverteilung der Residuen des linearen Modells wichtiger. Das wollen wir hier aber nicht ausführen:
<- lm(len ~ supp, data = ToothGrowth)
modell shapiro_test(residuals(modell))
Schlussendlich sollte noch geprüft werden, ob die Varianz bezüglich der Gruppen homogen sind.
Das lässt sich aus dem Boxplot entnehmen (~ ähnlich hohe Boxen) und mit dem Levene-Test prüfen:
%>%
ToothGrowth levene_test(len ~ supp)
Die Hypothesen des Levene-Tests besagen:
H0: Die Daten sind varianzhomogen
H1: Die Daten sind nicht varianzhomogen
Dementsprechend lehnen wir die Nullhypothese H0 nicht ab, da der p-Wert größer ist als 0,05. Somit sind die Gruppen (vermutlich) varianzhomogen.
Da die Daten varianzhomogen sind und es keine Ausreißer gibt, lässt
sich die ANOVA anwenden, auch wenn die Daten nicht perfekt
normalverteilt sind. In der Standardbibliothek von R gibt es hierfür die
aov()
Funktion:
<- aov(len ~ supp, data = ToothGrowth)
ergebnis summary(ergebnis)
Df Sum Sq Mean Sq F value Pr(>F)
supp 1 205 205.35 3.668 0.0604 .
Residuals 58 3247 55.98
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
aov()
erwartet als Eingabe eine Formel mit der Tilde
~
Links steht die abhängige (kontinuierliche) Variable, rechts die abhängigen Variablen (Faktoren)
Das Schema ist generell gleich wie die Erstellung eines
Regressionsmodells mit lm()
Mit Hilfe von summary()
sehen wir den p-Wert der ANOVA,
welcher mit 0,06 größer als das typische Signifikanzniveau (0,05)
ist.
Demnach nehmen wir an, dass es keinen signifikanten Unterschied in den Zufuhrmethoden gibt.
Alternativ können wir auch aus rstatix
die Funktion
anova_test()
verwenden:
%>%
ToothGrowth anova_test(len ~ supp)
ANOVA Table (type II tests)
Effect DFn DFd F p p<.05 ges
1 supp 1 58 3.668 0.06 0.059
Testen wir ebenfalls die Dosis (dose
) von Vitamin C auf
den Einfluss des Zahnwachstums. Nehmen wir an, dass die ANOVA
Voraussetzungen erfüllt wurden:
<- ToothGrowth %>%
aov_ergebnis anova_test(len ~ dose)
aov_ergebnis
ANOVA Table (type II tests)
Effect DFn DFd F p p<.05 ges
1 dose 2 57 67.416 9.53e-16 * 0.703
Der p-Wert ist sehr klein, d. h. mindestens eine Gruppe unterscheidet sich signifikant von den anderen.
Welche Gruppe das ist, lässt sich anhand eines Post-Hoc-Tests feststellen.
Bei dem Post-Hoc-Test soll festgestellt werden, welche Gruppen sich signifikant unterscheiden, da die ANOVA nur suggeriert, ob sich eine Gruppe unterscheidet.
Da hierbei jedes Gruppenpaar separat getestet wird, müssen die
p-Werte angepasst werden (p.adj
), da sonst die
Wahrscheinlichkeit steigt, dass sich der Test irrt (durch mehrfaches
Testen).
Der beliebteste Post-Hoc-Test der einfachen ANOVA ist der
Tukey-HSD-Test. Für die aov()
Ergebnisse wird dieser wie
folgt durchgeführt:
<- aov(len ~ dose, data = ToothGrowth)
ergebnis TukeyHSD(ergebnis)
Tukey multiple comparisons of means
95% family-wise confidence level
Fit: aov(formula = len ~ dose, data = ToothGrowth)
$dose
diff lwr upr p adj
1-0.5 9.130 5.901805 12.358195 0.00e+00
2-0.5 15.495 12.266805 18.723195 0.00e+00
2-1 6.365 3.136805 9.593195 4.25e-05
Die Unterschiede sind für alle Gruppen signifikant, da die p-Werte sehr klein sind.
Demnach kann davon ausgegangen werden, dass die Menge an Vitamin C einen signifikanten Einfluss auf das Wachstum der Zähne der Meerschweinchen hat.
Alternativ können wir das ebenfalls mit rstatix
durchführen. Der Vorteil ist hierbei, dass sich die Tabelle mit den
p-Werten direkt speichern lässt:
<- ToothGrowth %>%
tukey tukey_hsd(len ~ dose)
tukey
# Ergebnis als Tabelle speichern:
# write_csv(tukey, "tukey_ergebnis.csv")
Das Ergebnis können Sie nun beispielsweise beliebig kürzen, um nur die relevante Information (signifikant, nicht signifikant) zu extrahieren:
# Gruppenvergleich
<- tukey %>%
tukey_dose ::select(group1, group2, p.adj)
dplyr tukey_dose
# Als Matrix:
%>%
tukey_dose pivot_wider(names_from = group1, values_from = p.adj)
Das Ergebnis lässt sich auch anhand eines Boxplots nachvollziehbar darstellen:
# Setze die Position der Klammern:
<- tukey %>%
tukey add_xy_position(x = "dose")
# Zeichne Boxplots für signifikante Gruppen:
ggplot(ToothGrowth) +
geom_boxplot(aes(dose, len, fill = dose)) +
::stat_pvalue_manual(tukey, hide.ns = TRUE) + # fügt p-Werte hinzu
ggpubrtheme(legend.position = NULL) +
# Zusätzliche Information des Tests:
labs(title = "Vitamin C fördert Zahnwachstum bei Meerschweinchen",
subtitle = get_test_label(aov_ergebnis, detailed = TRUE),
caption = get_pwc_label(tukey),
x = "Vitamin C Dosis (mg/Tag)",
y = "Zahnlänge (Länge der Odontoblasten)",
fill = "Dosis")
Zuvor haben wir lediglich einen Faktoren betrachtet. In der Realität sollen meist mehrere Faktoren zugleich getestet werden (z. B. Vitamin C Dosis und Zufuhrart). In diesem Fall bietet sich eine mehrfaktorielle ANOVA an.
Diese funktioniert wird prinzipiell sehr ähnlich zur einfaktoriellen ANOVA durchgeführt.
Betrachten wir erneut den ToothGrowth
Datensatz und
prüfen die Voraussetzungen nun für zwei Faktoren.
ggplot(ToothGrowth) +
geom_boxplot(aes(supp, len, fill = dose, color = len))
%>%
ToothGrowth group_by(supp, dose) %>%
identify_outliers(len)
%>%
ToothGrowth group_by(supp, dose) %>%
shapiro_test(len)
%>%
ToothGrowth levene_test(len ~ supp * dose)
*
-Symbol zu verwenden,
damit ebenfalls die Interaktion getestet wird.Da alle Voraussetzungen erfüllt sind, kann die zweifaktorielle ANOVA durchgeführt werden:
<- ToothGrowth %>%
zwei_faktor_aov anova_test(len ~ supp * dose)
zwei_faktor_aov
ANOVA Table (type II tests)
Effect DFn DFd F p p<.05 ges
1 supp 1 54 15.572 2.31e-04 * 0.224
2 dose 2 54 92.000 4.05e-18 * 0.773
3 supp:dose 2 54 4.107 2.20e-02 * 0.132
Beachten Sie, dass bei diesem Modell das *
für die
Betrachtung der einzelnen unabhängigen Variablen als Haupteffekt sowie
dessen Interaktion steht.
Das +
Symbol betrachtet nur die unabhängigen
Variablen ohne dessen Interaktion.
Das :
Symbol betrachtet nur die Interaktion der
unabhängigen Variablen ohne den Haupteffekt.
Sie sehen, dass alle Effekte (Haupteffekte sowie Interaktion) signifikant sind, d. h. es gibt innerhalb der einzelnen Gruppen signifikante Unterschiede sowie bei der gemeinsamen Betrachtung der Gruppen (Interaktion).
Da die Interaktion signifikant ist, können wir den Effekt von
dose
für jede Stufe von supp
in einer
einfaktoriellen ANOVA betrachten:
%>%
ToothGrowth group_by(supp) %>%
anova_test(len ~ dose)
Nun wollen wir wissen, welche der Gruppen sich unterscheiden:
%>%
ToothGrowth group_by(supp) %>%
tukey_hsd(len ~ dose)
Wir sehen, dass sich alle Gruppen signifikant unterscheiden (bzgl. der Zahnlange) außer der Vergleich von Orangensaft bei der Einnahme von 1mg zu 2mg Vitamin C am Tag.
Wenn wirklich jede Gruppe miteinander verglichen werden soll,
kann das ebenfalls mit dem Tukey-HSD-Test durchgeführt werden. Hierbei
sind die p-Werte allerdings etwas größer, da diese durch die höhere
Testanzahl weiter korrigiert werden (p.adj
):
%>%
ToothGrowth tukey_hsd(len ~ supp * dose)
Wäre die Interaktion nicht signifikant, könnte dennoch mit paarweisen
Tests (z. B. paarweisen t-Tests pairwise_t_test()
, Tukey)
nach Unterschieden in den Haupteffekten geschaut werden ohne die
Interaktion (falls ein Haupteffekt signifikant ist).
Das entspricht dem, was wir bei der einfaktoriellen ANOVA bereits durchgeführt haben.
Falls man daran interessiert ist, verschiedene Gruppenaufteilungen
miteinander zu vergleichen (z. B. Dosis 0.5/1mg/Tag gegen Dosis
2mg/Tag), dann bietet sich zum Beispiel die glht
Funktion
aus multcomp
an. Siehe hierzu hier.
An dieser Stelle eine Entscheidungshilfe, welcher Test bei der einfaktoriellen Analyse verwendet werden sollte:
Wenn die Bedingung der Varianzhomogenität der Gruppen bei der einfaktoriellen ANOVA nicht eingehalten ist, kann der Welch-Test als robustere ANOVA-Variante verwendet werden. Die einfache ANOVA verliert sehr viel Aussagekraft, wenn die Daten nicht varianzhomogen sin.
Der Welch-Test wird analog durchgeführt und meistens mit den Post-Hoc-Tests von Games-Howell oder dem paarweisen t-Test kombiniert, da diese bei Varianzinhomogenität robuster sind:
<- ToothGrowth %>%
welch_ergebnis welch_anova_test(len ~ dose)
welch_ergebnis
Die möglichen Post-Hoc-Tests lassen sich ebenso analog wie zuvor verwenden:
# Games-Howell:
<- ToothGrowth %>%
games_howell_ergebnis games_howell_test(len ~ dose)
games_howell_ergebnis
# t-Tests: Vorsicht: der Parameter pool.sd = FALSE ist wichtig,
# damit keine Varianzhomogenität vorausgesetzt ist
<- ToothGrowth %>%
paarw_t_test_ergebnis pairwise_t_test(len ~ dose, pool.sd = FALSE)
paarw_t_test_ergebnis
Falls die Voraussetzungen der einfaktoriellen ANOVA gänzlich nicht gegeben sind (bzw. die Daten nicht annähernd normalverteilt), kann der nicht-parametrische Kruskal-Wallis-Test durchgeführt werden. Als Post-Hoc-Test wird nach dem Kruskal-Wallis-Test entweder der Wilcoxon-Test oder der Dunn-Test durchgeführt:
# Kruskal-Wallis-Test:
%>%
ToothGrowth kruskal_test(len ~ dose)
# Dunn-Test:
%>%
ToothGrowth dunn_test(len ~ dose)
# Wilcoxon-Test:
%>%
ToothGrowth wilcox_test(len ~ dose)
Falls die Voraussetzungen der Daten der zweifaktoriellen ANOVA nicht genügen, gibt es mehrere Möglichkeiten.
Es gibt keinen alternativen nicht-parametrischen Test für mehrere Faktoren, der ebenfalls die Interaktion dieser betrachten kann.
Sofern die Normalverteilung nicht gegeben ist, kann die zweifaktorielle ANOVA meist dennoch verwendet werden, wobei die Ergebnisse ggf. unter Vorbehalt zu interpretieren sind.
Falls die Interaktion eine untergeordnete Rolle spielt, ließe sich auch für jeden Faktor eine einfaktorielle ANOVA durchführen, um innerhalb der einzelnen Gruppen Unterschiede zu finden.
Falls es viele Ausreißer gibt oder die Varianzhomogenität nicht
gegeben ist, bietet es sich an, Korrekturmethoden zu verwenden und die
Daten zu transformieren (z. B. log-Transformation,
Box-Cox-Transofmration), sodass diese varianzhomogen (und
normalverteilt) sind.
Für eine typische Korrekturmethode siehe beispielsweise hier.
Alternativ kann auch ein robustes Regressionsmodell erstellt werden.
Neben der einfachen ANOVA gibt es noch weitere Arten der ANOVA, die für spezifische Anwendungsfälle ausgelegt sind.
Wenn dieselben Untersuchungsobjekte zu mehreren Zeitpunkten gemessen
wurden, wird eine spezielle ANOVA für wiederholte Messungen verwendet.
Das rstatix
Paket bietet mit anova_test()
ebenfalls Funktionalität für die ANOVA für wiederholte
Messungen.
Wenn dieselben Untersuchungsobjekte zu mehreren Zeitpunkten gemessen
wurden und zusätzlich ein weiterer Faktor betrachtet werden soll, wird
eine gemischte ANOVA verwendet. Auch diese Funktionalität bietet
anova_test()
für gemischte
ANOVA Designs.
Wenn eine einfache ANOVA durchgeführt werden soll, jedoch zusätzlich für eine kontinuierliche Variable (Kovariate) die ANOVA korrigiert werden soll, wird die ANCOVA verwendet. Für mehr Information zur ANCOVA siehe hier.
Alle vorherigen ANOVA Verfahren hatten gemeinsam, dass nur eine kontinuierliche Variable als abhängige Variable betrachtet wurde.
Falls gleichzeitig mehrere kontinuierliche Variable in einer ANOVA als Zielvariable betrachtet werden sollen, kann eine MANOVA (multivariate ANOVA) verwendet werden anstelle der Durchführung von mehreren einfachen ANOVAs.
Für mehr Information zur MANOVA siehe hier.
Bedenken Sie, dass es in R meistens mehrere Möglichkeiten und Pakete gibt, dieselben Analysen durchzuführen.
Falls Sie spezielle Tests/Verfahren verwenden wollen, sollten Sie
stets eine Suchmaschine aufsuchen und nach einem passenden externen
Paket suchen. Für statistische Tests sind beispielsweise
car
, MASS
oder multcomp
prominente Pakete.
Bedenken Sie auch, dass jeder statistische Test verschiedene Voraussetzungen hat und wählen Sie so den passenden Test aus. Auch die verschiedenen ANOVA-Verfahren haben verschiedene Voraussetzungen.
In diesem Teil wollen wir den Datensatz npk
auswerten:
library(tidyverse)
<- as_tibble(npk)
npk npk
Wie bereits erläutert handelt es sich bei dem Datensatz um ein
typischen vollständigen Versuchsplan aus dem Bereich der
Agrarwissenschaften. Der Datzensatz beschreibt den Einfluss des
Einsatzes von Stickstoff (N
), Phosphat (P
) und
Kalium (K
) auf den Ertrag von Erbsen
(yield
).
Werten Sie den Datzensatz npk
mit einer passenden
ANOVA aus.
Verschaffen Sie sich eine (visuelle/statistische) Übersicht über die Daten.
Prüfen Sie die Voraussetzungen der einfachen ANOVA.
Wenden Sie das passende ANOVA-Modell an.
Interpretieren Sie die Ergebnisse.