Korzystam z biblioteki R „multcomp” ( http://cran.r-project.org/web/packages/multcomp/ ) do obliczenia testu Dunnetta. Korzystam ze skryptu poniżej:
Group <- factor(c("A","A","B","B","B","C","C","C","D","D","D","E","E","F","F","F"))
Value <- c(5,5.09901951359278,4.69041575982343,4.58257569495584,4.79583152331272,5,5.09901951359278,4.24264068711928,5.09901951359278,5.19615242270663,4.58257569495584,6.16441400296898,6.85565460040104,7.68114574786861,7.07106781186548,6.48074069840786)
data <- data.frame(Group, Value)
aov <- aov(Value ~ Group, data)
summary(glht(aov, linfct=mcp(Group="Dunnett")))
Teraz, jeśli uruchomię ten skrypt wiele razy w Konsoli R. Za każdym razem otrzymuję nieco inne wyniki. Oto jeden przykład:
Simultaneous Tests for General Linear Hypotheses
Multiple Comparisons of Means: Dunnett Contrasts
Fit: aov(formula = Value ~ Group, data = data)
Linear Hypotheses:
Estimate Std. Error t value Pr(>|t|)
B - A == 0 -0.35990 0.37009 -0.972 0.76545
C - A == 0 -0.26896 0.37009 -0.727 0.90019
D - A == 0 -0.09026 0.37009 -0.244 0.99894
E - A == 0 1.46052 0.40541 3.603 0.01710 *
F - A == 0 2.02814 0.37009 5.480 0.00104 **
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
(Adjusted p values reported -- single-step method)
A oto kolejne:
Simultaneous Tests for General Linear Hypotheses
Multiple Comparisons of Means: Dunnett Contrasts
Fit: aov(formula = Value ~ Group, data = data)
Linear Hypotheses:
Estimate Std. Error t value Pr(>|t|)
B - A == 0 -0.35990 0.37009 -0.972 0.7654
C - A == 0 -0.26896 0.37009 -0.727 0.9001
D - A == 0 -0.09026 0.37009 -0.244 0.9989
E - A == 0 1.46052 0.40541 3.603 0.0173 *
F - A == 0 2.02814 0.37009 5.480 <0.001 ***
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
(Adjusted p values reported -- single-step method)
Jak widać, powyższe dwa wyniki różnią się nieznacznie, ale wystarczy przesunąć ostatnią grupę (F) z dwóch gwiazdek na trzy gwiazdki, co mnie niepokoi.
Mam kilka pytań na ten temat:
- Dlaczego to się dzieje?! Z pewnością, jeśli wprowadzasz te same dane za każdym razem, powinieneś uzyskać te same dane.
- Czy gdzieś w obliczeniach Dunnetta stosowana jest jakaś liczba losowa?
- Czy ta niewielka zmiana za każdym razem stanowi problem?
źródło
Masz rację, w grę wchodzi generowanie liczb losowych, co powoduje, że obliczenia różnią się w zależności od serii. Winowajcą nie jest w rzeczywistości procedura Dunnetta, ale wielowymiarowy rozkład t wymagany do korekty jednostopniowej.
Jeśli jest to niepokojące, po prostu zadzwoń
set.seed
z dowolnym argumentem przed obliczeniami, aby był dokładnie odtwarzalny.Nawiasem mówiąc, istnieje potwierdzenie i kwantyfikacja błędu na wyjściu
glht
:źródło