::p_load(tidyverse, magrittr, readxl,
pacman multcompView)
2 Einen TukeyHSD Test rechnen
Letzte Änderung am 13. January 2024 um 17:46:55
In diesem sehr kurzen Beispiel wollen wir uns einem den Tukey Test anschauen. Eigentlich ist es der Tukey HSD Test für Tukey Honest Significant Differences. Die von dieser Funktion zurückgegebenen \(p\)-Werte und 95% Konfidenzintervalle basieren auf der t-Test Verteilung. Wir nehmen also ein normalverteiltes Outcome \(y\) sowie eine homogene Varianz an.
Die auf diese Weise konstruierten 95% Konfidenzintervalle gelten nur für balancierte Designs, bei denen in jedem Level des Faktors die gleiche Anzahl von Beobachtungen gemacht wird. Die Funktion TukeyHSD()
enthält eine Anpassung für den Stichprobenumfang, die sinnvolle 95% Konfidenzintervalle für leicht unbalancierte Designs erzeugt. Ja, und da geht es schon wieder los. Was heißt sinnvoll? Oder andersherum, was ist eine leichte Abweichung? Deshalb mag ich persönlich nicht die Funktion TukeyHSD()
und ziehe das R Paket emmeans
vor. Du siehst auch in den anderen Beispielen immer die Anwendung von emmeans
.
Aber gut, hier soll es ja um den Tukey Test gehen. Also wir nehmen uns einmal ein simples Beispiel mit verschiedenen Bodenarten und dann wollen wir als Outcome \(y\) die Pflanzenhöhe miteinander vergleichen.
<- read_excel("data/soil_1fac_data.xlsx") %>%
soil_tbl mutate(variante = as_factor(variante)) %>%
select(variante, height)
Die Funktion TukeyHSD()
ist alt. Deshalb kann die Funktion nur den Modellfit aus der Funktion aov()
verarbeiten. Die Funktion aov()
wiederum ist eigentlich nur eine Funktion, die die beiden Funktionen anova()
und lm()
in ungünstiger Art und Weise kombiniert. Aber gut, geht eben nicht anders.
<- aov(height ~ variante, data = soil_tbl) aov_fit
Dann können wir den Modellfit in die Funktion TukeyHSD()
stecken und benutzen. Wir kriegen eine etwas seltsame Ausgabe, aber wir wollen auch hier dann weiter zu dem compact letter display.
<- aov_fit %>%
tukey_obj TukeyHSD()
Das compact letter display können wir über die Funktion multcompLetters()
erstellen. Wir müssen dafür die \(p\)-Werte extrahieren und dann an die Funktion weiterleiten. Hier ist wichtig, dass wir nur adjustierte \(p\)-Werte wiederbekommen. Wenn du unadjustierte \(p\)-Werte möchtest, dann musst du nochmal in die Funktion emmeans()
schauen.
%>%
tukey_obj pluck("variante") %>%
::extract( , "p adj") %>%
magrittrmultcompLetters()
Torf Kompostiertes Gehäckseltes Aufgefasertes Holzfasern
"ab" "ab" "a" "ab" "b"
Mehr zum compact letter display und der Interpretation kannst du im Kapitel zu Multiple Vergleiche oder Post-hoc Tests nachlesen. Dort findest du auch eine Alternative zu dem Tukey Test.