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")
bxpDo 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.