Post - Hoc - Tests

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.

parametrisch

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"

Bonferroni (ungleiche Gruppen)

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 

Tukey’s Test (gleiche Gruppen)

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

non-parametrisch

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"
LS0tDQpvdXRwdXQ6IGh0bWxfbm90ZWJvb2sNCi0tLQ0KIyMjIFBvc3QgLSBIb2MgLSBUZXN0cyANCg0KTWl0IEhpbGZlIGVpbmVzIG11bHRpcGxlbiBNaXR0ZWx3ZXJ0dmVyZ2xlaWNocyBhdWYgZGVyIEJhc2lzIHZvbiBQb3N0LUhvYy1UZXN0cyBsYXNzZW4gc2ljaCBzaWduaWZpa2FudGUgTWl0dGVsd2VydHVudGVyc2NoaWVkZSBuYWNoIEhvbW9nZW5pdMOkdHNrcml0ZXJpZW4gYmV1cnRlaWxlbi4NCg0KRWluZSBHcnVwcGUgdm9uIE1pdHRlbHdlcnRlbiwgZGllIGR1cmNoIGRlbiBGLVRlc3QgZWluZXIgQU5PVkEgYWxzIGluaG9tb2dlbiBhdXNnZXdpZXNlbiB3dXJkZSwga2FubiBkdXJjaCBQb3N0LUhvYy1WZXJmYWhyZW4gaW4gaG9tb2dlbmUgVGVpbGdydXBwZW4gZ2VnbGllZGVydCB3ZXJkZW4uIERhZHVyY2gga2zDpHJlbiBtdWx0aXBsZSBNaXR0ZWx3ZXJ0dmVyZ2xlaWNoZSBhdWNoLCB3ZWxjaGUgRmFrdG9yc3R1ZmVuIGltIEVpbnplbG5lbiBkZW4gc2lnbmlmaWthbnRlbiBFZmZla3QgaW4gZWluZXIgQU5PVkEgcHJvZHV6aWVydCBoYWJlbi4NCg0KSW0gR2VnZW5zYXR6IHp1IGRlbiBQb3N0LUhvYy1UZXN0cyB3w7xyZGUgZWluIHQtVGVzdCBkaWUgc3RhdGlzdGlzY2hlIFNpZ25pZmlrYW56IHZvbiBNaXR0ZWx3ZXJ0dW50ZXJzY2hpZWRlbiBvZnQgw7xiZXJzY2jDpHR6ZW4uIEFuZ2Vub21tZW4sIFNpZSBiaWxkZW4gMjAgU3RpY2hwcm9iZW4gbWl0IGplIDEwIFp1ZmFsbHN6YWhsZW4gdW5kIGJlcmVjaG5lbiBkaWUgMjAgTWl0dGVsd2VydGUgZGVyIFN0aWNocHJvYmVuLiBEYW5uIHZlcmdsZWljaGVuIFNpZSBkaWUgR3J1cHBlIChTdGljaHByb2JlKSBtaXQgZGVtIGjDtmNoc3RlbiBNaXR0ZWx3ZXJ0IG1pdCBkZXIgR3J1cHBlLCBkaWUgZGVuIGtsZWluc3RlbiBNaXR0ZWx3ZXJ0IGF1ZndlaXN0LiBFaW4gdC1UZXN0IGbDvHIgdW5hYmjDpG5naWdlIFN0aWNocHJvYmVuIHfDvHJkZSBiZWltIFByw7xmZW4gZGVzIE1pdHRlbHdlcnR1bnRlcnNjaGllZHMgYXVmIFNpZ25pZmlrYW56IHZvcmF1c3NldHplbiwgZGFzcyBudXIgZGllc2UgYmVpZGVuIFN0aWNocHJvYmVuIGdlem9nZW4gd29yZGVuIHNpbmQuIFBvc3QtSG9jLVRlc3RzIGJlcsO8Y2tzaWNodGlnZW4gaW5kZXNzZW4gZGllIFN0cmV1dW5nIHZvbiBNaXR0ZWx3ZXJ0ZGlmZmVyZW56ZW4gaW0gbXVsdGlwbGVuIEdydXBwZW52ZXJnbGVpY2guDQoNCg0KDQpgYGB7cn0NCmRhdGEgPC0gZGF0YS5mcmFtZSgNCm5hbWU9YyggcmVwKCJBIiw1MCksIHJlcCgiQiIsNTApLCByZXAoIkMiLDUwKSwgcmVwKCJEIiw1MCksIHJlcCgiRSIsIDUwKSksDQp2YWx1ZT1jKCBybm9ybSg1MCwgOCwgNSksIHJub3JtKDUwLCAxMCwgMSksIHJub3JtKDUwLCAyOCwgMSksIHJub3JtKDUwLCAzMSwgNCksIHJub3JtKDUwLCAzNywgMSkgKQ0KKQ0KYGBgDQoNCmBgYHtyfQ0KVmlldyhkYXRhKQ0KYGBgDQoNCmBgYHtyfQ0KbGlicmFyeShnZ3Bsb3QyKQ0KZ2dwbG90KGRhdGEsIGFlcyh4PW5hbWUsIHk9dmFsdWUsIGdyb3VwPTEpKSsNCiAgc3RhdF9zdW1tYXJ5KGZ1bi55ID0gbWVhbiwgZ2VvbT0icG9pbnQiLCBzaXplPTMpKw0KICBzdGF0X3N1bW1hcnkoZnVuLnkgPSBtZWFuLCBnZW9tPSJsaW5lIikrDQogIHN0YXRfc3VtbWFyeShmdW4uZGF0YSA9IG1lYW5fY2xfbm9ybWFsLCBnZW9tPSJlcnJvcmJhciIsd2lkdGg9LjIsIHNpemU9LjI1KSsNCiAgbGFicyh4PSJ4IiwgeT0ieSIpKw0KICB0aGVtZV9jbGFzc2ljKCkNCmBgYA0KIyBwYXJhbWV0cmlzY2ggDQoNCmBgYHtyfQ0KcGFpcndpc2UudC50ZXN0KGRhdGEkdmFsdWUsIA0KICAgICAgICAgICAgICAgIGRhdGEkbmFtZSwgDQogICAgICAgICAgICAgICAgcC5hZGp1c3QubWV0aG9kID0gIm5vbiIsIA0KICAgICAgICAgICAgICAgIGRhdGEgPSBkYXRhKQ0KYGBgDQoNCmBgYHtyfQ0KbmV3YWxwaGEgPC0gMC4wNS8xMA0Kc3ByaW50ZigiRGFzIG5ldWUgQXBsaGEgbGllZ3QgYmVpOiAlZiIsIG5ld2FscGhhKQ0KYGBgDQoNCiMjIyBCb25mZXJyb25pICh1bmdsZWljaGUgR3J1cHBlbikNCg0KRGllIEJvbmZlcnJvbmkgaXN0IGVpbmUgdm9uIG1laHJlcmVuIE1ldGhvZGVuLCBkaWUgdmVyd2VuZGV0IHdlcmRlbiwgdW0gZGVyIEFscGhhZmVobGVya3VtdWxpZXJ1bmcgZW50Z2VnZW56dXdpcmtlbi4gU2llIGdlaMO2cnQgenUgZGVuIGVpbmZhY2hzdGVuIHVuZCBrb25zZXJ2YXRpdnN0ZW4gVmVyZmFocmVuLiBEaWUgQm9uZmVycm9uaSB3aXJkIHVtIHNvIGtvbnNlcnZhdGl2ZXIsIGplIGdyw7bDn2VyIGRpZSBBbnphaGwgZHVyY2hnZWbDvGhydGVyIFRlc3RzIGlzdC4gR2VuZXJlbGwgZ2lsdCBkaWUgQm9uZmVycm9uaSBhbHMgZWluZSBkZXIgKiprb25zZXJ2YXRpdnN0ZW4qKiBLb3JyZWt0dXJ2ZXJmYWhyZW4gdW5kIGlzdCBmw7xyIHZpZWxlIHp1IGtvbnNlcnZhdGl2Lg0KDQoNCmBgYHtyfQ0KcGFpcndpc2UudC50ZXN0KGRhdGEkdmFsdWUsIA0KICAgICAgICAgICAgICAgIGRhdGEkbmFtZSwgDQogICAgICAgICAgICAgICAgcC5hZGp1c3QubWV0aG9kID0gImJvbmZlcnJvbmkiLCANCiAgICAgICAgICAgICAgICBwYWlyZWQgPSBGLCANCiAgICAgICAgICAgICAgICBkYXRhID0gZGF0YSkNCmBgYA0KDQojIyMgVHVrZXnigJlzIFRlc3QgKGdsZWljaGUgR3J1cHBlbikNCkRlciBUdWtleS1UZXN0IGlzdCBlaW4gcG9zdC1ob2MgVGVzdCBkZXIgYWxsZSBtw7ZnbGljaGVuIEdydXBwZW5rb21iaW5hdGlvbmVuIHZlcmdsZWljaHQuIFZvbiBkZW4gVGVzdHMsIGRpZSBSIHVucyB6dXIgVmVyZsO8Z3VuZyBzdGVsbHQsIGlzdCBlciBldHdhIG1pdHRpZyBhbnp1c2llZGVsbiwgYXVmIGVpbmVyIFNrYWxhIGRpZSBUZXN0cyBuYWNoIGRlbSBLcml0ZXJpdW0gKiprb25zZXJ2YXRpdiAvIGxpYmVyYWwqKiBlaW50ZWlsdC4NCg0KYGBge3J9DQpUdWtleUhTRChhb3YoZGF0YT1kYXRhLCBkYXRhJHZhbHVlfmRhdGEkbmFtZSkpDQpgYGANCg0KDQoNCiMgbm9uLXBhcmFtZXRyaXNjaCANCg0KYGBge3J9DQpkYXRhMSA8LSBkYXRhLmZyYW1lKA0KbmFtZT1jKCByZXAoIkEiLDUpLCByZXAoIkIiLDUpLCByZXAoIkMiLDUpLCByZXAoIkQiLDUpLCByZXAoIkUiLCA1KSksDQogIHZhbHVlPWMoIHJub3JtKDUsIDgsIDUpLCBybm9ybSg1LCAxMCwgMSksIHJub3JtKDUsIDI4LCAxKSwgcm5vcm0oNSwgMzEsIDQpLCBybm9ybSg1LCAzNywgMSkgKQ0KKQ0KYGBgDQpgYGB7cn0NClZpZXcoZGF0YTEpDQpgYGANCg0KDQpgYGB7cn0NCmdncGxvdChkYXRhMSwgYWVzKHg9bmFtZSwgeT12YWx1ZSwgZ3JvdXA9MSkpKw0KICBzdGF0X3N1bW1hcnkoZnVuLnkgPSBtZWFuLCBnZW9tPSJwb2ludCIsIHNpemU9MykrDQogIHN0YXRfc3VtbWFyeShmdW4ueSA9IG1lYW4sIGdlb209ImxpbmUiKSsNCiAgc3RhdF9zdW1tYXJ5KGZ1bi5kYXRhID0gbWVhbl9jbF9ub3JtYWwsIGdlb209ImVycm9yYmFyIix3aWR0aD0uMiwgc2l6ZT0uMjUpKw0KICBsYWJzKHg9IngiLCB5PSJ5IikrDQogIHRoZW1lX2NsYXNzaWMoKQ0KYGBgDQoNCg0KYGBge3J9DQpwYWlyd2lzZS53aWxjb3gudGVzdChkYXRhMSR2YWx1ZSwgZGF0YTEkbmFtZSwgcC5hZGogPSAibm9uIikgIyBrZWluZSBBbnBhc3N1bmcgZGVzd2VnZW4gbXVzcyBuZXdBbHBoYSBiZXJlY2huZXQgd2VyZGVuDQpwYWlyd2lzZS53aWxjb3gudGVzdChkYXRhMSR2YWx1ZSwgZGF0YTEkbmFtZSkgIyBIb2xtKDE5NzkpICMgMC4wNQ0KcGFpcndpc2Uud2lsY294LnRlc3QoZGF0YTEkdmFsdWUsIGRhdGExJG5hbWUsIHAuYWRqID0gImJvbmYiKSAjYm9uZmVyb25pICMgMC4wNQ0KYGBgDQoNCmBgYHtyfQ0KcGFpcndpc2Uud2lsY294LnRlc3QoZGF0YTEkdmFsdWUsIGRhdGExJG5hbWUsIHAuYWRqID0gImJvbmYiLCBwYWlyZWQgPSBUKSAjYm9uZmVyb25pICMgMC4wNSAtPiBEYXRlIHNpbmQgdmVyYnVuZGVuLi4uIA0KYGBgDQoNCmBgYHtyfQ0KDQpsaWJyYXJ5KFBNQ01SKQ0KDQpBIDwtCWMoNy43MjM5OTMsMS4wMjgyNzcsMy4zOTc1OTAsMS41NTMwODIsOC41MTY5OTIpDQpCCTwtIGMoOS42MTUyODIsCTEwLjAzMzk1MCwxMC43MzM1MTYsOS42MzE2MTQsOC45OTAzNTEpDQpDCTwtIGMoMjcuNjQ1MDI2LAkyNy4yNjc5MjAsMjcuMjI3MjkzLDI3LjA4MDk1MSwyNi44NTc3NDMpDQpkYXRhMSA8LSBjYmluZChBLCBCLCBDKQ0KDQpWaWV3KGRhdGExKQ0KcG9zdGhvYy5mcmllZG1hbi5uZW1lbnlpLnRlc3QoZGF0YTEpDQpzcHJpbnRmKCJEYXMgbmV1ZSBBcGxoYSBsaWVndCBiZWk6ICVmIiwgKDAuMDUvMykpDQpgYGANCg0KDQo=