Anova 3-czynnikowa
Wprowadzenie
Trójczynnikowa ANOVA jest rozszerzeniem dwukierunkowej ANOVA do oceny, czy istnieje efekt interakcji pomiędzy trzema niezależnymi zmiennymi kategorycznymi (jakościowymi) na ciągłą zmienną wynikową (ilościową).
Wykorzystamy zbiór danych headache [z pakietu datarium], który zawiera ankietę dot. miary bólu w epizodzie migrenowego bólu głowy u 72 uczestników leczonych trzema różnymi metodami. Wśród uczestników jest 36 mężczyzn i 36 kobiet. Mężczyźni i kobiety zostali dalej podzieleni na grupy o niskim lub wysokim ryzyku migreny.
Chcemy zrozumieć, jak każda niezależna zmienna (rodzaj leczenia, ryzyko migreny i płeć) współdziałają w przewidywaniu wyniku bólu.
Statystyki opisowe
summary(headache)
## id gender risk treatment pain_score
## Min. : 1.0 male :36 high:36 X:24 Min. : 63.7
## 1st Qu.:18.8 female:36 low :36 Y:24 1st Qu.: 72.9
## Median :36.5 Z:24 Median : 77.9
## Mean :36.5 Mean : 77.6
## 3rd Qu.:54.2 3rd Qu.: 81.5
## Max. :72.0 Max. :100.0
Założenia
Obserwacje odstające
ggplot(headache, aes(x = gender, y = pain_score)) +
geom_boxplot()
ggplot(headache, aes(x = gender, y = pain_score)) +
geom_boxplot() +
facet_wrap(treatment ~ risk, scales = 'free')
Normalność
= headache %>%
headache mutate(grupa = paste(gender, risk, treatment, sep = '_'))
= unique(headache$grupa)
grupy
sapply(grupy, function(x){
%>% filter(grupa == x) %>% pull(pain_score) %>% shapiro.test()
headache })
## male_low_X male_low_Y
## statistic 0.982 0.92
## p.value 0.962 0.507
## method "Shapiro-Wilk normality test" "Shapiro-Wilk normality test"
## data.name "." "."
## male_low_Z male_high_X
## statistic 0.924 0.958
## p.value 0.535 0.808
## method "Shapiro-Wilk normality test" "Shapiro-Wilk normality test"
## data.name "." "."
## male_high_Y male_high_Z
## statistic 0.902 0.955
## p.value 0.384 0.784
## method "Shapiro-Wilk normality test" "Shapiro-Wilk normality test"
## data.name "." "."
## female_low_X female_low_Y
## statistic 0.933 0.927
## p.value 0.6 0.555
## method "Shapiro-Wilk normality test" "Shapiro-Wilk normality test"
## data.name "." "."
## female_low_Z female_high_X
## statistic 0.958 0.714
## p.value 0.801 0.00869
## method "Shapiro-Wilk normality test" "Shapiro-Wilk normality test"
## data.name "." "."
## female_high_Y female_high_Z
## statistic 0.939 0.971
## p.value 0.654 0.901
## method "Shapiro-Wilk normality test" "Shapiro-Wilk normality test"
## data.name "." "."
Jednorodność wariancji
Anova
= aov(pain_score ~ risk * gender * treatment, data = headache)
anova summary(anova)
## Df Sum Sq Mean Sq F value Pr(>F)
## risk 1 1794 1794 92.70 0.000000000000088 ***
## gender 1 313 313 16.20 0.00016 ***
## treatment 2 283 142 7.32 0.00143 **
## risk:gender 1 3 3 0.14 0.70849
## risk:treatment 2 28 14 0.71 0.49422
## gender:treatment 2 129 65 3.34 0.04220 *
## risk:gender:treatment 2 287 143 7.41 0.00133 **
## Residuals 60 1161 19
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
Testy post-hoc
Jeśli istnieje znaczący trójstronny efekt interakcji, można go rozłożyć na:
- Prostą interakcję dwukierunkową: uruchomić interakcję dwukierunkową na każdym poziomie zmiennej trzeciej,
- Prosty efekt główny: uruchom model jednokierunkowy na każdym poziomie drugiej zmiennej,
- proste porównania parami: przeprowadź porównania parami lub inne porównania post-hoc, jeśli to konieczne.
TukeyHSD(anova)
## Tukey multiple comparisons of means
## 95% family-wise confidence level
##
## Fit: aov(formula = pain_score ~ risk * gender * treatment, data = headache)
##
## $risk
## diff lwr upr p adj
## low-high -9.98 -12.1 -7.91 0
##
## $gender
## diff lwr upr p adj
## female-male -4.17 -6.25 -2.1 0
##
## $treatment
## diff lwr upr p adj
## Y-X -4.1986 -7.25 -1.15 0.004
## Z-X -4.2152 -7.27 -1.16 0.004
## Z-Y -0.0166 -3.07 3.04 1.000
##
## $`risk:gender`
## diff lwr upr p adj
## low:male-high:male -10.37 -14.25 -6.4971 0.000
## high:female-high:male -4.56 -8.44 -0.6874 0.015
## low:female-high:male -14.15 -18.03 -10.2800 0.000
## high:female-low:male 5.81 1.94 9.6842 0.001
## low:female-low:male -3.78 -7.66 0.0916 0.058
## low:female-high:female -9.59 -13.47 -5.7181 0.000
##
## $`risk:treatment`
## diff lwr upr p adj
## low:X-high:X -10.70 -15.9843 -5.412 0.000
## high:Y-high:X -4.04 -9.3298 1.243 0.230
## low:Y-high:X -15.05 -20.3379 -9.765 0.000
## high:Z-high:X -5.44 -10.7303 -0.158 0.040
## low:Z-high:X -13.68 -18.9706 -8.398 0.000
## high:Y-low:X 6.65 1.3681 11.941 0.006
## low:Y-low:X -4.35 -9.6400 0.933 0.164
## high:Z-low:X 5.25 -0.0324 10.540 0.052
## low:Z-low:X -2.99 -8.2726 2.300 0.561
## low:Y-high:Y -11.01 -16.2944 -5.722 0.000
## high:Z-high:Y -1.40 -6.6868 3.886 0.970
## low:Z-high:Y -9.64 -14.9270 -4.354 0.000
## high:Z-low:Y 9.61 4.3213 14.894 0.000
## low:Z-low:Y 1.37 -3.9190 6.654 0.973
## low:Z-high:Z -8.24 -13.5265 -2.954 0.000
##
## $`gender:treatment`
## diff lwr upr p adj
## female:X-male:X -7.885 -13.17 -2.60 0.001
## male:Y-male:X -6.655 -11.94 -1.37 0.006
## female:Y-male:X -9.627 -14.91 -4.34 0.000
## male:Z-male:X -7.327 -12.61 -2.04 0.002
## female:Z-male:X -8.988 -14.27 -3.70 0.000
## male:Y-female:X 1.230 -4.06 6.52 0.983
## female:Y-female:X -1.742 -7.03 3.54 0.926
## male:Z-female:X 0.558 -4.73 5.84 1.000
## female:Z-female:X -1.103 -6.39 4.18 0.990
## female:Y-male:Y -2.972 -8.26 2.31 0.566
## male:Z-male:Y -0.672 -5.96 4.61 0.999
## female:Z-male:Y -2.333 -7.62 2.95 0.784
## male:Z-female:Y 2.300 -2.99 7.59 0.794
## female:Z-female:Y 0.639 -4.65 5.93 0.999
## female:Z-male:Z -1.661 -6.95 3.63 0.939
##
## $`risk:gender:treatment`
## diff lwr upr p adj
## low:male:X-high:male:X -16.687 -25.322 -8.052 0.000
## high:female:X-high:male:X -13.874 -22.509 -5.239 0.000
## low:female:X-high:male:X -18.583 -27.217 -9.948 0.000
## high:male:Y-high:male:X -10.397 -19.032 -1.763 0.007
## low:male:Y-high:male:X -19.600 -28.235 -10.965 0.000
## high:female:Y-high:male:X -11.564 -20.198 -2.929 0.001
## low:female:Y-high:male:X -24.377 -33.012 -15.742 0.000
## high:male:Z-high:male:X -13.058 -21.693 -4.423 0.000
## low:male:Z-high:male:X -18.283 -26.918 -9.648 0.000
## high:female:Z-high:male:X -11.704 -20.339 -3.069 0.001
## low:female:Z-high:male:X -22.959 -31.594 -14.324 0.000
## high:female:X-low:male:X 2.813 -5.822 11.448 0.993
## low:female:X-low:male:X -1.896 -10.530 6.739 1.000
## high:male:Y-low:male:X 6.290 -2.345 14.925 0.374
## low:male:Y-low:male:X -2.913 -11.548 5.722 0.991
## high:female:Y-low:male:X 5.124 -3.511 13.758 0.680
## low:female:Y-low:male:X -7.690 -16.325 0.945 0.126
## high:male:Z-low:male:X 3.629 -5.006 12.264 0.953
## low:male:Z-low:male:X -1.596 -10.231 7.039 1.000
## high:female:Z-low:male:X 4.983 -3.651 13.618 0.716
## low:female:Z-low:male:X -6.272 -14.907 2.363 0.378
## low:female:X-high:female:X -4.709 -13.344 3.926 0.781
## high:male:Y-high:female:X 3.476 -5.158 12.111 0.965
## low:male:Y-high:female:X -5.726 -14.361 2.909 0.519
## high:female:Y-high:female:X 2.310 -6.325 10.945 0.999
## low:female:Y-high:female:X -10.503 -19.138 -1.868 0.006
## high:male:Z-high:female:X 0.816 -7.819 9.450 1.000
## low:male:Z-high:female:X -4.409 -13.044 4.226 0.844
## high:female:Z-high:female:X 2.170 -6.465 10.805 0.999
## low:female:Z-high:female:X -9.086 -17.720 -0.451 0.031
## high:male:Y-low:female:X 8.185 -0.449 16.820 0.079
## low:male:Y-low:female:X -1.017 -9.652 7.617 1.000
## high:female:Y-low:female:X 7.019 -1.616 15.654 0.222
## low:female:Y-low:female:X -5.794 -14.429 2.840 0.500
## high:male:Z-low:female:X 5.525 -3.110 14.159 0.573
## low:male:Z-low:female:X 0.300 -8.335 8.934 1.000
## high:female:Z-low:female:X 6.879 -1.756 15.514 0.247
## low:female:Z-low:female:X -4.377 -13.011 4.258 0.850
## low:male:Y-high:male:Y -9.203 -17.838 -0.568 0.027
## high:female:Y-high:male:Y -1.166 -9.801 7.469 1.000
## low:female:Y-high:male:Y -13.980 -22.614 -5.345 0.000
## high:male:Z-high:male:Y -2.661 -11.296 5.974 0.996
## low:male:Z-high:male:Y -7.886 -16.520 0.749 0.105
## high:female:Z-high:male:Y -1.306 -9.941 7.328 1.000
## low:female:Z-high:male:Y -12.562 -21.197 -3.927 0.000
## high:female:Y-low:male:Y 8.037 -0.598 16.671 0.091
## low:female:Y-low:male:Y -4.777 -13.412 3.858 0.766
## high:male:Z-low:male:Y 6.542 -2.093 15.177 0.316
## low:male:Z-low:male:Y 1.317 -7.318 9.952 1.000
## high:female:Z-low:male:Y 7.896 -0.738 16.531 0.104
## low:female:Z-low:male:Y -3.359 -11.994 5.276 0.973
## low:female:Y-high:female:Y -12.813 -21.448 -4.179 0.000
## high:male:Z-high:female:Y -1.495 -10.129 7.140 1.000
## low:male:Z-high:female:Y -6.719 -15.354 1.915 0.279
## high:female:Z-high:female:Y -0.140 -8.775 8.495 1.000
## low:female:Z-high:female:Y -11.396 -20.031 -2.761 0.002
## high:male:Z-low:female:Y 11.319 2.684 19.954 0.002
## low:male:Z-low:female:Y 6.094 -2.541 14.729 0.422
## high:female:Z-low:female:Y 12.673 4.038 21.308 0.000
## low:female:Z-low:female:Y 1.418 -7.217 10.052 1.000
## low:male:Z-high:male:Z -5.225 -13.860 3.410 0.653
## high:female:Z-high:male:Z 1.354 -7.280 9.989 1.000
## low:female:Z-high:male:Z -9.901 -18.536 -1.266 0.012
## high:female:Z-low:male:Z 6.579 -2.056 15.214 0.308
## low:female:Z-low:male:Z -4.676 -13.311 3.958 0.789
## low:female:Z-high:female:Z -11.256 -19.890 -2.621 0.002
Jeśli nie masz statystycznie istotnej interakcji trójdrożnej, musisz określić, czy masz statystycznie istotną interakcję dwukierunkową z danych wyjściowych ANOVA. Możesz śledzić znaczącą interakcję dwukierunkową za pomocą prostych analiz efektów głównych i porównań parami między grupami, jeśli to konieczne.