<!doctype html>
2026년 6월 22일 | 개발 공부
Vargha-Delaney A12는 두 독립 표본에서 값을 하나씩 뽑았을 때 첫 번째 표본이 두 번째 표본보다 클 확률을 0부터 1 사이로 적는 효과 크기다. 이름은 조금 낯설지만 질문은 단순하다. 평균이 몇 점 차이냐보다 먼저 무작위로 한 쌍을 맞붙이면 A가 B를 얼마나 자주 이기나를 묻는다.
나는 이 값을 Brunner-Munzel 검정이나 Mann-Whitney U 검정 옆에 붙일 보조 숫자로 본다. 검정은 “우연이라고 보기 어려운가”를 묻고, A12는 “차이가 어느 정도 방향으로 기울었나”를 묻는다. 두 질문을 섞어 쓰면 p-value가 효과 크기처럼 읽히고, 효과 크기가 유의성 판정처럼 읽힌다. 그래서 표를 만들 때 둘을 일부러 다른 칸에 둔다.
A12가 묻는 질문
예를 들어 모델 A와 모델 B를 서로 다른 샘플 묶음에서 평가했다고 하자. 같은 query를 두 모델이 함께 지난 paired 구조가 아니라, 독립적인 두 결과 묶음만 남아 있다. 이때 모든 A 값과 모든 B 값을 한 번씩 짝지어 비교한다. A가 더 큰 쌍은 win, B가 더 큰 쌍은 loss, 값이 같으면 tie로 둔다. A12는 대략 win에 tie 절반을 더한 뒤 전체 쌍 수로 나눈 값이다.
값이 0.5 근처면 두 그룹이 pairwise로 비슷하게 이긴다는 뜻이고, 0.7에 가까워지면 A가 B보다 더 자주 큰 값을 낸다는 뜻이다. 반대로 0.3이면 B 쪽으로 기울었다고 읽는다. 여기서 중요한 전제는 metric 방향이다. 정확도나 nDCG처럼 클수록 좋은 값이면 그대로 읽을 수 있지만, latency처럼 작을수록 좋은 값이면 비교 방향을 먼저 뒤집어야 한다.
이 숫자가 유용한 장면은 평균이 비슷한데 분포 모양이 다른 때다. 한쪽은 대부분 안정적으로 조금 앞서고, 다른 쪽은 몇 개 샘플에서 크게 이기는 식이면 평균만으로는 무엇이 좋아졌는지 잘 보이지 않는다. A12를 붙이면 “전체 pairwise 경기에서는 어느 쪽이 더 자주 이겼나”가 먼저 고정된다. 그다음에 outlier가 만든 평균 차이인지, 넓은 샘플에서 반복되는 작은 우위인지 나눠 볼 수 있다.
Cliff's delta와 나란히 읽기
A12를 처음 보면 Cliff's delta와 거의 같은 말을 하는 것처럼 느껴진다. 실제로 둘은 강하게 연결된다. tie가 없고 방향을 같은 방식으로 잡으면 Cliff's delta는 2 곱하기 A12 빼기 1로 바꿔 읽을 수 있다. A12가 0.68이면 Cliff's delta는 0.36 근처다. 하나는 승률처럼 읽히고, 다른 하나는 -1부터 1까지의 균형축으로 읽힌다.
그래서 나는 둘 중 하나만 골라 표에 넣는다. 발표 자료나 회의 메모처럼 직관이 중요한 곳에서는 A12처럼 승률 문장으로 읽히는 숫자가 편하다. 반대로 통계 리포트에서 효과 크기 범위를 다른 비모수 지표와 맞추고 싶을 때는 Cliff's delta가 더 깔끔하다. 같은 정보를 두 번 적으면 숫자가 많아 보일 뿐 판단은 별로 늘지 않는다.
내가 남기는 계산 메모
계산 자체는 어렵지 않다. 다만 나중에 다시 볼 때 헷갈리는 부분은 항상 tie와 방향이다. 값이 같은 쌍을 어떻게 처리했는지, 소수점 반올림 전에 비교했는지, 낮을수록 좋은 metric을 뒤집었는지를 적어 두지 않으면 A12 하나만 남아도 해석이 빠진다. 작은 평가 로그에서는 이런 메모가 검정 함수 이름보다 오래 간다.
wins = sum(a > b for a in group_a for b in group_b)
ties = sum(a == b for a in group_a for b in group_b)
count = len(group_a) * len(group_b)
a12 = (wins + 0.5 * ties) / count
실무에서는 부동소수점 값이 많아서 완전한 동률이 거의 없을 때도 있고, rubric score처럼 같은 점수가 자주 나올 때도 있다. 그래서 나는 결과 표 옆에 n, win, tie, loss, A12, metric direction을 같이 둔다. 이 다섯 칸이 있으면 나중에 Brunner-Munzel p-value나 Mann-Whitney U 결과를 다시 읽을 때도 숫자가 덜 떠돈다.
또 하나 조심할 부분은 표본 독립성이다. 같은 테스트셋의 query마다 두 설정 점수가 함께 있으면 A12 계산은 가능해 보여도 paired 정보를 버리는 셈이 된다. 그럴 때는 각 query의 차이를 먼저 만들고, paired permutation이나 Wilcoxon signed-rank test를 보는 편이 낫다. A12는 짝을 만들 수 없는 두 묶음에서 방향성을 읽는 도구로 제한해 두는 편이 안전하다.
검정 결과와 분리해서 쓰기
A12는 검정이 아니다. 표본 수가 작아도 그럴듯한 숫자는 나오고, 표본 수가 커도 실제 차이가 작으면 실무 의미는 약할 수 있다. 따라서 A12만 보고 “A가 낫다”라고 닫기보다 원자료 그림, confidence interval, Brunner-Munzel이나 Mann-Whitney U 같은 검정, 그리고 큰 차이를 만든 샘플 목록을 같이 본다.
내가 이 값을 쓰는 가장 큰 이유는 평균표의 과한 자신감을 낮추기 위해서다. 평균이 조금 높아도 A12가 0.52라면 대부분의 pairwise 비교에서는 거의 반반이라는 뜻일 수 있다. 반대로 평균 차이가 작아도 A12가 꾸준히 0.65 이상이면 분포 전체가 한쪽으로 조금씩 밀려 있을 가능성이 있다. 이때 다시 열어 볼 샘플 queue가 생긴다.
보고서에는 보통 “A12=0.68, A가 B보다 큰 pair가 68%”처럼 한 문장으로 적는다. 이 정도면 통계 용어를 모르는 사람도 방향을 바로 읽을 수 있고, 숫자를 과장하지도 않는다. 다만 이 문장 뒤에는 항상 표본 수와 비교 단위를 붙인다. pair 수가 25개인지 2,500개인지에 따라 같은 0.68도 무게가 완전히 달라지기 때문이다. 나는 그래서 해석 문장에는 원자료를 다시 열 수 있는 파일명까지 같이 남긴다.
정리하면 Vargha-Delaney A12는 독립 두 표본 비교에서 p-value 옆에 둘 승률형 효과 크기로 쓰기 좋다. paired 구조가 있으면 Wilcoxon이나 paired permutation 쪽을 먼저 보고, 독립 표본에서 분포 모양이 다르면 Brunner-Munzel과 함께 본다. 검정명이 아니라 질문을 먼저 고정하면, 통계표가 조금 덜 장식처럼 느껴진다.
'[개발 공부]' 카테고리의 다른 글
| Hedges' g: 작은 표본 보정이 붙은 효과 크기 (0) | 2026.06.24 |
|---|---|
| Glass's Delta: 기준군 표준편차로 읽는 평균 차이 (0) | 2026.06.23 |
| Brunner-Munzel 검정: 분포 모양이 다른 두 표본 비교 (0) | 2026.06.21 |
| HTTP 204 응답: 성공인데 본문이 없는 상태 (0) | 2026.06.19 |
| Games-Howell 사후검정: 분산이 다른 그룹의 쌍별 비교 (0) | 2026.06.18 |