Raport 8

Dane

Dane pozyskano z pakietu ‘datarium’. Wybrano zestaw ‘stress’. Badacze ocenili w nim wpływ leczenia (‘treatment’) i aktywności fizycznej (‘exercise’) na wynik stresu po uwzględniueniu wieku badanych. Można zatem przeprowadzić analizę ANCOVA w celu ustalenia czy istnieje interakcja pomiędzy tymi danymi.

Statystyki opisowe

Poniżej przedstawiono wizualizację danych na histogrmach. Po prawej stronie widoczne są dwie możliwości dotyczące leczenia - tak i nie. Na górze wykresu zaprezentowano możliwości odpowiedzi dotyczących aktywności fizycznej - niska, umiarkowana, wysoka.

ggplot(stress, aes(x=score)) + 
  geom_histogram(bins=10) + 
  facet_grid(treatment ~ exercise) + 
  theme_classic()

Poniżej przedstawiono wykresy pudełkowe, aby zaznaczyć średnie:

bxp<- ggboxplot(stress, y="score", x="treatment", color ="exercise") 
bxp

Do analizy wybrano dość mało liczną próbkę (n=60). Grupy mają po 10 osób.

xtabs(~ treatment + exercise, data = stress)
##          exercise
## treatment low moderate high
##       yes  10       10   10
##       no   10       10   10

Obliczono poniżej średnią i odchylenie standardowe dla poszczególnych grup.

stress %>%
  group_by(treatment, exercise) %>%
  get_summary_stats(score, type = "mean_sd")
## # A tibble: 6 × 6
##   treatment exercise variable     n  mean    sd
##   <fct>     <fct>    <fct>    <dbl> <dbl> <dbl>
## 1 yes       low      score       10  87.9  6.29
## 2 yes       moderate score       10  86.8  5.69
## 3 yes       high     score       10  71.8  4.33
## 4 no        low      score       10  89.6  4.49
## 5 no        moderate score       10  89.4  5.42
## 6 no        high     score       10  82.0  5.58

Założenia

Obserwacje odstające

Zidentyfikowano poniżej obserwacje odstające.

stress %>%
  group_by(treatment, exercise) %>%
  identify_outliers(score)
## # A tibble: 3 × 7
##   treatment exercise    id score   age is.outlier is.extreme
##   <fct>     <fct>    <int> <dbl> <dbl> <lgl>      <lgl>     
## 1 yes       moderate    11  97.2    62 TRUE       FALSE     
## 2 yes       high        21  81.8    58 TRUE       TRUE      
## 3 yes       high        22  65.8    56 TRUE       FALSE

Badanie normalności

Poniżej wykorzystano wykresy kwantylowe oraz test Shapiro-Wilka.

stress %>%
  group_by(treatment, exercise) %>%
  shapiro_test(score)
## # A tibble: 6 × 5
##   treatment exercise variable statistic      p
##   <fct>     <fct>    <chr>        <dbl>  <dbl>
## 1 yes       low      score        0.827 0.0304
## 2 yes       moderate score        0.966 0.853 
## 3 yes       high     score        0.902 0.228 
## 4 no        low      score        0.958 0.768 
## 5 no        moderate score        0.973 0.920 
## 6 no        high     score        0.930 0.448

Normalność rozkładu wyniku nie występuje w tej sytuacji (p<0,05), dla reszty grup obserwujemy rozkład normalny.

ggqqplot(stress, "score") +
  facet_grid(treatment~exercise)

Wszystkie punkty w przybliżeniu leżą wzdłuż linii odniesienia dla każdej komórki. Możemy więc przyjąć założenie normalności dla danych oprócz pierwszej grupy (low exercise and treatment).

Homogeniczność wariancji

Poniżej sprawdzono homogeniczność wariancji za pomocą testu Levene’a.

stress %>%
  levene_test(score~treatment*exercise)
## # A tibble: 1 × 4
##     df1   df2 statistic     p
##   <int> <int>     <dbl> <dbl>
## 1     5    54     0.405 0.844

Wartość p jest większa niż 0,05, co oznacza, że nie ma istotnej różnicy między wariancjami w poszczególnych grupach. Można zatem przyjąć, że wariancje są homogeniczne w różnych grupach.

Wykres reszt względem dopasowań (residuals versus fits plot) może również być użyty do sprawdzenia homogeniczności wariancj, co pokazano poniżej.

model<-lm(score~treatment*exercise,data=stress)
plot(model, 1)

ANOVA

W tym przykładzie efekt leczenia jest naszą zmienną główną. Przypuszcza się, że efekt leczenia zależeć będzie od jednego innego czynnika - aktywności fizycznej, który jest nazywany zmienną moderatorującą.

results <- aov(data=stress,score~treatment*exercise)
anova(results)
## Analysis of Variance Table
## 
## Response: score
##                    Df Sum Sq Mean Sq F value      Pr(>F)    
## treatment           1    351     351    12.3     0.00092 ***
## exercise            2   1776     888    31.1 0.000000001 ***
## treatment:exercise  2    217     109     3.8     0.02852 *  
## Residuals          54   1543      29                        
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
rep<-report(results)

Inny sposób:

results2 <- stress %>% anova_test(score ~ treatment * exercise)
results2
## ANOVA Table (type II tests)
## 
##               Effect DFn DFd    F             p p<.05   ges
## 1          treatment   1  54 12.3 0.00092300000     * 0.185
## 2           exercise   2  54 31.1 0.00000000104     * 0.535
## 3 treatment:exercise   2  54  3.8 0.02900000000     * 0.123

Z powyższej tabeli wynika, że aktywność fizyczna ma największy wpływ na zmienność związaną z tymże czynnikiem.

Testy post-hoc

Postępowanie dla istotnej dwuczynnikowej interakcji

Głowne efekty

W naszym przykładzie można zbadać wpływ leczenia w każdym poziomie aktywności fizycznej lub zbadać wpływ aktywności w każdym poziomie zmiennej leczenia. Przeprowadzimy jednoczynnikową analizę wariancji (ANOVA) dla aktywności fizycznej w każdym poziomie leczenia. Jeśli dwuczynnikowa interakcja nie jest statystycznie istotna, należy skonsultować efekty główne dla każdej z dwóch zmiennych (leczenie i aktywność fizyczna) w wynikach ANOVA. Przeprowadzimy więc jednoczynnikową analizę wariancji (ANOVA) dla aktywności fizycznej w każdym poziomie leczenia:

# Group the data by gender and fit  anova
model <- lm(score ~ treatment * exercise, data = stress)
stress %>%
  group_by(treatment) %>%
  anova_test(score ~ exercise, error = model)
## # A tibble: 2 × 8
##   treatment Effect     DFn   DFd     F             p `p<.05`   ges
## * <fct>     <chr>    <dbl> <dbl> <dbl>         <dbl> <chr>   <dbl>
## 1 yes       exercise     2    54 28.3  0.00000000393 *       0.512
## 2 no        exercise     2    54  6.58 0.003         *       0.196

Prosty efekt główny “aktywność fizyczną” na wynik stresu był statystycznie istotny dla ludzi, u których przeprowadzono leczenie (p < 0,0001).

Poniżej porównano wyniki różnych poziomów ćwczeń z podziałem na przeprowadzone leczenie lub jego brak:

pwc <- stress %>% 
  group_by(treatment) %>%
  emmeans_test(score ~ exercise, p.adjust.method = "bonferroni") 
pwc
## # A tibble: 6 × 10
##   treatment term     .y.   group1   group2      df statistic           p   p.adj
## * <fct>     <chr>    <chr> <chr>    <chr>    <dbl>     <dbl>       <dbl>   <dbl>
## 1 yes       exercise score low      moderate    54    0.435      6.65e-1 1   e+0
## 2 yes       exercise score low      high        54    6.72       1.17e-8 3.50e-8
## 3 yes       exercise score moderate high        54    6.29       5.90e-8 1.77e-7
## 4 no        exercise score low      moderate    54    0.0753     9.40e-1 1   e+0
## 5 no        exercise score low      high        54    3.18       2.45e-3 7.34e-3
## 6 no        exercise score moderate high        54    3.10       3.04e-3 9.12e-3
## # ℹ 1 more variable: p.adj.signif <chr>

Występuje istotna różnica pomiędzy ludźmi, którzy uprawiali aktywność fizyczną i mieli lub nie mieli leczenia.

Podsumowanie

Poniżej zwizualizowano podsumowanie testu ANOVA dla danych dotyczących stresu.

pwc <- pwc %>% add_xy_position(x="treatment")
bxp + 
  stat_pvalue_manual(pwc) +
  labs(
    subtitle=get_test_label(results2,detailed=TRUE),
    caption=get_pwc_label(pwc)
  )

Przeprowadzono dwuczynnikową analizę wariancji (ANOVA), aby zbadać wpływ aktywności fizycznej i leczenia na wynik stresu. Przeprowadzono analizę reszt w celu sprawdzenia założeń dwuczynnikowej analizy wariancji. Odpowiedniość wartości odstających oceniono za pomocą wykresu pudełkowego, normalność oceniono przy użyciu testu normalności Shapiro-Wilka, a jednorodność wariancji oceniono za pomocą testu Levene’a. Stwierdzono istotną statystycznie interakcję między aktywnością fizyczną, leczeniem i wynikiem stresu. Przeprowadzono analizę wszystkich porównań parami między różnymi grupami poziomu wykształcenia, z podziałem na płeć. Stwierdzono istotną różnicę w wyniku podjęcia i niepodjęcia leczenia.