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
Rozkład wyników bólu wygląda następująco:
ggplot(headache, aes(x=pain_score)) +
geom_histogram(bins=10) +
facet_grid(gender~risk~treatment)pudelkowy<- ggboxplot(headache, x="treatment",
y="pain_score", color="risk", fill="white", facet.by = "gender")
pudelkowyPoszczególne statystyki opisowe według grup płci, poziomu ryzyka migreny i metody leczenia dla wyniku bólu:
| male.high.X (N = 6) | female.high.X (N = 6) | male.low.X (N = 6) | female.low.X (N = 6) | male.high.Y (N = 6) | female.high.Y (N = 6) | male.low.Y (N = 6) | female.low.Y (N = 6) | male.high.Z (N = 6) | female.high.Z (N = 6) | male.low.Z (N = 6) | female.low.Z (N = 6) | |
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Min | 86.29 | 68.36 | 70.83 | 68.61 | 77.52 | 73.14 | 67.92 | 63.73 | 74.42 | 74.99 | 68.30 | 65.45 |
| Max | 100.00 | 82.66 | 81.16 | 78.07 | 91.18 | 86.59 | 80.68 | 74.75 | 85.06 | 87.14 | 80.43 | 73.10 |
| Q1 | 88.91 | 79.14 | 73.59 | 72.01 | 78.95 | 80.01 | 69.46 | 65.24 | 76.60 | 79.81 | 70.71 | 68.87 |
| Mediana | 93.39 | 81.06 | 75.95 | 74.62 | 81.16 | 81.81 | 73.36 | 68.73 | 80.37 | 80.84 | 74.85 | 69.59 |
| Q3 | 95.30 | 81.43 | 78.69 | 77.06 | 83.90 | 83.67 | 74.86 | 69.80 | 81.98 | 82.41 | 77.95 | 71.65 |
| Średnia | 92.74 | 78.87 | 76.05 | 74.16 | 82.34 | 81.18 | 73.14 | 68.36 | 79.68 | 81.04 | 74.46 | 69.78 |
| Odch. std. | 5.12 | 5.32 | 3.85 | 3.69 | 5.00 | 4.62 | 4.77 | 4.08 | 4.05 | 3.98 | 4.89 | 2.72 |
| Skośność | 0.01 | -1.18 | 0.00 | -0.29 | 0.70 | -0.57 | 0.27 | 0.22 | -0.09 | 0.02 | -0.09 | -0.27 |
| Kurtoza | -1.72 | -0.40 | -1.78 | -1.73 | -1.17 | -1.13 | -1.51 | -1.53 | -1.81 | -1.19 | -1.90 | -1.46 |
Założenia
Należy sprawdzić, czy można użyć Anovy parametrycznej.
Obserwacje odstające
headache %>%
group_by(gender, risk,treatment) %>%
identify_outliers(pain_score)## # A tibble: 4 × 7
## gender risk treatment id pain_score is.outlier is.extreme
## <fct> <fct> <fct> <int> <dbl> <lgl> <lgl>
## 1 female high X 57 68.4 TRUE TRUE
## 2 female high Y 62 73.1 TRUE FALSE
## 3 female high Z 67 75.0 TRUE FALSE
## 4 female high Z 71 87.1 TRUE FALSE
Występują cztery obserwacje odstające. Jedna z obserwacji (kobieta o wysokim ryzyku migreny leczona metodą ,,X”) jest skrajnie odstająca. Należy sprawdzić normalność danych dla grup, aby stwierdzić, czy obserwacje odstające mają wpływ na normalność danych.
Normalność
ggqqplot(headache, x = ("pain_score"), color = "turquoise1")+
facet_grid(gender~risk~treatment)headache %>%
group_by(gender,risk,treatment) %>%
shapiro_test(pain_score)## # A tibble: 12 × 6
## gender risk treatment variable statistic p
## <fct> <fct> <fct> <chr> <dbl> <dbl>
## 1 male high X pain_score 0.958 0.808
## 2 male high Y pain_score 0.902 0.384
## 3 male high Z pain_score 0.955 0.784
## 4 male low X pain_score 0.982 0.962
## 5 male low Y pain_score 0.920 0.507
## 6 male low Z pain_score 0.924 0.535
## 7 female high X pain_score 0.714 0.00869
## 8 female high Y pain_score 0.939 0.654
## 9 female high Z pain_score 0.971 0.901
## 10 female low X pain_score 0.933 0.600
## 11 female low Y pain_score 0.927 0.555
## 12 female low Z pain_score 0.958 0.801
W jednej grupie, tj. grupie dla kobiet o wysokim ryzyku migreny leczonych metodą ,,X”, odrzucamy hipotezę o zgodności z rozkładem normalnym. Musimy założyć większą dozę niepewności dla wyniku testu Anova. Reszta grup spełnia założenia o rozkładzie normalnym.
” Fortunately, an anova is not very sensitive to moderate deviations from normality; simulation studies, using a variety of non-normal distributions, have shown that the false positive rate is not affected very much by this violation of the assumption (Glass et al. 1972, Harwell et al. 1992, Lix et al. 1996). False postive result.”
“1) rozkład wyników zmiennej zależnej w każdej z analizowanych
grup jest zbliżony do rozkładu normalnego.
Jednakże test ten jest dość odporny na złamanie tego założenia i w
praktyce, niektórzy analitycy w przypadku”małych odstępstw” nie biorą
złamanie tego założenia pod uwagę. W celu sprawdzenia, czy wyniki mają
rozkład normalny można zastosować test Kołmogorowa-Smirnowa bądź test
Shapiro-Wilka”
źródło: https://www.naukowiec.org/wiedza/statystyka/analiza-wariancji–zalozenia_775.html
Jednorodność wariancji
headache %>%
levene_test(pain_score~gender*risk*treatment)## # A tibble: 1 × 4
## df1 df2 statistic p
## <int> <int> <dbl> <dbl>
## 1 11 60 0.179 0.998
P-value=0.998 > 0.05, zatem wariancje są jednorodne.
Anova
wyniki <- headache %>% anova_test(pain_score~gender*risk*treatment)
wyniki## ANOVA Table (type II tests)
##
## Effect DFn DFd F p p<.05 ges
## 1 gender 1 60 16.196 0.000163000000000 * 0.213
## 2 risk 1 60 92.699 0.000000000000088 * 0.607
## 3 treatment 2 60 7.318 0.001000000000000 * 0.196
## 4 gender:risk 1 60 0.141 0.708000000000000 0.002
## 5 gender:treatment 2 60 3.338 0.042000000000000 * 0.100
## 6 risk:treatment 2 60 0.713 0.494000000000000 0.023
## 7 gender:risk:treatment 2 60 7.406 0.001000000000000 * 0.198
W powyższej tabeli ANOVY widzimy, że istotne różnice w wyniku bólu występują dla wszystkich zmiennych (płci, ryzyka migreny oraz sposobie leczenia). Dodatkowo zauważamy, że istnieją istotne interakcje między płcią a sposobem leczenia, a także pomiędzy wszystkimi zmiennymi.
Testy post-hoc
wyniki2 <- lm(pain_score~gender*risk*treatment,headache)
headache %>%
group_by(gender) %>%
anova_test(pain_score~risk*treatment,error=wyniki2)## # A tibble: 6 × 8
## gender Effect DFn DFd F p `p<.05` ges
## * <fct> <chr> <dbl> <dbl> <dbl> <dbl> <chr> <dbl>
## 1 male risk 1 60 50.0 0.00000000187 "*" 0.455
## 2 male treatment 2 60 10.2 0.000157 "*" 0.253
## 3 male risk:treatment 2 60 5.25 0.008 "*" 0.149
## 4 female risk 1 60 42.8 0.000000015 "*" 0.416
## 5 female treatment 2 60 0.482 0.62 "" 0.016
## 6 female risk:treatment 2 60 2.87 0.065 "" 0.087
wyniki2##
## Call:
## lm(formula = pain_score ~ gender * risk * treatment, data = headache)
##
## Coefficients:
## (Intercept) genderfemale
## 92.74 -13.87
## risklow treatmentY
## -16.69 -10.40
## treatmentZ genderfemale:risklow
## -13.06 11.98
## genderfemale:treatmentY genderfemale:treatmentZ
## 12.71 15.23
## risklow:treatmentY risklow:treatmentZ
## 7.48 11.46
## genderfemale:risklow:treatmentY genderfemale:risklow:treatmentZ
## -15.59 -18.01
Dla czterech par mamy istotnie statystycznie różnice w poziomie bólu głowy. Natomiast dla dwóch par różnice te nie są istotne. Dla większości kombinacji mamy do czynienia z istotną zależnością. Największa zależność występuje u mężczyzn i poziom bólu zależy od ryzyka.
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.
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.