p.adjust()
ist eine Funktion in R, die verwendet wird,
um p-Werte bei multiplen Vergleichen zu korrigieren.Zur Korrektur: Wenn du mehrerer Tests durchführst, steigt die Wahrscheinlichkeit, dass mindestens einer dieser Tests fälschlicherweise signifikant ausfällt (= Alpha-Fehler). Wenn man z.B. 20 Tests bei einem Signifikanzniveau von 5% (α = 0,05) durchführt, ist die Wahrscheinlichkeit, dass mindestens ein Test fälschlicherweise signifikant ist, höher als diese zuvor bestimmten 5%. Die Korrektur ist damit ein notwendiger Schritt, um Fehlinterpretationen vorzubeugen.
p
: Ein numerischer Vektor von p-Werten, die
angepasst werden sollen.
method
: Methode die angewendet werden soll
Verfügbare Methoden sind:
"holm"
(Standard): Holm-Bonferroni-Methode
"hochberg"
: Hochberg-Methode
"hommel"
: Hommel-Methode
"bonferroni"
: Bonferroni-Korrektur
"BH"
oder "fdr"
:
Benjamini-Hochberg-Methode oder false detection rate
"BY"
: Benjamini-Yekutieli-Methode (konservativer als
BH)
"none"
: Keine Anpassung
n
: Die Anzahl der Vergleiche. Wenn man dieses
Argument weg lässt, wird als default die Länge
von p
genommen.
install.packages("knitr",repos = "https://cran.rstudio.com")
##
## The downloaded binary packages are in
## /var/folders/xd/kxxx37y92hjb4j6g6bxkt9lh0000gn/T//RtmptMkScQ/downloaded_packages
install.packages("kableExtra",repos = "https://cran.rstudio.com")
##
## The downloaded binary packages are in
## /var/folders/xd/kxxx37y92hjb4j6g6bxkt9lh0000gn/T//RtmptMkScQ/downloaded_packages
# Pakete laden
library(knitr)
library(kableExtra)
# Beispielhafte p-Werte
pvals <- c(0.01, 0.04, 0.03, 0.002, 0.05,0.07,0.11)
# Ausgabe der "ursprünglichen" p-Werte
print("Ursprüngliche p-Werte:")
## [1] "Ursprüngliche p-Werte:"
print(pvals)
## [1] 0.010 0.040 0.030 0.002 0.050 0.070 0.110
# p-Werte mit der Holm-Methode-Korrektur
pvals_holm <- p.adjust(pvals, method = "holm")
print("Angepasste p-Werte mit der Holm-Korrektur:")# Ausgabe der angepassten p-Werte mit der Holm-Methode
## [1] "Angepasste p-Werte mit der Holm-Korrektur:"
print(pvals_holm)
## [1] 0.060 0.160 0.150 0.014 0.160 0.160 0.160
# p-Werte mit der Bonferroni-Korrektur
pvals_bonferroni <- p.adjust(pvals, method = "bonferroni")
print("Angepasste p-Werte mit der Bonferroni-Korrektur:") # Ausgabe der angepassten p-Werte mit der Bonferroni-Korrektur
## [1] "Angepasste p-Werte mit der Bonferroni-Korrektur:"
print(pvals_bonferroni)
## [1] 0.070 0.280 0.210 0.014 0.350 0.490 0.770
# p-Werte mit der Benjamini-Hochberg-Korrektur
pvals_bh <- p.adjust(pvals, method = "BH")
print("Angepasste p-Werte mit der Benjamini-Hochberg-Korrektur:") # Ausgabe der angepassten p-Werte mit der Benjamini-Hochberg-Korrektur
## [1] "Angepasste p-Werte mit der Benjamini-Hochberg-Korrektur:"
print(pvals_bh)
## [1] 0.03500000 0.07000000 0.07000000 0.01400000 0.07000000 0.08166667 0.11000000
# p-Werte mit der Benjamini-Yekutieli-Korrektur
pvals_by <- p.adjust(pvals, method = "BY")
print("Angepasste p-Werte mit der Benjamini-Yekutieli-Korrektur:") # Ausgabe der angepassten p-Werte mit der Benjamini-Yekutieli-Korrektur
## [1] "Angepasste p-Werte mit der Benjamini-Yekutieli-Korrektur:"
print(pvals_by)
## [1] 0.0907500 0.1815000 0.1815000 0.0363000 0.1815000 0.2117500 0.2852143
# Tabelle erstellen um korrigierte Werte mit den ursprünglcihen Werten zu vergleichen
result_table <- data.frame(
Original = pvals,
Holm = pvals_holm,
Bonferroni = pvals_bonferroni,
Benjamini_Hochberg = pvals_bh,
Benjamini_Yekutieli = pvals_by
)
kable(result_table, caption = "Angepasste p-Werte mit verschiedenen Korrekturen") %>%
kable_styling(bootstrap_options = c("striped", "hover", "condensed", "responsive"),
full_width = F,
position = "center") %>%
column_spec(1, background = "#B3FFFF") %>% # Erste Spalte blau hinterlegt
column_spec(2, background = "#CCFFCC") %>% # Zweite Spalte grün hinterlegt
column_spec(3, background = "#FFD9B3") %>% # Dritte Spalte orange hinterlegt
column_spec(4, background = "#FFFF99") %>% # Vierte Spalte gelb hinterlegt
column_spec(5, background = "#E6E6E6") # Fünfte Spalte hellgrau hinterlegt
Original | Holm | Bonferroni | Benjamini_Hochberg | Benjamini_Yekutieli |
---|---|---|---|---|
0.010 | 0.060 | 0.070 | 0.0350000 | 0.0907500 |
0.040 | 0.160 | 0.280 | 0.0700000 | 0.1815000 |
0.030 | 0.150 | 0.210 | 0.0700000 | 0.1815000 |
0.002 | 0.014 | 0.014 | 0.0140000 | 0.0363000 |
0.050 | 0.160 | 0.350 | 0.0700000 | 0.1815000 |
0.070 | 0.160 | 0.490 | 0.0816667 | 0.2117500 |
0.110 | 0.160 | 0.770 | 0.1100000 | 0.2852143 |
Hinweise zur Interpretation:
Die Korrektur der p-Werte erlaubt es, diese immer noch mit alpha = .05 zu vergleichen bzw. mit dem gewählten Signifikanz-Kriterium.
Beispiel: Den unkorregierten Original p-Wert des Modelles p = .01 korrigieren wir mit Holm und erhalten einen korrigierten p-Wert pHolm = .06 (=siehe Tabelle). Nun können wir diesen korrigierten Wert mit dem alpha = .05 vergleichen. Da pHolm (.06) > pkrit/alpha (.05) wird die Nullhypothese vorläufig beibehalten.