[A/B Test] 다중 검정 (Multiple Testing)
통계적 가설 검정에서 다중 검정 (Multiple Testing) 이란, 특정한 하나의 실험에서 여러번의 가설 검정을 동시에 수행하는 경우를 의미한다.
비록 여러번의 가설 검정을 수행하는 것 자체는 문제가 되지 않으나, 도출된 결과의 해석에 있어서 다중 검정은 1종 오류 (Type 1 error) 를 의도했던 유의수준보다 증가시킬 수 있다는 점에서 상당한 주의가 필요하다. 이러한 맥락에서, 해당 포스트에서는 다중 검정의 전체적인 개념을 소개한 다음, 이를 처리할 수 있는 통계적 방법론 몇가지를 살펴보도록 하겠다.
-
-
Bonferroni’s Method
-
Sidak’s Method
-
Holm’s Method
-
Hochberg’s Method
-
1. 다중 검정이 문제가 되는 이유
일반적인 통계적 가설 검정 문제를 생각해보자. 특정한 한 번의 가설 검정 (i.e. 단일 검정) 절차에서 우리가 잘못된 결론을 내릴 확률, 즉 1종 오류는 유의수준 $\alpha$ 이하로 보장된다는 사실은 자명하다.
한편, 이러한 가설 검정 절차를 총 $m$ 번 반복한다고 가정해보자. 이 때, i-번째 귀무가설을 $H_{0i}$ 라고 정의할 경우, 전체 $m$ 개의 가설 검정 중에서 적어도 한 개 이상의 가설에 대해서 잘못된 결론을 내릴 확률 (i.e. family-wise type I error) 은 역확률의 정의에 의해 다음과 같이 구해진다.
이를 바탕으로 가설 검정의 개수 ($m$) 에 따른 family-wise type I error의 함수를 그래프를 다음과 같이 그릴 수 있다.
여기서 주목해야 할 점은 바로 가설 검정의 개수 $m$에 대한 family-wise type I error의 함수가 “단조증가함수”라는 점이다. 즉, 수행되는 검정이 많아지면 많아질수록 전체적으로 1종 오류가 발생할 확률 역시 점점 커진다.
따라서 만약 특정한 하나의 실험에서 여러 지표에 대한 가설 검정을 10번 정도만 수행할 경우, 적어도 한개 이상의 가설에 대해 잘못된 결론을 내릴 확률이 거의 40%에 육박하게 된다. 이것이 바로 다중 검정의 치명적인 문제점이라고 할 수 있다. 그리고 이는 빈도주의 가설 검정 절차의 가장 핵심적인 특징이자 장점이라고 할 수 있는 1종 오류 통제의 측면에서 실험의 결과 자체에 대한 신뢰성를 떨어뜨릴 수 있기 때문에 각별한 주의가 필요하다.
이처럼 다중 검정의 문제점은 위와 같이 수학적으로 증명이 된 사실이지만, 직관적인 측면에서 다중 검정의 의미를 이해하는 것은 실험을 기획하고 결과를 해석하는 분석가의 입장에서 상당히 중요하기 때문에 구체적인 예시를 바탕으로 다시 한번 살펴보도록 하겠다.
몬티 홀 문제 (Monty Hall Problem)
몬티 홀 문제란 총 3개의 문 중에 하나를 선택한 다음, 그 문 뒤에 있는 경품을 가져가는 미국의 TV쇼에서 진행된 게임을 의미한다.
게임의 참가자에게는 문을 선택할 기회가 단 한번만 주어지며, 세개의 문 중 하나의 문 뒤에는 스포츠카가 있다.
몬티 홀 문제
사실 몬티 홀 문제는 베이즈 정리를 이용한 조건부 확률의 개념을 설명할 때 흔하게 쓰이는 예시인데, 해당 포스트에서는 이러한 몬티 홀 문제의 상황을 약간 응용해서 앞서 3개의 문이 있었던 것을 20개로 늘려보도록 하겠다.
위와 같이 총 20개의 문이 있고, 그 중에서 단 하나의 문 뒤에만 경품인 스포츠카가 있다고 가정한다. 이 상황에서 게임의 참가자가 스포츠카에 당첨될 확률은 $\frac{1}{20} = 0.05$, 즉 5% 이다.
이제 어떤 참가자 A가 있다고 해보자. 애석하게도, A는 앞서 그에게 주어진 기회에서 꽝인 문을 선택해서 경품을 받지 못했다. 하지만 그는 경품의 위치를 재배정한 다음에 본인에게 한번만 더 기회를 달라고 호소하고 있다. 그는 “어차피 당첨 확률은 5%로 동일하기 때문에 한번의 기회가 더 주어지더라도 별 상관없지 않냐” 라는 주장을 하고 있다.
이러한 그의 주장은 한눈에 봐도 엉터리임이 자명하다. 비록 경품의 위치가 재배정되었다고 하더라도, 만약 A에게 문을 선택할 기회가 두번 주어진다면 그 중에 한 번이라도 경품에 당첨될 확률이 올라갈 것이라는 것은 상식적으로 너무나도 당연하기 때문이다.
실제로 단 한번의 게임에서 A가 경품을 탈 확률은 5%이지만, 만약 문 선택의 기회가 두번 주어진다면 경품을 탈 확률은 더이상 5%가 아니며, 앞서 확인했듯이 이는 $1 - (1-0.05)^2$ 로 거의 두배인 9.75% 가 된다.
이제 다시 다중 검정의 내용으로 돌아가보도록 하자. 다중 검정에서 “한번의 가설 검정을 수행하는 것”은 위 예시에서 “문을 한번 선택하는 것”과 일맥상통한다. 그리고 위 예시에서 “경품이 포함된 문”은 통계적 가설 검정에서의 “1종 오류”에 대응된다.
애당초 A/B Test 를 진행하는 이유는 대부분의 경우 실험하고자 하는 기능에 대한 통계적 유의성을 주장하기 위함이다. 그리고 이를 위해 통계적 가설 검정을 활용하게 되는데, 당연하게도 우리는 언제나 유의수준 $\alpha$ (일반적으로 5%) 만큼의 확률로 “잘못된” 결과를 도출할 리스크를 안고 있다. 따라서 만약 앞선 예시처럼 문을 선택하는 과정을 여러번 반복하는 경우, 우연에 의해서 당첨이 될 확률이 증가해서 1종 오류에 빠지게 될 위험이 커지게 된다. 이는 결과적으로 실험의 안정성을 우리가 사전에 고려한 수준으로 보장할 수가 없게 되는 것이다.
사실 다중 검정은 통계학을 전공하지 않은 사람들에게는 매우 생소한 개념일 수 있어, 많은 경우 가설 검정을 여러번 하는 것이 문제가 된다는 사실 자체를 인지하지 못하는 상황이 발생할 수 있다. 이러한 측면에서 실제로 어떤 상황에서 다중 검정 문제가 발생하는지를 구체적인 예시를 통해서 살펴보도록 하겠다. 가령, 어떠한 실험에서 다음과 같이 지표들이 설정되었다고 가정하겠다.
- 1차 유효성 평가변수 (primary metric): “세션당 클릭수”
- 2차 유효성 평가변수 (secondary metric): “세션당 체류시간”, “세션당 페이지뷰”
가령, 유의 수준 0.05 아래에서 해당 실험의 결과로 1차 유효성 평가변수인 “세션당 클릭수”에 대해서 p-value가 0.14로 유의하지 않은 결과가 나왔다고 해보자. 반면, 2차 유효성 평가변수에 대해서도 추가적인 가설 검정을 진행해보니 이번에는 p-value가 각각 0.039, 0.042 로 유의하게 나왔다.
이러한 상황에서, “새로운 기능은 클릭수 개선에는 효과가 없으나, 체류시간과 페이지뷰에는 효과가 있다“라고 주장할 수 있을까? 아쉽지만, 앞서 살펴본 다중 검정의 문제점 때문에 위 결론은 통계적으로 타당하지 않다. 즉, 앞서 진행된 실험에서는 1차 유효성 평가변수에 대한 인과적 결론을 도출할 수 있을 뿐, 그 외의 지표에 대해서는 아무런 인과적인 결론을 얻을 수 없는 것이다.
이처럼 서비스들이 1차 유효성 평가 변수 이외의 지표에 대한 결과를 단순히 p-value만 보고 잘못 해석하지 않도록 결과 분석 과정에서 통계학 전공자의 역할이 중요하다. 실제로 이와 같은 이유로 Optimizely 등 빈도주의 방식을 활용하는 실험 플랫폼들에서는 p-value를 직접 노출시키지 않는 UI를 채택한 경우가 많다.
2. 다중 검정 문제의 해결법
그렇다면 다중검정으로 인해 발생하는 문제점을 어떻게 해결할 수 있을지에 대해 살펴보자.
우선 당연하게도, 가장 간단한 해결책은 다중검정을 하지 않는 방향으로 의사 결정 기준을 수립하는 것이다. 가령, 여러개의 평가 지표들을 1차 유효성 평가변수, 2차 유효성 평가변수, 보조 지표 등으로 우선순위를 명확하게 정의할 수 있는 경우, 최종적인 의사 결정을 1차 유효성 평가변수에 대한 결과만을 바탕으로 내리는 것이다. 이렇게 된다면 1차 유효성 평가변수 이외의 지표는 실험의 유의성 판단에 직접적으로 영향을 미치지 않는다는 점에서 유의 수준을 보정할 필요성이 없게 된다.
두 번째 방안은 평가 지표들을 하나로 통합한 OEC (Overall Evaluation Criterion) 를 바탕으로 실험의 결론을 내리는 것이다. 이 때, OEC는 실험의 유의성을 판단함에 있어 고려될 필요가 있는 여러가지 metric들의 정보량이 하나로 합쳐진 지표이며, 개별 metric들의 특징을 충분히 반영할 수 있어야 한다. 마찬가지로, 이와 같은 경우 확증적 가설 검정은 OEC 단 하나에 대해서만 수행된다는 점에서 다중검정의 문제가 발생하지 않는다.
마지막 방안은 다중검정으로 인해 발생하는 문제점을 통계적으로 보정하는 것이며, 이에 대해 자세히 살펴 볼 예정이다.
실제 실험을 진행하다보면 불가피하게 여러번의 가설 검정을 수행해야만 하는 상황이 발생할 수 있다. 예를 들어, “유저당 평균 매출액”이라는 1차 유효성 평가변수는 고객 유지(customer retention)의 측면에서 “세션당 전환율”이라는 보조 지표가 감소하지 않았을 경우에만 의미가 있을 수 있다. 이러한 상황에서는 보조 지표와 1차 유효성 평가변수에 대해서 순차적으로 두 번의 가설 검정을 수행하되, 단 전체적인 실험에서 1종 오류가 발생할 확률이 유의수준을 넘지 않도록 개별적인 검정에서의 유의 수준을 조정해주는 방안을 생각해볼 수 있다.
이러한 맥락에서 흔히 사용되는 몇가지 통계 방법론을 정리하도록 하겠다. 후술할 모든 방법론은 closed-testing procedure 라고 불리는 통계학의 분야에서 type I error를 유의수준 이하로 컨트롤한다는 것이 이론적으로 증명된 내용들이다.
- Bonferroni’s Method
- Sidak’s Method
- Holm’s Method
- Hochberg’s Method
물론 해당 방법들은 family-wise type I error의 증가라는 다중 검정의 치명적인 문제점을 해결해주지만, 이에 대한 대가로 실험의 검정력을 낮출 수 있다는 점에서 주의가 필요하다. 그렇기 때문에 정말 필요한 상황이 아니라면 다중 검정은 최대한 지양하는 것이 최선이라고 생각한다.
Bonferroni’s Method
다중검정의 문제를 해결하는 가장 기초적이고 기본이 되는 방법이다.
Bonferroni 방법에서는 family-wise type 1 error를 5% 이하로 통제하기 위해서 수행하려고 하는 가설 검정의 횟수가 총 $k$번인 경우, 각각의 개별적인 가설 검정을 $0.05 / k$ 의 보정된 유의수준 아래에서 검정하게 된다. 예를 들어, 유의수준 0.05의 실험에서 가설 검정 횟수에 따른 보정된 유의 수준은 다음과 같다.
따라서 만약 총 5번의 가설 검정을 수행하고자 하는 경우, 개별적인 가설 검정에서 도출된 p-value를 0.05가 아니라 0.01과 비교해서 유의성을 판단하는 것이다.
Bonferroni 방법의 가장 큰 장점은 개념 자체가 매우 간단하며, 어떠한 다중검정 문제에 대해서도 family-wise type 1 error를 5% (유의수준) 이하로 통제한다는 점이다. 여기서 “어떠한” 이라는 말은 데이터의 분포와 각 개별적인 검정통계량들의 상관관계와 무관하게 적용할 수 있다는 의미이다. 이처럼 특별한 가정사항이 없다는 측면에서 Bonferroni 방법은 굉장히 strong 한 방법이라고 할 수 있다.
증명은 Bonferroni 부등식을 바탕으로 간단하게 할 수 있는데, 해당 부등식의 우변을 유의 수준 $\alpha$로 고정시킬 경우, 좌변인 family-wise type I error는 항상 유의수준보다 작거나 같게 된다.
한편, Bonferroni 방법에는 단점 역시 존재한다. 가장 큰 단점은 어떠한 경우에도 family-wise type 1 error를 유의 수준 이하로 통제하려고 하다보니 방법론 자체가 불필요할 정도로 상당히 보수적이라는 점이다. 즉, 다른 방법들에 비해 2종 오류 (type II error) 가 크며, 이는 결과적으로 실험의 검정력을 낮추게 된다.
이러한 Bonferroni 방법의 단점을 극복하기 위해서 통계학자들은 많은 방법론들을 고안해냈는데, 공통적인 아이디어는 family-wise type I error를 유의수준 이하로 통제하면서, 조금이라도 높은 검정력을 갖도록 만드는 것 이라고 할 수 있다.
Sidak’s Method
Sidak 방법은 Bonferroni 방법을 약간 수정한 것인데, VWO에서 해당 방법을 사용하고 있다는 언급이 있어서 간단하게 살펴보도록 하겠다.
Bonferroni 방법과 Sidak 방법에서 총 $k$개의 가설에 대해서 유의 수준을 보정하는 공식은 다음과 같다:
사실 두 방법의 차이는 그렇게 크지 않은데, 각 방법에서 가설검정의 개수 $k$에 대한 보정된 유의수준 $\alpha^*$의 그래프는 다음과 같다.
k에 따른 보정된 유의수준
Sidak 방법에서의 유의수준이 아주 근소하게 높은 것을 확인할 수 있다.
Holm’s Method
Holm 방법 (또는 Holm-Bonferroni 방법)은 각 평가 변수 사이에 상관관계가 존재할 때 유용하며, 일반적으로 Bonferroni 방법보다 검정력이 높다는 것이 알려져 있다.
Holm 방법을 적용하는 절차는 다음과 같다.
- 총 $m$개의 평가변수들에 대해 개별적으로 가설 검정을 실시한 다음, p-value를 계산
- 얻어진 $m$개의 p-value를 오름차순으로 정렬
- 정렬된 p-value의 순서에 대응되어 개별적인 가설 검정들의 순서가 정해짐 → $\quad p_{(1)}, p_{(2)}, … , p_{(m)} \Leftrightarrow H_0(1), H_0(2), … , H_0(m)$
- $p_{(1)}$부터 순서대로 다음의 과정을 반복
이렇게 알고리즘 수준으로만 보면 무슨 말인지가 잘 와닿지 않을 수 있는데, 사실 아이디어는 정말 간단하다. 구체적인 예시를 통해서 살펴보도록 하겠다. 편의상 총 4개의 귀무가설 $A, B, C, D$ 가 있고, 각각의 p-value가 $0.012, 0.026, 0.016, 0.055$ 라고 가정해보자.
<Step 1 ~ 3>
- 위 상황에서 Holm 방법을 적용하기 위해서는 일단 p-value를 오름차순으로 정렬해야 한다. 이는 $0.012, 0.016, 0.026, 0.055$ 가 되며, 대응되는 귀무가설의 순서는 $A, C, B, D$ 이다.
<Step 4>
- ($i = 1$) 가장 낮은 (유의한) p-value인 0.012 는 0.0125 (= 0.05 / 4) 보다 작기 때문에, 첫번째 귀무가설인 $A$는 기각된다.
- ($i = 2$) 그 다음으로 낮은 p-value인 0.016 역시 0.0167 (= 0.05 / 3) 보다 작기 때문에, 두번째 귀무가설인 $C$도 기각된다.
- ($i = 3$) 그 다음으로 낮은 p-value인 0.026은 0.025 (= 0.05 / 2) 보다 크기 때문에, 세번째와 네번째 귀무가설인 $B, D$는 기각되지 않고 가설 검정은 여기서 중단된다.
따라서 결론적으로, 귀무 가설 $A$와 $C$는 유의한 반면, $B, D$는 유의하지 않다는 결론에 이르게 된다.
한편, Bonferroni 방법을 사용해서 위 예시에 대한 결과를 도출하면 어떻게 되는지 살펴보자. Bonferroni 방법을 사용할 경우, 모든 귀무가설 $A, B, C, D$ 로부터 얻어진 p-value는 보정된 유의수준 0.0125 (= 0.05 / 4) 과 비교된다. 이 경우 0.0125보다 작은 p-value는 0.012로 $A$ 밖에 없기 때문에, 결론적으로 $A$만 유의하며 나머지 $B, C, D$는 유의하지 않다는 결론에 이르게 된다.
Holm vs Bonferroni
따라서 결과적으로 Holm 방법이 Bonferroni 방법에 비해 더 높은 검정력을 갖는다는 것을 다시 한번 확인할 수 있다.
이는 사실 당연한 결과라고 할 수 있는데, Holm 방법의 첫 번째 단계 사용되는 유의수준은 $\frac{\alpha}{m}$ 으로서 Bonferroni 방법의 보정된 유의수준과 정확히 일치한다. 하지만 다음 단계부터는 Holm 방법의 보정된 유의수준이 $\frac{\alpha}{m}$ 보다 점점 증가하는 것을 확인할 수 있다. 따라서 결론적으로 Holm 방법에서는 후순위의 가설 검정들에서 더욱 큰 유의 수준을 사용할 수 있게 된다. 이를 그래프로 나타내면 다음과 같다.
Hochberg’s Method
앞서 살펴본 Holm 방법의 가장 큰 단점은, 가설들을 순서대로 검정하는 과정에서 단 한번이라도 유의하지 않은 결과가 나오는 경우 그 이후의 검정은 허락되지 않는다는 점이다. 통계학적인 표현으로, 이는 “사용되지 않은 유의수준이 이후 유효성 평가변수군으로 전달되지 않는다” 라고 표현된다.
이러한 점을 보완하기 위해 Hochberg 방법 (또는 Benjamini-Hochberg 방법) 에서는 Holm 방법과 정반대의 순서로 가설 검정이 진행된다. 구체적으로 Hochberg 방법을 적용하는 절차는 다음과 같다.
- 총 $m$개의 평가변수들에 대해 개별적으로 가설 검정을 실시한 다음, p-value를 계산
- 얻어진 $m$개의 p-value를 오름차순으로 정렬 → $\quad p_{(1)}, p_{(2)}, \dots , p_{(m)}$
- 정렬된 p-value의 역순으로 개별적인 가설 검정들의 순서가 정해짐 → $\quad p_{(m)}, p_{(m-1)}, \dots , p_{(1)} \Leftrightarrow H_0(m), H_0(m-1), … , H_0(1)$
- $p_{(m)}$ 부터 순서대로 다음의 과정을 반복:
이는 앞서 살펴본 Holm 방법을 정확히 반대로 수행한 것이다.
앞서 Holm 방법에서와 동일한 예시를 바탕으로 Hochberg 방법을 적용했을 때의 가설 검정 결과를 살펴보도록 하겠다. 즉, 총 4개의 귀무가설 $A, B, C, D$ 가 있고, 각각의 p-value는 0.012, 0.026, 0.016, 0.055 이다.
<Step 1 ~ 3>
- Hochberg 방법에서는 p-value의 역순으로 가설 검정이 진행된다. 따라서 순서대로 정렬하면 0.055, 0.026, 0.016, 0.012 가 되며, 대응되는 귀무가설의 순서는 $D, B, C, A$ 이다.
<Step 4>
- ($i = 4$) 가장 높은 p-value인 0.055 는 0.05 (= 0.05 / 1) 보다 크기 때문에, 첫번째 귀무가설인 $D$는 채택된다.
- ($i = 3$) 그 다음으로 높은 p-value인 0.026 역시 0.025 (= 0.05 / 2) 보다 크기 때문에, 두번째 귀무가설인 $B$ 역시 채택된다.
- ($i = 2$) 그 다음으로 높은 p-value인 0.016은 0.0167 (= 0.05 / 3) 보다 작기 때문에, 세번째와 네번째 귀무가설인 $C, A$ 는 기각되고 가설 검정은 여기서 중단된다.
결론적으로, Hochberg 방법을 적용한 결과 $A$와 $C$는 유의하다고 판단된 반면, $B, D$는 유의하지 않다는 결론에 이르게 된다. 이는 앞서 Holm 방법을 사용했을 때의 결과와 동일하다.
세 방법의 결과 비교
비록 위 예시에서는 Holm 방법과 Hochberg 방법이 검정 결과가 완벽히 동일했으나, 일반적으로는 Hochberg 방법이 Holm 방법에 비해 검정력이 더 높다는 것이 알려져 있다.
이번에는 다른 예시를 통해 이를 확인해보자. 가령, 두개의 귀무가설 A와 B의 p-value가 각각 0.026, 0.045 일 때, 만약 Hochberg 방법을 적용할 경우, 가장 큰 p-value인 0.045가 0.05 (= 0.05 / 1) 보다 작으므로 귀무가설 A, B 모두가 기각된다. 이와는 반대로, Holm 방법을 적용하게 되면 가장 작은 p-value인 0.026이 0.025(= 0.05 / 2)에 비해 더 크므로, 귀무가설 A와 B 모두가 채택된다.
한편, Bonferroni 방법과 Holm 방법에서는 특별한 가정 사항이 없었던 반면, Hochberg 방법은 특정한 조건이 만족되는 경우에 한해서만 family-wise type 1 error가 유의수준 이하로 통제되는 것이 보장된다. 구체적으로, 해당 조건은 평가 변수 간에 양의 상관관계가 존재해야만 한다는 점이다. A/B Test의 맥락에서 이는 실험하고자 하는 기능이 실제로 효과가 있어야한다는 점과 맞닿아 있는데, A/B Test의 목적을 고려할 때 크게 무리는 없는 가정 사항이라고 할 수 있다. 해당 조건이 만족되지 않는 경우에 사용할 수 있는 Benjamini-Yekutieli method 라는 방법이 있긴 하지만 크게 중요하지는 않으므로 생략하도록 하겠다.
Reference
- https://www.optimizely.com/insights/blog/tricked-by-statistics/
- https://vwo.com/testing/multivariate-testing/
- https://experienceleague.adobe.com/docs/target/using/activities/abtest/common-ab-testing-pitfalls.html?lang=ko
- https://www.microsoft.com/en-us/research/group/experimentation-platform-exp/articles/alerting-in-microsofts-experimentation-platform-exp/