다중검정은 multiple test, simultaneous tes, joint test 등으로 불리우는데, 보통 ANOVA 이후 집단 간의 세부적인 차이를 알아보기 위한 사후 검정으로 활용된다. 이번에 다중 검정 관련 논문을 읽을 일이 있어서 기본 개념에 대해 정리를 해보려고 한다.
Motivation
먼저 ANOVA부터 시작해서 왜 다중 검정이 필요한지, 다중 검정을 수행할 때 발생하는 문제점에 대해 정리해본다.
One-way ANOVA
세 집단에 약물을 복용했을 때 치료 효과가 있는지 ANOVA를 실시한다고 해보자. ANOVA를 수식으로 표현하면 다음과 같다.
다음과 같은 가설 설정에 대해서 등분산 가정 하에 ANOVA를 수행했을 때 항상 두 가지 결론이 도출될 수 있다.
귀무가설을 기각하지 못할 경우
즉 세 집단 간의 평균 차이가 없다(혹은 약물의 치료 효과가 없다)
귀무가설을 기각할 경우
즉, 세 집단 간의 평균 차이가 존재한다.
여기서 귀무가설을 기각할 경우를 주목해보자. 귀무가설을 기각할 경우 내릴 수 있는 결론은 “세 집단 간의 평균 차이가 존재한다”이다. 다시 풀어서 써보면 “세 집단 간 중에 적어도 하나는 평균 차이가 존재한다”이며, 이는 어느 집단 간에 차이가 나는지 모른다는 의미와 같다. 즉, 다음과 같은 경우의 수가 도출될 수 있다.
\(m\) 이 증가할 때, 즉 가설의 개수가 많아질 때 제 1종 오류가 발생할 upper bound는 거의 1에 가깝게 되며, 이는 거의 항상 error가 발생한다고 할 수 있다. 따라서 이러한 문제를 해결하기 위해서 제 1종 오류에 대한 일종의 보정을 수행해야 하는데 대표적인 방법이 Bonferroni correction이다. Bonferroni correction을 설명하기 이전에 광의적인 개념인 FWER에 대해 집고 넘어간다.
Family-wise error rate(FWER)
\(m\) 개의 가설검정(\(H^1, H^2,\cdots, H^m\))을 수행한다고 가정했을 때 결과를 table로 정리해보면 다음과 같다.
Result of m multiple hypothesis
true state \ decision
\[
\text{accept }H_0
\]
\[
\text{reject }H_0
\]
\[
H_0: \text{true}
\]
\[
U\text{(unknown)}
\]
\[
V\text{(unknown)}
\]
\[
m_0\text{(unknown)}
\]
\[
H_1: \text{true}
\]
\[
T\text{(unknown)}
\]
\[
S\text{(unknown)}
\]
\[
m_1\text{(unknown)}
\]
\[
\text{Total}
\]
\[
m-R\text{(known)}
\]
\[
R\text{(known)}
\]
\[
m\text{(known)}
\]
FWER의 의미는 the probability of at least one type 1 error, 즉 1번이라도 1종 오류가 발생할 확률을 의미한다. 이를 수식으로 표현하면 \(P(V \ge1)\) 이다. FWER을 통제한다는 의미는 \(P(V \ge1) \le \alpha\) , 즉 최소 1번이라도 제 1종 오류를 범할 확률을 \(\alpha\) 이하로 조절한다는 의미이고, 이를 위해서는 개별 검정 결과에 대한 제 1종 오류를 범할 확률을 조절해야한다.
Bonferroni Correction
FWER을 조절하는 대표적인 방법이 본페로니 보정방법이다. FWER은 Bonferroni inequality에 의해 다음과 같은 upper bound를 얻을 수 있다.
Bonferroni Correction은 위의 upper bound를 이용해서 개별 가설에 대한 \(\alpha^*\) 값을 전체 \(\alpha\) 를 개별 가설의 개수 \(m\)으로 나눠준다.
\[\alpha^* = \frac{\alpha}{m}\]
Bonferroni Correction은 \(m\) 이 작을 때, 비교적 잘 작동한다. \(m\) 이 클 경우 Bonferroni Correction은 잘 작동하지 않는다. 수식을 보면 직관적으로 알 수 있는데 \(m\)이 커질 경우 \(\alpha^*\) 값이 매우 작아지기 때문에 개별 가설에 대해서 거의 기각하지 못하는 문제가 발생한다. 즉 Bonferroni Correction은 매우 보수적인 방법이라고 할 수 있다.
Sidak Correction
시닥 보정 방법은 본페로니 보정 방법에서 조금 개선된 버전이다. 하지만 본페로니 보정의 문제점을 그대로 가지고 있다.