Anova 3-czynnikowa

3 - czynnikowa ANOVA

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.

Hipoteza zerową jest stwierdzenie, że rodzaj leczenia, ryzyko migreny i płeć nie wpływają na wyniki bólu.

Statystyki opisowe

Jak wyglądaja dane?

Statystyki opisowe

headache%>%
group_by(gender, risk, treatment) %>%
get_summary_stats(pain_score, type="mean_sd")
## # A tibble: 12 x 7
##    gender    risk    treatment variable       n  mean    sd
##    <fct>     <fct>   <fct>     <chr>      <dbl> <dbl> <dbl>
##  1 Mężczyzna wysokie lek X     pain_score     6  92.7  5.12
##  2 Mężczyzna wysokie lek Y     pain_score     6  82.3  5.00
##  3 Mężczyzna wysokie lek Z     pain_score     6  79.7  4.05
##  4 Mężczyzna nieskie lek X     pain_score     6  76.1  3.86
##  5 Mężczyzna nieskie lek Y     pain_score     6  73.1  4.76
##  6 Mężczyzna nieskie lek Z     pain_score     6  74.5  4.89
##  7 Kobieta   wysokie lek X     pain_score     6  78.9  5.32
##  8 Kobieta   wysokie lek Y     pain_score     6  81.2  4.62
##  9 Kobieta   wysokie lek Z     pain_score     6  81.0  3.98
## 10 Kobieta   nieskie lek X     pain_score     6  74.2  3.69
## 11 Kobieta   nieskie lek Y     pain_score     6  68.4  4.08
## 12 Kobieta   nieskie lek Z     pain_score     6  69.8  2.72

Histogram

ggplot(headache, aes(x=pain_score)) +
  geom_histogram(bins=10) +
  facet_grid(gender~risk~treatment)

Założenia

Obserwacje odstające

Sprawdźmy czy istnieją obserwacje odstające

headache %>% 
  group_by(treatment, risk, gender) %>%
  identify_outliers(pain_score)
## # A tibble: 4 x 7
##   gender  risk    treatment    id pain_score is.outlier is.extreme
##   <fct>   <fct>   <fct>     <int>      <dbl> <lgl>      <lgl>     
## 1 Kobieta wysokie lek X        57       68.4 TRUE       TRUE      
## 2 Kobieta wysokie lek Y        62       73.1 TRUE       FALSE     
## 3 Kobieta wysokie lek Z        67       75.0 TRUE       FALSE     
## 4 Kobieta wysokie lek Z        71       87.1 TRUE       FALSE

Badana próba zawiera 4 obserwacje odstajace, w tym jedna to obserwacja ekstremalnie odstająca.

Normalność

Sprawdźmy założenie normalności

headache %>% 
  group_by(treatment, risk, gender) %>%
  shapiro_test(pain_score)
## # A tibble: 12 x 6
##    gender    risk    treatment variable   statistic       p
##    <fct>     <fct>   <fct>     <chr>          <dbl>   <dbl>
##  1 Mężczyzna wysokie lek X     pain_score     0.958 0.808  
##  2 Kobieta   wysokie lek X     pain_score     0.714 0.00869
##  3 Mężczyzna nieskie lek X     pain_score     0.982 0.962  
##  4 Kobieta   nieskie lek X     pain_score     0.933 0.600  
##  5 Mężczyzna wysokie lek Y     pain_score     0.902 0.384  
##  6 Kobieta   wysokie lek Y     pain_score     0.939 0.654  
##  7 Mężczyzna nieskie lek Y     pain_score     0.920 0.507  
##  8 Kobieta   nieskie lek Y     pain_score     0.927 0.555  
##  9 Mężczyzna wysokie lek Z     pain_score     0.955 0.784  
## 10 Kobieta   wysokie lek Z     pain_score     0.971 0.901  
## 11 Mężczyzna nieskie lek Z     pain_score     0.924 0.535  
## 12 Kobieta   nieskie lek Z     pain_score     0.958 0.801

Hipoteza zerowa odrzucona jest jedynie dla jednej zmiennej - kobiety o wysokim ryzyku migreny oraz leczeniem lekiem X. Wszytskie pozostałe przypadki posiadają p>0.05 zatem nie ma dla nich podstaw do odrzucenia hipotez zerowych.

Wykres normalności wg podgrup

ggqqplot(headache, x = ("pain_score"), color = "blue", title = "Wykres norlamności według podgrup" )+
  facet_grid(gender~risk~treatment)

Jednorodność wariancji

Sprawdźmy czy wariancja jest jednorodna

headache %>% levene_test(pain_score ~ gender*risk*treatment)
## # A tibble: 1 x 4
##     df1   df2 statistic     p
##   <int> <int>     <dbl> <dbl>
## 1    11    60     0.179 0.998

p-value > 0.05, Zatem wariancje są jednorodne.

Anova

Przejdźmy do głównej analizy wariancji

headache %>% 
  anova_test(pain_score~gender*risk*treatment)
## Coefficient covariances computed by hccm()
## 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

Wniosek: Analizując tabele ANOVY widzimy, że istotne różnice w poziomie bólu głowy występują dla wszytskich trzech czynników: płci, ryzyka oraz podawanego leku. Dodatkowo zauważamy, że istnieją istotne interakcje między płcią a otrzymywanym lekiem oraz trójczynnikowa interakcja płci, leku i ryzyka.

** WYkres ANOWY**

Testy post-hoc

Sprawdźmy co sprawiło, że pojawiły się te istotne różnice między zmiennymi

lm(pain_score~gender*risk*treatment,data=headache)
## 
## Call:
## lm(formula = pain_score ~ gender * risk * treatment, data = headache)
## 
## Coefficients:
##                              (Intercept)  
##                                    92.74  
##                            genderKobieta  
##                                   -13.87  
##                              risknieskie  
##                                   -16.69  
##                           treatmentlek Y  
##                                   -10.40  
##                           treatmentlek Z  
##                                   -13.06  
##                genderKobieta:risknieskie  
##                                    11.98  
##             genderKobieta:treatmentlek Y  
##                                    12.71  
##             genderKobieta:treatmentlek Z  
##                                    15.23  
##               risknieskie:treatmentlek Y  
##                                     7.48  
##               risknieskie:treatmentlek Z  
##                                    11.46  
## genderKobieta:risknieskie:treatmentlek Y  
##                                   -15.59  
## genderKobieta:risknieskie:treatmentlek Z  
##                                   -18.01
headache %>%
  group_by(gender) %>%
  anova_test(pain_score~risk*treatment)
## Coefficient covariances computed by hccm()
## Coefficient covariances computed by hccm()
## # A tibble: 6 x 8
##   gender    Effect           DFn   DFd      F           p `p<.05`   ges
## * <fct>     <chr>          <dbl> <dbl>  <dbl>       <dbl> <chr>   <dbl>
## 1 Mężczyzna risk               1    30 45.0   0.000000195 "*"     0.6  
## 2 Mężczyzna treatment          2    30  9.15  0.000788    "*"     0.379
## 3 Mężczyzna risk:treatment     2    30  4.72  0.016       "*"     0.24 
## 4 Kobieta   risk               1    30 48.2   0.000000104 "*"     0.616
## 5 Kobieta   treatment          2    30  0.542 0.587       ""      0.035
## 6 Kobieta   risk:treatment     2    30  3.23  0.054       ""      0.177

Różnice w poziomie bólu głowy są instotne dla 4 zmiennych: mężczyzna vs risk, mężczyzna vs treatment, mężczyna vs risk;treatment, konieta vs risk.