앞서 포스트에서 3개 이상의 그룹에서 평균의 차이를 알아보는 분산분석 (ANOVA)에 대해서 알아봤습니다. 하지만 기본적으로 이것은 세 그룹 간의 평균의 차이가 있다는 것만 알려주지 어느 것이 차이가 있는지를 알려주지는 않습니다. 세 그룹에서 구체적으로 어느 것이 차이가 있는지를 말해주지는 않습니다.
분산분석에서 구체적으로 어느 그룹이 차이가 있는지 검정하는 것이 사후 검정(host hoc analysis)이며 종종 논문에서 요구하는 경우가 있으므로 분산분석 기법을 사용해야 하는 연구자라면 어느 정도 내용을 알고 있을 필요가 있습니다. 우선 Tukey's HSD (honest significant difference) test 부터 알아보겠습니다.
Tukey' HSD는 단순히 Tukey's test라고 부르거나 Tukey–Kramer method라고 하는데, t 분포와 유사한 studentized range distribution (q)에 기반을 두고 각 그룹의 평균의 차이가 있는지 사후 검정을 시도합니다. 이를 위해서는 3가지 가정이 필요합니다.
The observations being tested are independent within and among the groups.
(각 그룹의 관측치가 서로 독립적)
The groups associated with each mean in the test are normally distributed.
(각 그룹의 분포가 정규분포를 따를 것)
There is equal within-group variance across the groups associated with each mean in the test (homogeneity of variance).
(그룹간의 분산이 동일할 것. 즉 등분산 가정)
연구 내용에 따라서 이런 경우는 많지 않을 수도 있습니다. 거의 동일한 특징을 가진 대조군이나 실험군 끼리의 비교나 혹은 연구 대상을 3그룹 이상 같은 수로 균일하게 나누는 경우 등이 해당될 것입니다. 숫자와 특징이 크게 차이나는 그룹간의 비교에서는 가정이 성립하지 않을 수 있습니다. 아무튼 앞서 예제를 이용해서 시행해 보겠습니다. 적용은 간단해서 TukeyHSD () 만 적용해주면 됩니다.
> set.seed(1234)
> A<-rnorm span="">-rnorm>
> set.seed(123)
> B<-rnorm span="">-rnorm>
> set.seed(12345)
> C<-rnorm span="">-rnorm>
>
> DFA<-data .frame="" class="" height="" span="">-data>
> colnames(DFA)<-c height="" lass="" span="">-c>
> DFB<-data .frame="" class="" height="" span="">-data>
> colnames(DFB)<-c height="" lass="" span="">-c>
> DFC<-data .frame="" class="" height="" span="">-data>
> colnames(DFC)<-c height="" lass="" span="">-c>
>
> DF2<-rbind span="">-rbind>
>
> out=aov(height~Class, data=DF2)
> summary(out)
Df Sum Sq Mean Sq F value Pr(>F)
Class 2 152.5 76.24 3.442 0.0364 *
Residuals 87 1927.1 22.15
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
>
> TukeyHSD(out)
Tukey multiple comparisons of means
95% family-wise confidence level
Fit: aov(formula = height ~ Class, data = DF2)
$Class
diff lwr upr p adj
B-A 0.2466061 -2.6510066 3.144219 0.9775584
C-A 2.8761599 -0.0214528 5.773773 0.0521622
C-B 2.6295538 -0.2680589 5.527167 0.0832488
앞서 세 반의 키를 비교하는 예제입니다. P 값은 0.0364에서 세 반의 키의 평균에는 차이가 없다는 가설이 기각되었습니다. TukeyHSD의 결과값 해석은
diff - 두 그룹의 차이
lwr - upr - 95% 신뢰구간 (CI)에서 하한값과 상한값.
p adj - 두 그룹간 차이의 P값
이를 표로 정리하면
A
|
B
|
C
| |
A
|
0.2466061 (95% CI -2.6510066 - 3.144219)
P = 0.9775584
|
2.8761599 (95% CI -0.0214528 - 5.773773)
P = 0.0521622
| |
B
|
2.6295538 (95% CI-0.2680589 5.527167)
P= 0.0832488
| ||
C
|
가 될 것입니다. 여기에서 당황스러운 부분이 분산 분석 결과와는 달리 사후 검정에서는 통계적으로 P<0 .05="" 50="" nbsp="" p="" span="">0>
> #n=50
> set.seed(1234)
> A<-rnorm span="">-rnorm>
> set.seed(123)
> B<-rnorm span="">-rnorm>
> set.seed(12345)
> C<-rnorm span="">-rnorm>
>
> DFA<-data .frame="" class="" height="" span="">-data>
> colnames(DFA)<-c height="" lass="" span="">-c>
> DFB<-data .frame="" class="" height="" span="">-data>
> colnames(DFB)<-c height="" lass="" span="">-c>
> DFC<-data .frame="" class="" height="" span="">-data>
> colnames(DFC)<-c height="" lass="" span="">-c>
>
> DF2<-rbind span="">-rbind>
>
> out=aov(height~Class, data=DF2)
> summary(out)
Df Sum Sq Mean Sq F value Pr(>F)
Class 2 447 223.56 9.436 0.000139 ***
Residuals 147 3483 23.69
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
>
> TukeyHSD(out)
Tukey multiple comparisons of means
95% family-wise confidence level
Fit: aov(formula = height ~ Class, data = DF2)
$Class
diff lwr upr p adj
B-A 1.437283 -0.8676389 3.742204 0.3051957
C-A 4.163096 1.8581747 6.468018 0.0001004
C-B 2.725814 0.4208919 5.030735 0.0158951
이제 C,A, 그리고 C,B 반이 차이가 있고 A,B 반에는 차이가 없다는 결과가 나왔습니다. 샘플수가 커질수록 작은 차이도 통계적 유의성을 가지는 것이지요. 다른 가정에 문제가 없고 ANOVA에서 차이가 있는데, 사후 검정에서는 차이가 없는 것으로 나온다면 통계적 유의성을 확인하기에 샘플수가 적은 것이 원인일 가능성이 큽니다.
여기서 알 수 있는 사실은 P 값의 해석에 주의해야 한다는 점. 그리고 보통 교과서에서 잘 설명하지 않지만, 실제로 통계 분석을 해보면 당황스러운 일이 자주 생긴다는 점입니다.
참고
댓글
댓글 쓰기