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")
pudelkowy

Poszczególne statystyki opisowe według grup płci, poziomu ryzyka migreny i metody leczenia dla wyniku bólu:

Statystyki opisowe
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.