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)
npk <- as_tibble(npk)
npkWir 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))
npkggplot(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:
ToothGrowth <- as_tibble(ToothGrowth)
ToothGrowth <- ToothGrowth %>%
mutate(dose = as.factor(dose))
ToothGrowthSchauen 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)
anzahlen <- diamonds %>%
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.
npkEbenso 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:
ToothGrowthDas 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:
modell <- lm(len ~ supp, data = ToothGrowth)
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:
ergebnis <- aov(len ~ supp, data = ToothGrowth)
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:
aov_ergebnis <- ToothGrowth %>%
anova_test(len ~ dose)
aov_ergebnisANOVA 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:
ergebnis <- aov(len ~ dose, data = ToothGrowth)
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:
tukey <- ToothGrowth %>%
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_dose <- tukey %>%
dplyr::select(group1, group2, p.adj)
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)) +
ggpubr::stat_pvalue_manual(tukey, hide.ns = TRUE) + # fügt p-Werte hinzu
theme(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:
zwei_faktor_aov <- ToothGrowth %>%
anova_test(len ~ supp * dose)
zwei_faktor_aovANOVA 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:
Entscheidungsbaum ANOVA
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:
welch_ergebnis <- ToothGrowth %>%
welch_anova_test(len ~ dose)
welch_ergebnisDie möglichen Post-Hoc-Tests lassen sich ebenso analog wie zuvor verwenden:
# Games-Howell:
games_howell_ergebnis <- ToothGrowth %>%
games_howell_test(len ~ dose)
games_howell_ergebnis# t-Tests: Vorsicht: der Parameter pool.sd = FALSE ist wichtig,
# damit keine Varianzhomogenität vorausgesetzt ist
paarw_t_test_ergebnis <- ToothGrowth %>%
pairwise_t_test(len ~ dose, pool.sd = FALSE)
paarw_t_test_ergebnisFalls 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)
npk <- as_tibble(npk)
npkWie 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.