차이는 유의한가 — paired bootstrap, 순열검정, McNemar

Introduction

#15에서는 한 모델의 점수에 오차 막대를 붙이는 법을 다뤘다. 문항 100개 중 75개를 맞혔다면 그 75%라는 숫자에 신뢰구간을 씌워, “이 숫자가 얼마나 흔들릴 수 있는가”를 답했다.

그런데 실무에서 정말 자주 마주치는 질문은 다른 형태다. “모델 A는 75%, 모델 B는 71%다. A가 더 낫다고 말해도 되나?” 이 질문은 한 점수의 불확실성이 아니라 두 점수의 차이의 불확실성을 묻는다. 그리고 이 질문에 답하는 방식이 이 글의 주제다.

핵심 메시지는 하나다. 두 모델은 같은 문항을 푼다. 이 사실을 무시하면 검정력을 버린다.

무슨 뜻인지 구체적으로 보자. 모델 A와 B를 같은 200개 문항에 돌리면, 어떤 문항은 둘 다 쉽게 맞히고 어떤 문항은 둘 다 틀린다. 문항 난이도라는 공통 요인이 두 모델의 점수에 동시에 영향을 준다는 뜻이다. 그래서 A의 점수와 B의 점수는 독립이 아니라 상관되어 있다. 이 상관을 무시하고 “A는 A대로, B는 B대로 뽑은 독립적인 두 표본”인 것처럼 검정하면(독립 2표본 검정), 차이의 분산을 실제보다 크게 추정하게 된다. 분산을 과대평가하면 진짜로 존재하는 차이도 “유의하지 않다”고 결론 내리기 쉽다. 있는 신호를 놓치는 것이다.

반대로 짝지은(paired) 방법 — 같은 문항 쌍 안에서 두 모델을 비교하는 방법 — 을 쓰면 이 공통 요인이 상쇄되어 차이의 분산이 줄어든다. 정확히 같은 데이터, 정확히 같은 4%p 차이를 놓고도, 짝지음을 썼는지 안 썼는지에 따라 “유의하다”와 “유의하지 않다”라는 정반대의 결론이 나올 수 있다. 이 글의 Experiments 절에서 그 반례를 숫자로 직접 만들어 보인다.

이 글이 다룰 것은 네 가지다.

  1. Background: 짝지음이 왜 분산을 줄이는지 수식으로 유도한다.
  2. paired bootstrap resampling (Koehn, 2004) — 재표본으로 차이의 표집분포를 통째로 만드는 법.
  3. 순열/무작위화 검정 (Yeh, 2000) — 귀무가설이 참일 때의 분포를 직접 구성하는 법.
  4. McNemar 검정 (McNemar, 1947; Dietterich, 1998) — 짝지은 이진 결과에 특화된, 가장 단순하고 강력한 선택.
  5. Dror et al. (2018)의 검정 선택 결정 트리 — “지금 내 상황에서는 뭘 써야 하나”에 대한 실무 지침.

그리고 마지막으로 쓰면 안 되는 것들을 정리한다. 독립 2표본 t-검정, 정규성이 의심스러운 지표에 t-검정을 강행하는 것, 그리고 여러 벤치마크에 각각 검정을 돌리고 유의한 것 하나만 보고하는 것. 뒤의 두 문제는 #17 검정력·다중비교에서 더 깊이 다룬다.

Background — 짝지음이 왜 이득인가

차이의 분산을 분해한다

모델 A의 정확도 추정치를 \(\hat{p}_A\), 모델 B의 정확도 추정치를 \(\hat{p}_B\)라 하자. 우리가 알고 싶은 것은 차이 \(\hat{p}_A - \hat{p}_B\)의 분산이다. 통계학의 기본 공식(분산의 합 공식)을 그대로 적용하면 다음이 나온다.

\[\text{Var}(\hat{p}_A - \hat{p}_B) = \text{Var}(\hat{p}_A) + \text{Var}(\hat{p}_B) - 2\,\text{Cov}(\hat{p}_A, \hat{p}_B)\]

기호를 하나씩 풀어보자.

  • \(\text{Var}(\hat{p}_A)\), \(\text{Var}(\hat{p}_B)\): 각 모델 점수 자체의 불확실성. #15에서 다룬, 표본 하나짜리 신뢰구간의 재료다.
  • \(\text{Cov}(\hat{p}_A, \hat{p}_B)\): 두 점수가 같은 방향으로 함께 움직이는 정도. 이 항이 이 글의 주인공이다.
  • 마지막 항의 부호가 마이너스라는 점이 핵심이다. \(\text{Cov}\)가 커질수록(공분산이 양수로 크게 나올수록) 전체 분산은 작아진다.

왜 공분산이 클까? 두 모델이 같은 문항 집합을 풀기 때문이다. 어떤 문항은 두 모델 모두에게 쉽고, 어떤 문항은 두 모델 모두에게 어렵다. 문항 난이도라는 하나의 공통 원인이 A의 정답 여부와 B의 정답 여부에 동시에 영향을 준다. 그 결과 A가 맞힌 문항에서는 B도 맞힐 가능성이 높고, A가 틀린 문항에서는 B도 틀릴 가능성이 높다 — 이것이 양의 공분산이다.

비유하자면 이렇다. 같은 반 학생 두 명이 같은 시험을 쳤을 때 점수 차이를 비교하는 것과, 서로 다른 학교의 두 학급 평균 점수를 비교하는 것은 다른 문제다. 같은 시험을 쳤다면 “이번 시험이 유독 어려웠다/쉬웠다”는 시험 자체의 변동은 두 학생 모두에게 똑같이 걸리므로, 그 변동은 차이를 낼 때 서로 상쇄된다. 반면 다른 학급끼리 비교하면 “그 학급이 친 시험이 어쩌다 쉬웠다”는 변동까지 차이에 그대로 얹힌다. 짝지음은 시험 자체의 변동을 제거하는 장치다.

수치로 감을 잡는다 — 상관 0.7이면 SE가 얼마나 줄어드나

두 모델의 점수 분산이 같다고 가정하자(\(\sigma^2\)로 표기). 상관계수를 \(r\)이라 하면 \(\text{Cov}(\hat{p}_A, \hat{p}_B) = r\sigma^2\)이므로, 위 식은

\[\text{Var}(\hat{p}_A - \hat{p}_B) = 2\sigma^2(1-r)\]

로 정리된다. 만약 이 상관을 무시하고 독립(\(r=0\))이라고 잘못 가정하면 분산을 \(2\sigma^2\)으로 계산하게 된다. 두 표준오차(SE)의 비율은

\[\frac{\text{SE}_{\text{paired}}}{\text{SE}_{\text{independent}}} = \sqrt{1-r}\]

이다. 상관이 커질수록 이 비율은 0에 가까워진다 — 짝지은 SE가 독립 가정 SE보다 훨씬 작아진다는 뜻이다. 몇 가지 \(r\) 값에서 직접 계산해보자.

상관 \(r\) \(\text{SE}_{\text{paired}} / \text{SE}_{\text{independent}}\) 같은 정밀도를 독립 설계로 얻으려면 표본을 몇 배 늘려야 하나
0.0 1.00 1.0배 (짝지음의 이득 없음)
0.3 0.84 1.4배
0.5 0.71 2.0배
0.7 0.55 3.3배
0.9 0.32 10.0배

오른쪽 열은 \(n' = n / (1-r)\)에서 나온다. 분산이 표본 크기에 반비례한다고 보면, 짝지은 설계가 \(n\)개 문항으로 얻는 정밀도를 독립(비짝지음) 설계로 얻으려면 \(1/(1-r)\)배만큼 더 많은 문항이 필요하다. 상관이 0.7이면 문항을 3.3배 더 모아야 같은 정밀도가 나온다는 뜻이다. 이게 “짝지음을 쓰지 않으면 검정력을 버린다”는 말의 정량적인 의미다 — 공짜로 얻을 수 있는 정밀도를, 잘못된 검정 선택 하나로 3배어치의 데이터 수집 노력과 맞바꾸는 셈이다.

이 계산은 나중에 이 글의 Method 절에서 다룰 Yeh (2000)의 실측 결과와도 정확히 같은 형태로 다시 나온다.

귀무가설을 정확히 세운다

두 시스템 \(A\), \(B\)를 같은 데이터셋 \(X\)에 대해 평가 지표 \(M\)으로 비교한다고 하자. 차이를

\[\delta(X) = M(A, X) - M(B, X)\]

로 정의한다(Dror et al., 2018의 표기를 그대로 쓴다). 이제 가설은 두 가지 형태로 세울 수 있다.

  • 단측(one-sided): 새 방법 \(A\)가 기존 방법 \(B\)보다 낫다는 구체적 방향을 미리 주장하는 경우. \(H_0: \delta(X) \le 0\) vs \(H_1: \delta(X) > 0\).
  • 양측(two-sided): 방향을 미리 정하지 않고 그냥 “다른가”만 묻는 경우. \(H_0: \delta(X) = 0\) vs \(H_1: \delta(X) \neq 0\).

실무에서 자주 저지르는 실수는, 결과를 본 뒤에 유리한 방향으로 단측 검정을 골라 쓰는 것이다. A가 이겼다는 걸 보고 나서야 “\(A > B\)“를 가설로 세우면, 실제 유의수준은 명목상의 두 배로 관대해진다. 가설의 방향은 데이터를 보기 전에 정해야 한다. 이 글에서는 원칙적으로 양측검정을 기본으로 삼고, 단측이 정당화되는 경우(예: 이미 강한 사전 근거가 있어 방향이 확정된 경우)만 명시한다.

Method

1. Paired bootstrap resampling

Statistical Significance Tests for Machine Translation Evaluation (Koehn, MIT CSAIL, EMNLP 2004)

정의. paired bootstrap resampling은 두 시스템의 점수 차이가 통계적으로 유의한지를, 원본 테스트셋에서 반복적으로 복원추출한 가상 테스트셋들 위에서 직접 관측함으로써 추정하는 방법이다. 분석적으로 신뢰구간을 구하기 어려운 지표(BLEU처럼 문장 단위 점수의 단순 평균이 아닌 지표)에도 그대로 적용된다는 점이 강점이다.

절차.

  1. 문항(또는 문서·문장) \(n\)개로 이루어진 원본 테스트셋을 준비한다.
  2. 이 \(n\)개에서 복원추출로 \(n\)개를 다시 뽑아 가상 테스트셋을 만든다. 같은 문항이 여러 번 뽑힐 수도, 전혀 뽑히지 않을 수도 있다.
  3. 이 하나의 가상 테스트셋 위에서 시스템 \(A\)와 시스템 \(B\)의 점수를 각각 계산하고, 차이 \(d = M(A) - M(B)\)를 기록한다. 두 시스템이 같은 재표본을 공유한다는 것이 “paired”의 의미다 — 그래야 재표본이 우연히 쉬운 쪽으로 쏠려도 그 효과가 두 시스템 모두에게 걸려 차이에서 상쇄된다.
  4. 2~3단계를 \(B\)번(보통 1,000~10,000회) 반복해 차이 \(d\)의 경험적 분포를 만든다.
  5. 이 분포의 2.5백분위수와 97.5백분위수를 잘라내면 95% 신뢰구간이 된다. 또는 \(d \le 0\)인 재표본의 비율을 세면 그것이 곧 (근사적인) 단측 p값이다.

여기서 \(B\)(반복 횟수)를 얼마로 잡을지는 계산 비용과 p값의 해상도 사이의 트레이드오프다. \(B\)번 중 관측된 차이만큼 극단적인 경우가 \(n_c\)번이라면, p값의 최소 단위는 대략 \(1/(B+1)\)이다. \(B=1{,}000\)이면 \(p<0.001\) 같은 극단적 유의성은 애초에 측정할 수 없다는 뜻이다. 미세한 유의성 차이를 다뤄야 하면 \(B\)를 10,000 이상으로 올린다.

직관. 우리가 관측한 300문항 테스트셋은 “가능한 모든 문항”이라는 무한 모집단에서 뽑은 하나의 표본일 뿐이다. 원칙대로라면 이 모집단에서 새 300문항 표본을 반복해서 뽑아 분산을 재야 한다. 하지만 그럴 수 없으니(테스트셋이 유한하다), 대신 가진 300문항 자체를 모집단처럼 여기고 거기서 복원추출한다. 이 “가진 데이터가 모집단을 대신한다”는 부트스트랩의 근본 가정이 여기서도 그대로 쓰인다.

실측 사례. Koehn(2004)은 Europarl 코퍼스로 만든 11개 언어쌍 번역 시스템을 비교했다. Spanish-English와 Danish-English 시스템의 BLEU 차이는 30,000문장 전체 기준 2.0%였다. 300문장짜리 표본 100개에 paired bootstrap을 적용한 결과, 100개 중 65개 표본에서 95% 유의성으로 “Spanish가 낫다”는 결론이 나왔다. 반면 Portuguese와 Danish의 진짜 차이는 0.5%로 훨씬 작았는데, 이때는 100개 중 12개만 유의했고, 심지어 1개는 방향이 틀렸다(Danish가 낫다고 잘못 결론). 저자는 이 방법을 검증하기 위해 “95% 유의하다”고 판단된 결론들이 실제로 몇 % 맞는지도 셌는데, 90~94.9% 구간에서 유의하다고 판단된 결론들의 실제 정확도는 95%였다 — 방법이 보수적인 방향으로 잘 보정되어 있다는 뜻이다.

이 실험을 표본 크기와 진짜 차이 크기를 함께 바꿔가며 반복하면, paired bootstrap이 왜 “표본이 작아도 쓸 수 있는” 방법인지와 동시에 “표본이 작으면 작은 차이는 못 잡는다”는 당연한 한계도 같이 보인다.

비교 진짜 BLEU 차이 100문장 300문장 600문장 3,000문장
Portuguese > Danish 0.5%p 7%(오답 2%) 12%(오답 1%) 10% 30%
Spanish > Danish 2.0%p 31% 65% 96% 100%
Danish > Greek 1.6%p 24% 48% 74% 100%
Greek > Finnish 5.1%p 97% 100% 100% 100%

(각 셀은 그 표본 크기의 여러 표본 중 95% 통계적 유의성으로 “옳은 방향”의 결론에 도달한 비율. “오답”은 반대 방향을 유의하다고 잘못 결론 내린 비율.) 진짜 차이가 0.5%p에 불과한 Portuguese-Danish 비교는 표본을 3,000문장으로 늘려도 겨우 30%만 유의성을 잡아낸다. 반면 진짜 차이가 5.1%p인 Greek-Finnish 비교는 100문장만으로도 97%가 유의하다고 정확히 판단한다. 표본을 늘리는 것과 검정 방법을 바꾸는 것은 서로 다른 문제를 푼다 — 표본 크기는 검정력을, 짝지음 여부는 같은 표본에서 뽑아낼 수 있는 정보의 양을 결정한다. 표본 크기와 검정력의 관계는 #17에서 정식으로 다룬다.

언제 쓰나. 지표가 문장 단위 점수의 단순 평균이 아니어서(BLEU, F-score, pass@k 등) 분석적 신뢰구간 공식이 없을 때. 계산 자원이 충분하고(모델을 다시 학습할 필요 없이 이미 있는 출력에 재표본만 반복하면 되므로 LLM eval에서는 대개 저렴하다) 문항 수가 극단적으로 많지 않을 때.

함정. 재표본의 단위를 잘못 잡으면 안 된다. 문항들이 독립이 아니라 클러스터를 이룬다면 — 예를 들어 하나의 지문에 딸린 문제 5개, 또는 같은 대화의 여러 턴 — 문항 단위로 복원추출하면 클러스터 내부의 의존성을 무시하게 되어 분산을 다시 과소평가한다. 이 경우 클러스터(블록) 단위로 통째로 복원추출하는 block bootstrap을 써야 한다. 이 문제는 #18 LLM eval의 통계 실무에서 더 자세히 다룬다.

2. 순열/무작위화 검정 (permutation / approximate randomization)

More accurate tests for the statistical significance of result differences (Yeh, Mitre Corp., COLING 2000)

정의. 순열검정은 “두 시스템이 진짜로 같다”는 귀무가설을 직접 데이터에 적용해서 그 귀무가설 아래 통계량이 어떤 분포를 가질지를 구성하는 방법이다. paired bootstrap이 표집분포(sampling distribution)를 근사하는 것과 달리, 순열검정은 귀무가설 하의 분포를 정의 그대로 만들어낸다는 점에서 정확검정(exact test)에 더 가깝다.

절차.

  1. 두 시스템이 각 문항에서 낸 출력(또는 정답 여부)을 모두 모은다.
  2. 귀무가설을 “두 시스템은 실제로 차이가 없다”로 세운다. 이 가설이 참이라면, 각 문항에서 어느 출력이 시스템 \(A\)의 것이고 어느 것이 \(B\)의 것인지는 임의로 바꿔 붙여도(교환해도) 무방하다 — 라벨만 바뀌었을 뿐 실제 성능 차이는 없기 때문이다.
  3. 각 문항마다 동전을 던져(50:50) \(A\), \(B\)의 출력 라벨을 맞바꾼다. 나머지 문항은 그대로 둔다.
  4. 이렇게 라벨을 섞은 가상 데이터로 관심 통계량(정확도 차이, F-score 차이 등)을 다시 계산한다.
  5. 3~4단계를 반복해 귀무가설 하에서 통계량이 어떻게 분포하는지를 만든다. 문항 수가 \(n\)개면 가능한 라벨 교환은 \(2^n\)가지다. \(n \le 20\)(\(2^{20} = 1{,}048{,}576\))이면 전부 시도하는 정확 순열검정이 가능하고, 그보다 크면 일부를 무작위로 뽑는 근사 무작위화 검정을 쓴다.
  6. p값은 원래 관측된 차이만큼 크거나 더 큰 차이가 나온 셔플의 비율로 추정한다. 정확히는 \(p \le (n_c+1)/(n_t+1)\) (\(n_c\): 기준을 만족한 셔플 수, \(n_t\): 전체 셔플 수)로 상한을 잡는다.

직관. 동전을 던지듯 두 시스템의 출력을 뒤섞는다는 것은, 만약 정말로 두 시스템이 다르지 않다면 “이게 A의 답이고 이게 B의 답이다”라는 라벨은 상표만 붙어 있을 뿐 내용은 서로 바꿔도 상관없는 것과 같다는 발상이다. 실제 관측치가 이렇게 라벨을 무작위로 뒤섞은 결과들 사이에서 유난히 극단적인 자리에 있다면, “라벨이 우연히 이렇게 배정됐을 가능성”이 낮다는 뜻이고 이것이 곧 통계적 유의성이다.

실측 사례 — 독립성 가정이 유의성을 얼마나 과소평가하는가. Yeh(2000)는 두 개체 관계 추출 기법을 같은 103개 관계(문항)에 대해 비교했다.

기법 Recall Precision F-score
Method I 45.6% 49.5% 47.5%
Method II 24.3% 64.1% 35.2%

두 기법의 recall 사이 상관계수는 \(r_{12} = 0.35\)로 추정됐다(양의 상관 — 같은 문항에서 함께 맞히고 함께 틀린다). 문항 수가 86개(양쪽 중 한쪽만 맞힌 경우들의 합)라 정확검정이 불가능해, \(2^{20}=1{,}048{,}576\)회의 근사 무작위화 검정을 적용했다. 결과는 recall 차이 p값 상한 0.00009, F-score 차이 0.014, precision 차이 0.025 — 세 지표 모두 통계적으로 유의했다.

같은 precision 데이터에, \(R\)과 \(S\)(관심 있는 항목 수와 무관한 항목 수)를 두 기법이 독립적으로 뽑은 값처럼 취급하는 표준 \(2\times2\) 분할표 \(\chi^2\) 검정을 적용하면 어떻게 될까. \(\chi^2 = 2.38\), 자유도 1에서 이 값이 나올 확률은 10~20%다. 즉 독립성을 가정한 검정은 “유의하지 않다”고 말하는데, 실제 상관을 반영한 무작위화 검정은 “p<0.025로 유의하다”고 말한다. 같은 데이터, 정반대의 결론이다. 이 논문은 이 격차가 얼마나 벌어지는지도 정량화했다 — 두 결과의 표준편차가 같다고 가정할 때, 독립 가정 SE와 실제(짝지은) SE의 비율은 다음과 같다.

상관 \(r_{12}\) \(\text{SE}_{\text{independent}} / \text{SE}_{\text{paired}}\) 같은 유의성을 얻으려면 관측된 차이가 몇 % 더 커야 하나
0.38 1.27 27%
0.50 1.41 41%
0.80 2.24 124%

이 표는 이 글 Background 절의 \(\sqrt{1-r}\) 계산과 정확히 같은 현상을 다른 방향에서 보여준다. 상관이 0.5면 독립성을 잘못 가정한 검정은, 짝지은 검정과 같은 유의성을 얻기 위해 관측된 차이가 41%나 더 크기를 요구한다 — 즉 실제로 있는 차이를 41%만큼 통계적으로 “안 보이게” 만든다.

bootstrap과의 차이. 두 방법 모두 재표본을 쓰지만 목적이 다르다. paired bootstrap은 “이 표본에서 통계량이 얼마나 흔들릴 수 있는가”(표집분포의 근사)를 답한다. 순열검정은 “귀무가설이 참이라면 이 통계량이 어떻게 분포하는가”(귀무분포의 직접 구성)를 답한다. 전자는 복원추출(같은 문항이 중복 등장 가능)을, 후자는 라벨 재배정(문항 집합 자체는 고정, 배정만 바뀜)을 쓴다는 절차상의 차이도 있다.

언제 쓰나. 지표가 복잡한 비선형 함수(precision, F-score처럼 두 확률변수의 비율)여서 분석적 검정이 마땅치 않을 때. 표본이 작아서(\(n \le 20\) 근방) 정확검정이 가능한 경우 특히 매력적이다 — 근사가 아니라 정확한 p값을 얻는다.

함정. \(n\)이 커지면 근사 무작위화만 가능하고, 셔플 횟수가 부족하면 (paired bootstrap과 마찬가지로) p값의 해상도가 거칠어진다. 또한 이 방법 역시 문항 간 독립을 가정한다 — Yeh 스스로도 논문 말미에서 이 문제를 “아직 해결되지 않은 다음 과제”로 남겼다.

3. McNemar 검정

McNemar(1947), Note on the sampling error of the difference between correlated proportions or percentages, Psychometrika 12(2), 153–157.

Approximate Statistical Tests for Comparing Supervised Classification Learning Algorithms (Dietterich, Oregon State University, Neural Computation 1998)

정의. McNemar 검정은 짝지은 이진 결과(맞음/틀림, 예/아니오)를 비교하는 검정이다. 같은 문항 집합에 두 분류기를 돌린 결과를 다음과 같은 \(2 \times 2\) 표로 정리한다.

  B: 맞음 B: 틀림
A: 맞음 \(a\) (둘 다 맞음) \(b\) (A만 맞음)
A: 틀림 \(c\) (B만 맞음) \(d\) (둘 다 틀림)

직관. 여기서 결정적인 통찰은, \(a\)칸(둘 다 맞음)과 \(d\)칸(둘 다 틀림)은 두 모델의 실력 차이에 대해 아무 정보도 주지 않는다는 것이다. 두 모델이 똑같이 반응한 문항이니까. 실력 차이를 말해주는 정보는 오직 두 모델이 다르게 답한 \(b\), \(c\)칸에만 있다. McNemar 검정은 사실상 “짝지음의 가장 극단적인 형태”다 — 일치하는 문항은 통째로 버리고, 불일치하는 문항만 놓고 그 안에서 어느 방향이 더 흔한지를 묻는다.

수식. 연속성 보정을 포함한 McNemar 검정통계량은

\[\chi^2 = \frac{(\lvert b - c \rvert - 1)^2}{b + c}\]

이고, 귀무가설(\(b\)와 \(c\)가 동등하게 나올 확률이 같다, 즉 두 모델의 실력이 같다) 하에서 자유도 1의 \(\chi^2\) 분포를 근사적으로 따른다.

  • \(b\): A만 맞힌 문항 수.
  • \(c\): B만 맞힌 문항 수.
  • \(\lvert b-c \rvert - 1\)의 \(-1\)이 연속성 보정이다. \(\chi^2\) 분포는 연속분포인데 \(b, c\)는 정수(이산값)이므로, 이 보정 없이는 p값이 실제보다 낙관적으로(작게) 나온다.
  • \(b + c\)가 관행적으로 25 미만으로 작으면 \(\chi^2\) 근사가 나빠지므로, 대신 정확 이항검정을 쓴다. 귀무가설 아래 \(b \sim \text{Binomial}(b+c,\ 0.5)\)이므로, 관측된 \(b\)(또는 \(c\))가 이 분포에서 얼마나 극단적인지로 정확한 양측 p값을 계산한다.

Dietterich(1998)의 비교 — 무엇을 권고했나. 이 논문은 분류 알고리즘 두 개를 비교하는 다섯 가지 검정의 1종 오류율(귀무가설이 참인데도 틀렸다고 잘못 판단할 확률)을 실험적으로 비교했다.

검정 1종 오류율 결론
두 비율의 차이 검정(모델별 정확도를 독립 이항비율로 취급) 매우 높음 절대 쓰지 말 것
임의 train/test 분할 반복 + paired-difference t-검정 매우 높음 절대 쓰지 말 것
10-fold 교차검증 + paired-difference t-검정 다소 높음 주의해서 사용
McNemar 검정 낮음(적절) 알고리즘을 한 번만 돌릴 수 있는 상황에서 권고
5×2cv 검정(Dietterich가 새로 제안) 낮음(적절), McNemar보다 검정력 약간 우위 알고리즘을 여러 분할로 반복 학습할 수 있는 상황에서 권고

핵심은 마지막 두 줄의 조건 분기다. 5×2cv 검정(5번의 2-fold 교차검증을 반복해 그 결과들을 결합하는 검정)이 McNemar보다 통계적으로 조금 더 강력하지만, 이 검정을 쓰려면 알고리즘을 여러 개의 서로 다른 학습/평가 분할로 재학습할 수 있어야 한다. LLM eval에서는 대개 이 조건이 성립하지 않는다 — 이미 학습이 끝난 모델의 고정된 출력을 놓고 다른 모델과 비교하는 것이 일반적이고, 비교를 위해 모델을 10번 재학습하는 일은 거의 없다. 그래서 “알고리즘을 한 번만 돌릴 수 있는 상황”에 해당하는 McNemar가 LLM eval에서 실무적으로 관련 있는 권고가 된다.

언제 쓰나. 두 모델의 결과가 이진(맞음/틀림, 통과/실패)이고, 같은 문항 집합에 짝지어 평가했을 때. 정답이 프로그램으로 채점되는 도메인(코드 실행 테스트, 수학 정답 매칭, 규칙 기반 IFEval류 채점)에서 특히 자연스럽게 맞아떨어진다.

함정. McNemar는 이진 결과에만 쓴다 — 연속 점수(judge가 준 1~10점, BLEU 등)를 이진화해서 억지로 McNemar에 넣으면 정보를 버리는 셈이다. 이런 경우는 앞의 두 방법(paired bootstrap, 순열검정)이나 Wilcoxon 부호순위 검정(뒤에서 다룬다)이 더 적합하다. 또한 \(b+c\)가 지나치게 작으면(예: 5 미만) 어떤 근사도 신뢰하기 어렵고, 애초에 결론을 내리기엔 표본이 부족하다는 신호로 받아들여야 한다.

McNemar는 원래 모델 두 개를 비교하는 검정이다. 세 개 이상의 모델을 같은 문항 집합에 동시에 돌려 비교하고 싶다면 Cochran’s Q 검정(Cochran, 1950)이 이 틀을 다중 모델로 일반화한다 — Dror et al.(2018)이 지적하듯 McNemar의 다중 범주(모델) 확장판으로 쓰인다. 다만 이 경우도 “어느 두 모델 사이의 차이가 유의한가”를 개별적으로 묻고 싶다면 다중비교 보정이 필요해지는데, 그 이야기는 #17로 넘긴다.

4. Dror et al. (2018) — 검정 선택 결정 트리

The Hitchhiker’s Guide to Testing Statistical Significance in Natural Language Processing (Dror, Baumer, Shlomov & Reichart, Technion, ACL 2018)

이 논문은 이 글에서 다룬 개별 검정들을 언제 골라 써야 하는가로 이어주는 실무 지침이다. 저자들은 검정 선택을 세 단계 질문으로 단순화한 결정 트리를 제안한다.

  1. 검정통계량 \(\delta(X) = M(A,X) - M(B,X)\)의 분포가 알려져 있는가?
    • 모수 검정(parametric test)을 쓴다. accuracy, UAS/LAS처럼 개별 예측의 평균으로 계산되는 지표는, 문항 수가 충분히 크면 중심극한정리(CLT)에 의해 정규분포로 근사된다 — 이때 paired Student’s t-검정이 적합하다.
    • 아니오 → 다음 질문으로.
  2. 분포를 모른다면, 데이터(문항 수)가 작은가?
    • bootstrap 또는 순열/무작위화 검정을 쓴다. 계산은 무겁지만 평가 지표 값을 그대로 활용하므로 검정력이 높다.
    • 아니오(데이터가 매우 크다) → sampling-free 비모수 검정(sign test, Wilcoxon 부호순위 검정, 이진 결과라면 McNemar)을 쓴다. 지표 값 대신 “어느 쪽이 더 나은가”라는 순위 정보만 쓰므로 검정력은 낮아지지만 계산이 가볍다.

BLEU, F-score, ROUGE, METEOR처럼 평균이 아닌 비선형 지표는 정규분포를 가정하기 어렵다는 것이 이 커뮤니티의 관행적 판단이라고 저자들은 지적한다(Yeh, 2000; Berg-Kirkpatrick et al., 2012). 반대로 accuracy처럼 예측 단위 평균으로 정의되는 지표는 CLT 덕에 t-검정이 정당화될 여지가 크다.

이 논문이 조사한 실태. 저자들은 ACL 2017(장문 논문 196편, 그중 실험 논문 180편)과 TACL 2017(37편 중 실험 논문 33편)을 전부 훑어 유의성 검정 보고 실태를 집계했다.

항목 ACL 2017 TACL 2017
실험 논문 수 180 33
유의성 검정을 전혀 보고하지 않은 논문 117 (65%) 15 (45%)
유의성 검정을 보고한 논문 63 (35%) 18 (55%)
검정 이름을 명시한 논문 42 15
검정 이름을 명시했지만 부적절한 검정을 쓴 논문 6 0
여러 데이터셋을 썼는데 다중비교 보정을 한 논문 3 / 110 4 / 19

즉 ACL 논문의 3분의 2는 결과 차이가 통계적으로 유의한지 아예 검정하지 않았고, 검정을 했다고 밝힌 논문 중에서도 7분의 1은 잘못된 검정을 썼다. 여러 데이터셋에 걸쳐 비교했으면서 다중비교를 보정한 논문은 ACL에서 110편 중 3편뿐이다(이 문제는 #17에서 이어 다룬다). 실제로 명시된 검정 이름의 빈도는 다음과 같았다.

검정 ACL 2017 TACL 2017
t-검정 17 2
bootstrap 6 1
Wilcoxon 3 0
\(\chi^2\)(카이제곱) 3 1
randomization 3 1
McNemar 2 3
sign test 2 3
permutation 1 4

t-검정이 가장 흔했다(ACL 17회) — 그런데 이 논문의 논지대로면, 그중 다수가 평균이 아닌 지표(F-score, BLEU)에 정규성을 가정하고 t-검정을 쓴 부적절한 사례였을 가능성이 있다. 흥미로운 점은 표에 등장하는 두 개의 sampling-free 비모수 검정, sign testMcNemar다. sign test는 각 문항에서 \(A\)가 \(B\)보다 나은 경우의 개수만 세어 이항분포로 검정하는 가장 단순한 형태이고, McNemar는 그 sign test를 이진 결과(정답/오답)에 특화한 형태로 볼 수 있다. 여기에 크기 정보(차이가 얼마나 큰가)까지 반영하고 싶다면 Wilcoxon 부호순위 검정을 쓴다 — 차이의 절댓값으로 순위를 매기고 그 순위에 원래 부호를 붙여 합산하는 방식이라, sign test보다 검정력이 높으면서도 bootstrap·순열검정처럼 재표본을 반복할 필요는 없다.

5. 쓰지 말아야 할 것들

  • 독립 2표본 t-검정(짝지음 무시): 두 모델의 결과를 서로 독립인 두 표본처럼 다루는 것. 앞서 본 것처럼 공분산 항을 버려 분산을 과대추정하고, 실제로 있는 차이를 “유의하지 않다”고 오판할 위험을 높인다. 같은 문항 집합에 두 모델을 돌렸다면 거의 항상 이 실수다.
  • 정규성이 의심스러운 지표에 t-검정: F-score, BLEU, ROUGE, pass@k처럼 개별 문항 점수의 단순 평균이 아닌 지표에 정규분포를 가정하고 t-검정을 강행하는 것. Dror et al.(2018)이 지적하듯 이런 지표는 정규성을 뒷받침할 이론적 근거(CLT)가 약하다. 이런 경우 앞서 다룬 bootstrap이나 순열검정, 또는 sign test·Wilcoxon 부호순위 검정 같은 비모수 검정으로 대체해야 한다.
  • 여러 벤치마크에 각각 검정하고 유의한 것 하나만 보고하기: 벤치마크 20개에 각각 \(\alpha=0.05\)로 검정하면, 두 모델이 정말 같더라도 우연히 유의한 결과가 나올 기댓값은 정확히 \(20 \times 0.05 = 1\)개다. 이 중 하나를 골라 “여기서 유의미하게 이겼다”고 보고하는 것은 다중비교 문제를 무시한 것이다. Bonferroni나 Benjamini-Hochberg 같은 보정이 필요하며, 이 주제는 #17 검정력·다중비교에서 상세히 다룬다.

Experiments — 같은 4%p 차이, 다른 결론

토이 예제를 하나 만들어 이 글의 핵심 반례를 눈으로 확인해보자.

설정. 문항 200개. 모델 A는 150개 정답(75.0%), 모델 B는 142개 정답(71.0%). 두 모델의 정확도 차이는 정확히 4.0%p로 고정한다. 이제 이 200개 문항 안에서 A와 B가 얼마나 겹치게 맞고 틀리는지를 다르게 잡은 두 시나리오를 만든다. 정확도는 두 시나리오에서 완전히 똑같다 — 오직 문항별로 “누가 맞고 누가 틀렸는지”의 짝짓기 구조만 다르다.

시나리오 1 — 상관이 높다

대부분의 문항에서 두 모델이 같이 맞거나 같이 틀린다(공통 요인, 즉 문항 난이도의 영향이 강하다).

  B: 맞음 B: 틀림
A: 맞음 141 9 150
A: 틀림 1 49 50
142 58 200

두 모델이 다르게 답한 문항은 \(b+c = 9+1=10\)개뿐이다. 이 표에서 계산한 두 모델 결과 사이의 \(\phi\) 상관계수는

\[\phi = \frac{ad-bc}{\sqrt{(a+b)(c+d)(a+c)(b+d)}} \approx 0.88\]

로 매우 높다.

시나리오 2 — 상관이 낮다

정확도는 똑같이 75.0% vs 71.0%지만, 두 모델이 서로 다르게 반응하는 문항이 훨씬 많다.

  B: 맞음 B: 틀림
A: 맞음 117 33 150
A: 틀림 25 25 50
142 58 200

다르게 답한 문항은 \(b+c=33+25=58\)개로 훨씬 많고, \(\phi \approx 0.27\)로 상관이 낮다.

세 가지 검정을 나란히 돌린다

같은 두 데이터셋에 (a) 독립 2표본 z-검정(짝지음 무시), (b) paired bootstrap(재표본 10,000회), (c) McNemar 검정(연속성 보정 및 정확 이항검정)을 각각 적용한 결과다.

검정 시나리오 1 (상관 0.88) 시나리오 2 (상관 0.27)
독립 2표본 z-검정 (짝지음 무시) \(p = 0.368\) (유의하지 않음) \(p = 0.368\) (유의하지 않음)
paired bootstrap (\(B=10{,}000\)) \(p \approx 0.007\) (유의) \(p \approx 0.328\) (유의하지 않음)
McNemar (연속성 보정 \(\chi^2\)) \(p = 0.027\) (유의) \(p = 0.358\) (유의하지 않음)
McNemar (정확 이항검정) \(p = 0.022\) (유의) \(p = 0.358\) (유의하지 않음)

여기서 눈여겨봐야 할 것은 두 가지다.

첫째, 독립 2표본 검정의 p값이 두 시나리오에서 완전히 똑같다(\(p=0.368\)). 이 검정은 오직 두 모델의 전체 정답 수(150, 142)만 보고 문항별로 누가 맞고 틀렸는지의 짝짓기 구조는 전혀 보지 않기 때문이다. 상관이 0.88이든 0.27이든, 이 검정의 눈에는 두 시나리오가 구별되지 않는다. 짝짓기 구조에 담긴 정보 전체를 애초에 볼 수 없는 검정이라는 뜻이다.

둘째, 짝지은 방법(bootstrap, McNemar)은 상관에 따라 결론이 정반대로 갈린다. 상관이 높은 시나리오 1에서는 세 가지 짝지은 방법 모두 \(p<0.05\)로 유의하다고 판단하는데, 상관이 낮은 시나리오 2에서는 같은 4%p 차이가 유의하지 않다고 판단한다. 왜일까 — 상관이 높을수록 두 모델이 “다르게 답한” 문항(\(b+c\))의 절대 개수가 줄어들고, 그 적은 불일치 문항들 사이에서 A가 이긴 경우(\(b\))가 B가 이긴 경우(\(c\))보다 압도적으로 많다는 신호가 상대적으로 뚜렷해진다. 반대로 상관이 낮으면 불일치 문항이 많아지고, 그 안에서의 우세도 상대적으로 흐려진다.

이 결과가 주는 실무적 교훈은 명확하다. 독립 2표본 검정은 짝짓기 구조를 볼 능력이 원천적으로 없으므로, 실제로 상관이 있는 상황에서는 항상 짝지은 방법보다 불리하거나(검정력 손실) 최소한 무관한 정보만 준다. 반면 짝지은 방법은 상관 구조를 정확히 반영해, 상관이 높을 때는 적은 표본으로도 유의성을 잡아내고 상관이 낮을 때는 정직하게 “판단하기 이르다”고 말한다.

Background의 예측이 실측과 맞는지 확인한다

Background 절에서 유도한 공식 \(\text{SE}_{\text{paired}}/\text{SE}_{\text{independent}} = \sqrt{1-r}\)이 이 토이 예제에서도 그대로 맞는지 직접 대조해보자. paired bootstrap의 재표본 10,000개에서 계산한 diff의 표준편차를 \(\text{SE}_{\text{paired}}\)의 실측값으로, 독립 2표본 검정에서 쓴 표준오차를 \(\text{SE}_{\text{independent}}\)로 놓는다.

  \(\text{SE}_{\text{independent}}\) \(\text{SE}_{\text{paired}}\)(bootstrap 실측) 실측 비율 공식 예측값 \(\sqrt{1-\phi}\)
시나리오 1 (\(\phi=0.88\)) 0.0444 0.0154 0.347 0.347
시나리오 2 (\(\phi=0.27\)) 0.0444 0.0383 0.863 0.856

실측 비율과 공식이 예측한 \(\sqrt{1-\phi}\)가 소수점 둘째 자리까지 거의 정확히 일치한다. Background 절이 이론적으로 유도한 “상관이 클수록 짝지은 SE가 독립 가정 SE보다 작아진다”는 명제가, 정수 카운트로 만든 이 토이 데이터에서도 정확히 그대로 확인된다. 시나리오 1처럼 상관이 0.88이면 짝지은 SE가 독립 가정 SE의 약 35%에 불과하다 — 뒤집어 말하면, 독립 2표본 검정으로 같은 정밀도를 얻으려면 문항을 \(1/(1-0.88) \approx 8.3\)배 더 모아야 한다는 뜻이다. 시나리오 1에서 McNemar와 paired bootstrap이 겨우 200문항으로 잡아낸 유의성을, 독립 2표본 검정은 애초에 짝짓기 구조를 보지 못해 문항을 아무리 늘려도 같은 이점을 누리지 못한다(단, 표본을 충분히 늘리면 4%p 차이 자체는 독립 검정으로도 결국 유의해진다 — 요점은 “같은 표본 크기에서 얼마나 빨리 유의성에 도달하는가”다).

p값을 읽을 때의 함정

\(p=0.022\)라는 결과를 보고 “A가 B보다 나을 확률이 97.8%다”라고 말하면 안 된다. Dror et al.(2018)의 정의를 다시 떠올리자.

\[p\text{-value} = \Pr(\delta(X) \ge \delta_{\text{observed}} \mid H_0)\]

이것은 “귀무가설이 참이라고 가정했을 때, 관측된 것만큼 극단적인 차이가 나올 확률”이다. “A가 진짜로 더 나을 확률”이 아니다. 게다가 p값은 차이의 크기에 대해 아무것도 말해주지 않는다 — 표본이 충분히 크면 실질적으로 무의미한 0.1%p 차이도 얼마든지 \(p<0.05\)가 나올 수 있다. “통계적으로 유의하다”와 “실용적으로 의미 있다”는 서로 다른 질문이며, 후자를 답하려면 효과크기(effect size)를 함께 봐야 한다. 이 주제는 #17 검정력·다중비교에서 이어진다.

통계 요약

검정 적용 조건 귀무가설 장점 함정 대표 문헌
Paired bootstrap 짝지은 데이터, 지표가 비선형(BLEU, F-score 등)이어도 무관 두 시스템의 참 점수 차이가 0이다 분석적 공식 없이도 임의 지표에 적용 가능; CI와 p값을 동시에 얻음 문항이 클러스터를 이루면 문항 단위 재표본이 분산을 과소추정(→block bootstrap 필요) Koehn (2004, EMNLP)
순열/무작위화 검정 짝지은 데이터, 작은 표본이면 정확검정 가능 두 시스템의 출력 라벨은 교환 가능하다(동등하다) 귀무분포를 직접 구성해 정확검정에 가까움; 분포 가정 불필요 \(n\)이 크면 근사만 가능; 문항 간 독립 가정은 여전히 필요 Yeh (2000, COLING)
McNemar (연속성 보정 \(\chi^2\)) 짝지은 이진 결과, \(b+c\)가 충분히 큼(관행적으로 25 이상) \(b, c\)가 동일한 확률로 발생한다(두 모델 실력이 같다) 계산이 즉석에서 되고 해석이 직관적; 짝지음의 가장 단순한 형태 연속 점수를 억지로 이진화하면 정보 손실; \(b+c\)가 작으면 근사 부정확 McNemar (1947, Psychometrika); Dietterich (1998, Neural Computation)
McNemar (정확 이항검정) 짝지은 이진 결과, \(b+c\)가 작음(관행적으로 25 미만) \(b \sim \text{Binomial}(b+c, 0.5)\) \(\chi^2\) 근사 없이 정확한 p값 \(b+c\)가 매우 작으면 검정력 자체가 낮음(표본 부족의 신호) McNemar (1947, Psychometrika)
5×2cv 검정 알고리즘을 여러 학습/평가 분할로 반복 실행할 수 있음 5회 반복 2-fold 교차검증의 평균 차이가 0이다 McNemar보다 통계적 검정력이 소폭 높음 모델을 여러 번 재학습해야 함 — 고정된 LLM 출력 비교에는 대개 적용 불가 Dietterich (1998, Neural Computation)
Wilcoxon 부호순위 검정 짝지은 연속/순서 점수, 분포 가정 없이 순위만 사용 두 시스템 차이의 분포가 0을 중심으로 대칭이다 sign test보다 검정력 높음(차이의 크기 순위까지 반영); 계산이 sampling-based보다 가벼움 지표 값 자체(크기 정보)는 버리고 순위만 사용 — sampling-based 검정보다 검정력은 낮음 Wilcoxon (1945); Dror et al. (2018, ACL)
독립 2표본 검정 (비짝지음, 쓰지 말 것) — (참고용) 두 모델의 정확도가 같은 이항비율에서 나왔다 계산이 가장 간단함 짝짓기 구조를 원천적으로 무시 — 상관이 있는 상황에서 검정력을 낭비하거나 실제 신호를 놓침 Yeh (2000); Dietterich (1998)

Conclusion

이 글의 메시지는 하나로 요약된다. 두 모델은 같은 문항을 푼다. 그 사실이 만드는 상관을 검정에 반영하지 않으면, 있는 차이를 없는 것으로 만든다. Background 절의 수식이 보여주듯 상관이 0.7만 돼도 짝짓지 않은 설계는 같은 정밀도를 얻기 위해 3.3배의 데이터를 요구한다. Experiments 절의 토이 예제가 보여주듯, 정확히 같은 4%p 차이가 상관 구조에 따라 유의함(p=0.02대)과 유의하지 않음(p=0.36대)을 오간다 — 그리고 짝짓기 구조를 볼 수 없는 독립 2표본 검정은 이 차이를 영원히 알아채지 못한다.

실무적으로는 이렇게 고르면 된다. 지표가 이진(맞음/틀림)이면 McNemar가 가장 단순하고 강력한 선택이다. 지표가 비선형이거나(BLEU, F-score) 분석적 공식이 없으면 paired bootstrap이나 순열검정을 쓴다. 개별 예측의 단순 평균으로 정의되는 지표(accuracy, UAS)라면 문항 수가 충분할 때 paired t-검정도 CLT에 기대어 정당화된다. 이 선택 자체를 매번 새로 고민하지 않도록 정리해둔 것이 Dror et al.(2018)의 결정 트리이고, 그들의 ACL/TACL 조사가 보여주듯 이 커뮤니티조차 절반 가까운 논문이 유의성 검정 자체를 생략한다는 것도 함께 기억해둘 만하다.

한계도 분명하다. 이 글의 모든 검정은 문항 간 독립을 전제로 한다. 실제로는 지문 하나에 문제가 여러 개 딸리거나, 같은 대화의 여러 턴이 한 시퀀스로 묶이는 경우가 흔하다. 이 경우 문항 단위 재표본은 분산을 다시 과소평가하고, 클러스터 단위 재표본(block bootstrap)이나 클러스터 로버스트 표준오차가 필요하다 — 이 문제는 #18 LLM eval의 통계 실무에서 이어 다룬다. 그리고 p값 하나만으로는 “얼마나 큰 차이인가”를 답할 수 없다. 효과크기, 검정력, 그리고 여러 벤치마크에 걸친 다중비교 문제는 다음 편 #17 검정력·다중비교의 몫이다.

참고 문헌


LLM 평가 체계 시리즈

이 글은 LLM 평가 체계 시리즈의 열여섯 번째 글이다.

1부. 평가란 무엇인가

  1. 측정으로서의 평가 — 구성개념·조작화·타당도·신뢰도
  2. 벤치마크는 무엇을 재고 있나 — 벤치 445편 구성타당도 리뷰

2부. 무엇을 숫자로 만드나 — 평가 metric

  1. 척도와 허용 연산 — Likert 평균을 내도 되는가
  2. 분류 지표 — accuracy의 함정부터 PR-AUC까지
  3. 생성 지표와 그 타당도 — BLEU에서 COMET까지
  4. 객관식 평가는 왜 흔들리나 — 위치 편향과 포맷 민감도

3부. LLM 벤치마크 지형도

  1. 지식과 추론 — MMLU 계열의 흥망 — MMLU·GPQA·BBH·HELM
  2. 검증 가능한 도메인 — 수학과 코드 — GSM8K·MATH·HumanEval·SWE-bench
  3. 개방형 대화 — MT-Bench에서 Arena까지 — judge 기반 벤치의 등장
  4. 능력의 다른 축 — 지시따르기·긴 문맥·사실성
  5. 한국어 벤치마크 — 번역이 아니라 원산, 그리고 문화 타당도

4부. 사람이 읽는다 — 정성평가와 일치도

  1. 사람 평가 설계 — 루브릭·Likert·pairwise·BWS
  2. 우연을 빼다 — κ 계열 — Cohen·Fleiss·weighted·Krippendorff
  3. κ의 역설 — 일치율 90%인데 κ가 0.21

5부. 차이는 진짜인가 — 정량평가의 통계

  1. 점수는 추정치다 — 이항비율 신뢰구간과 Wald의 실패
  2. (현재 글) 차이는 유의한가 — paired bootstrap·순열검정·McNemar
  3. 몇 개를 재야 하나 — 검정력·표본크기·다중비교
  4. LLM eval의 통계 실무 — 클러스터 SE·IQM·분산 분해

6부. 신뢰할 수 있는 평가 체계

  1. judge를 통계로 다루기 — 편향·Bradley-Terry·PPI
  2. 오염·재현성·효율 — 오염 검정·harness·IRT
  3. 안전 평가의 통계와 체계 설계 — 희귀사건·calibration·체크리스트

본 시리즈는 21편으로 구성된다.




Enjoy Reading This Article?

Here are some more articles you might like to read next:

  • 안전 평가의 통계와 체계 설계 — 희귀사건과 calibration, 스물한 편의 마지막 체크리스트
  • 오염·재현성·효율 — 이 점수는 무엇을 재고 있나
  • judge를 통계로 다루기 — 편향, Bradley-Terry, PPI
  • LLM eval의 통계 실무 — 클러스터 SE, 분산 분해, IQM
  • 몇 개를 재야 하나 — 검정력, 표본크기, 다중비교