Mit Hilfe eines multiplen Mittelwertvergleichs auf der Basis von Post-Hoc-Tests lassen sich signifikante Mittelwertunterschiede nach Homogenitätskriterien beurteilen.
Eine Gruppe von Mittelwerten, die durch den F-Test einer ANOVA als inhomogen ausgewiesen wurde, kann durch Post-Hoc-Verfahren in homogene Teilgruppen gegliedert werden. Dadurch klären multiple Mittelwertvergleiche auch, welche Faktorstufen im Einzelnen den signifikanten Effekt in einer ANOVA produziert haben.
Im Gegensatz zu den Post-Hoc-Tests würde ein t-Test die statistische Signifikanz von Mittelwertunterschieden oft überschätzen. Angenommen, Sie bilden 20 Stichproben mit je 10 Zufallszahlen und berechnen die 20 Mittelwerte der Stichproben. Dann vergleichen Sie die Gruppe (Stichprobe) mit dem höchsten Mittelwert mit der Gruppe, die den kleinsten Mittelwert aufweist. Ein t-Test für unabhängige Stichproben würde beim Prüfen des Mittelwertunterschieds auf Signifikanz voraussetzen, dass nur diese beiden Stichproben gezogen worden sind. Post-Hoc-Tests berücksichtigen indessen die Streuung von Mittelwertdifferenzen im multiplen Gruppenvergleich.
data <- data.frame(
name=c( rep("A",50), rep("B",50), rep("C",50), rep("D",50), rep("E", 50)),
value=c( rnorm(50, 8, 5), rnorm(50, 10, 1), rnorm(50, 28, 1), rnorm(50, 31, 4), rnorm(50, 37, 1) )
)
View(data)
library(ggplot2)
Paket 㤼㸱ggplot2㤼㸲 wurde unter R Version 3.6.3 erstelltRegistered S3 method overwritten by 'dplyr':
method from
print.rowwise_df
ggplot(data, aes(x=name, y=value, group=1))+
stat_summary(fun.y = mean, geom="point", size=3)+
stat_summary(fun.y = mean, geom="line")+
stat_summary(fun.data = mean_cl_normal, geom="errorbar",width=.2, size=.25)+
labs(x="x", y="y")+
theme_classic()
`fun.y` is deprecated. Use `fun` instead.`fun.y` is deprecated. Use `fun` instead.
pairwise.t.test(data$value,
data$name,
p.adjust.method = "non",
data = data)
Pairwise comparisons using t tests with pooled SD
data: data$value and data$name
A B C D
B 0.0300 - - -
C <2e-16 <2e-16 - -
D <2e-16 <2e-16 0.0074 -
E <2e-16 <2e-16 <2e-16 <2e-16
P value adjustment method: none
newalpha <- 0.05/10
sprintf("Das neue Aplha liegt bei: %f", newalpha)
[1] "Das neue Aplha liegt bei: 0.005000"
Die Bonferroni-Korrektur zählt zu den einfachsten Methoden zur Kontrolle der Alphafehler-Kumulierung bei multiplen Tests. Sie ist besonders konservativ – das heißt, sie senkt die Wahrscheinlichkeit, fälschlich einen Effekt zu finden (Fehler 1. Art). Je mehr Tests durchgeführt werden, desto strenger wird das Verfahren. Gerade bei vielen Vergleichen kann die Bonferroni-Korrektur daher als zu streng gelten, da sie auch echte Effekte übersehen kann. Trotz dieser Einschränkung ist sie weit verbreitet, da sie leicht anzuwenden und rechnerisch unkompliziert ist.
pairwise.t.test(data$value,
data$name,
p.adjust.method = "bonferroni",
paired = F,
data = data)
Pairwise comparisons using t tests with pooled SD
data: data$value and data$name
A B C D
B 0.300 - - -
C <2e-16 <2e-16 - -
D <2e-16 <2e-16 0.074 -
E <2e-16 <2e-16 <2e-16 <2e-16
P value adjustment method: bonferroni
Der Tukey-Test ist ein Post-hoc-Verfahren, das alle möglichen Paarvergleiche zwischen Gruppen durchführt. Im Vergleich zu anderen verfügbaren Tests lässt er sich hinsichtlich seiner Strenge als moderat einordnen – er liegt also etwa in der Mitte zwischen eher konservativen und eher liberalen Verfahren.
TukeyHSD(aov(data=data, data$value~data$name))
Tukey multiple comparisons of means
95% family-wise confidence level
Fit: aov(formula = data$value ~ data$name, data = data)
$`data$name`
diff lwr upr p adj
B-A 1.248459 -0.32382131 2.820739 0.1899153
C-A 19.379398 17.80711801 20.951678 0.0000000
D-A 20.925098 19.35281806 22.497378 0.0000000
E-A 28.228952 26.65667174 29.801232 0.0000000
C-B 18.130939 16.55865938 19.703219 0.0000000
D-B 19.676639 18.10435943 21.248919 0.0000000
E-B 26.980493 25.40821311 28.552773 0.0000000
D-C 1.545700 -0.02657989 3.117980 0.0565605
E-C 8.849554 7.27727379 10.421834 0.0000000
E-D 7.303854 5.73157374 8.876134 0.0000000
data1 <- data.frame(
name=c( rep("A",5), rep("B",5), rep("C",5), rep("D",5), rep("E", 5)),
value=c( rnorm(5, 8, 5), rnorm(5, 10, 1), rnorm(5, 28, 1), rnorm(5, 31, 4), rnorm(5, 37, 1) )
)
View(data1)
ggplot(data1, aes(x=name, y=value, group=1))+
stat_summary(fun.y = mean, geom="point", size=3)+
stat_summary(fun.y = mean, geom="line")+
stat_summary(fun.data = mean_cl_normal, geom="errorbar",width=.2, size=.25)+
labs(x="x", y="y")+
theme_classic()
`fun.y` is deprecated. Use `fun` instead.`fun.y` is deprecated. Use `fun` instead.
pairwise.wilcox.test(data1$value, data1$name, p.adj = "non") # keine Anpassung deswegen muss newAlpha berechnet werden
Pairwise comparisons using Wilcoxon rank sum test
data: data1$value and data1$name
A B C D
B 0.0079 - - -
C 0.0079 0.0079 - -
D 0.0079 0.0079 0.0079 -
E 0.0079 0.0079 0.0079 0.1508
P value adjustment method: none
pairwise.wilcox.test(data1$value, data1$name) # Holm(1979) # 0.05
Pairwise comparisons using Wilcoxon rank sum test
data: data1$value and data1$name
A B C D
B 0.079 - - -
C 0.079 0.079 - -
D 0.079 0.079 0.079 -
E 0.079 0.079 0.079 0.151
P value adjustment method: holm
pairwise.wilcox.test(data1$value, data1$name, p.adj = "bonf") #bonferoni # 0.05
Pairwise comparisons using Wilcoxon rank sum test
data: data1$value and data1$name
A B C D
B 0.079 - - -
C 0.079 0.079 - -
D 0.079 0.079 0.079 -
E 0.079 0.079 0.079 1.000
P value adjustment method: bonferroni
pairwise.wilcox.test(data1$value, data1$name, p.adj = "bonf", paired = T) #bonferoni # 0.05 -> Date sind verbunden...
Pairwise comparisons using Wilcoxon signed rank test
data: data1$value and data1$name
A B C D
B 1.00 - - -
C 0.62 0.62 - -
D 0.62 0.62 1.00 -
E 0.62 0.62 0.62 0.62
P value adjustment method: bonferroni
library(PMCMR)
A <- c(7.723993,1.028277,3.397590,1.553082,8.516992)
B <- c(9.615282, 10.033950,10.733516,9.631614,8.990351)
C <- c(27.645026, 27.267920,27.227293,27.080951,26.857743)
data1 <- cbind(A, B, C)
View(data1)
posthoc.friedman.nemenyi.test(data1)
Pairwise comparisons using Nemenyi multiple comparison test
with q approximation for unreplicated blocked data
data: data1
A B
B 0.2538 -
C 0.0045 0.2538
P value adjustment method: none
sprintf("Das neue Aplha liegt bei: %f", (0.05/3))
[1] "Das neue Aplha liegt bei: 0.016667"