Tạo dữ liệu phân tích

A = c(8, 9, 11, 4, 7, 8, 5)
B = c(7, 17, 10, 14, 12, 24, 11, 22)
C = c(28, 21, 26, 11, 24, 19)
D = c(26, 16, 13, 12, 9, 10, 11, 17, 15)
x = c(A, B, C, D)
group = c(rep("A", 7), rep("B", 8), rep("C", 6),rep("D", 9))
data = data.frame(x, group)
data
##     x group
## 1   8     A
## 2   9     A
## 3  11     A
## 4   4     A
## 5   7     A
## 6   8     A
## 7   5     A
## 8   7     B
## 9  17     B
## 10 10     B
## 11 14     B
## 12 12     B
## 13 24     B
## 14 11     B
## 15 22     B
## 16 28     C
## 17 21     C
## 18 26     C
## 19 11     C
## 20 24     C
## 21 19     C
## 22 26     D
## 23 16     D
## 24 13     D
## 25 12     D
## 26  9     D
## 27 10     D
## 28 11     D
## 29 17     D
## 30 15     D

ANOVA- Phân tích sự khác biệt giữa biến X với 4 nhóm A,B,C,D

Giả thuyết H0: Không có sự giữa các nhóm

av = aov(x ~ group)
summary(av)
##             Df Sum Sq Mean Sq F value   Pr(>F)    
## group        3  642.3  214.09   8.197 0.000528 ***
## Residuals   26  679.1   26.12                     
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

Pr=0.000258<0.05: Bác bỏ giả thuyết”Không có sự giữa các nhóm”. Tức là giữa các nhóm có sụ khác biệt

Phân tích hậu định (posthoc analysis)

Chỉ ra các nhóm nào có sự khác biệt - Kiểm định nhiều giả thuyết cùng lúc

Sử dụng phương pháp Tukey’s HSD

av = aov(x ~ group)
TukeyHSD(av)
##   Tukey multiple comparisons of means
##     95% family-wise confidence level
## 
## Fit: aov(formula = x ~ group)
## 
## $group
##           diff          lwr        upr     p adj
## B-A  7.1964286  -0.05969765 14.4525548 0.0525014
## C-A 14.0714286   6.27132726 21.8715299 0.0002134
## D-A  6.9047619  -0.16073856 13.9702624 0.0571911
## C-B  6.8750000  -0.69675602 14.4467560 0.0850381
## D-B -0.2916667  -7.10424368  6.5209103 0.9994049
## D-C -7.1666667 -14.55594392  0.2226106 0.0597131

Phân tich: C-A p=0.0002134<0.05. Chỉ có nhóm C-A có sự khác biệt

Vẽ hình

plot(TukeyHSD(av), las=2 , col="brown")

## Cách vẽ đồ thị

k = 1:100
alpha0.05 = 1-(1-0.05)^k
alpha0.01 = 1-(1-0.01)^k
alpha0.001 = 1-(1-0.001)^k
k = c(1:100, 1:100, 1:100)
alpha = c(alpha0.05, alpha0.01, alpha0.001)
P.value = c(rep(0.05, 100), rep(0.01, 100), rep(0.001, 100))
dat = data.frame(alpha, k, P.value)
library(ggplot2)
p = ggplot(data=dat, aes(x=k, y=alpha, col=factor(P.value))) + geom_line()
p + scale_y_continuous(breaks=seq(0, 1, 0.05)) +
scale_x_continuous(breaks=seq(0, 100, 10)) + theme(legend.position="top") +
labs(x="Số lần kiểm định giả thuyết", y="Xác suất phát hiện ít nhất 1 kết
quả significant")