비모수 독립 표본 검정: 순위와 분포로 집단 차이 판단하기
Mann-Whitney U, Kruskal-Wallis, Kolmogorov-Smirnov 검정의 선택 기준과 순위·분포 기반 해석, 운영 주의점을 정리한다.
2026-08-14 · 최초 발행 2024-04-29
순위와 경험적 분포로 독립 집단을 비교하는 방법
정규성 가정을 두기 어려운 데이터에서는 독립 집단의 차이를 순위나 경험적 누적분포(ECDF)로 검정할 수 있다. 비모수 독립 검정은 분포 형태에 대한 가정을 최소화하면서 위치(중앙값) 또는 분포 전체의 차이를 판단한다.
통계량은 순위나 ECDF에서 계산하며, 표본 크기가 충분하면 근사 정규분포·카이제곱분포·콜모고로프 분포를 이용한다. 연속형과 서열형 데이터에 적용할 수 있고, 극단값의 영향을 줄이는 데 유리하다.
위치 차이와 분포 차이에 맞춰 검정을 고른다
Mann-Whitney U: 집단 간 위치 차이를 비교할 때
Mann-Whitney U 검정은 두 독립 집단 사이의 위치 차이를 다룬다. 두 집단의 분포 모양과 분산이 같다는 조건에서는 중위수 차이로 해석할 수 있다.
전체 관측값에 순위를 부여한 뒤 집단별 순위합으로 U 통계량을 계산하고, 정확법 또는 정규 근사로 p-값을 구한다. 동률(ties)이 있으면 평균순위를 배정하고 분산을 보정해야 한다.
연속형 또는 서열형 데이터에 쓸 수 있으며 표본수가 작아도 적용하기 쉽다. 결과에는 효과크기 r 또는 클리프 델타(Cliff’s delta)를 함께 보고하는 방식이 권장된다.
Kruskal–Wallis H: 여러 독립 집단의 위치를 함께 볼 때
Kruskal–Wallis H 검정은 3개 이상 독립 집단의 위치 차이를 검정한다. 집단 간 분포 모양이 같다고 가정할 수 있다면 중앙 위치 비교로 해석할 수 있다.
모든 관측값을 순위화한 뒤 집단별 순위합에서 H 통계량을 구하고, 카이제곱 근사로 p-값을 산출한다. 유의한 결과가 나왔다면 Dunn(또는 Conover) 사후 검정과 다중비교 보정이 이어져야 한다.
불균형한 표본 크기도 허용하며 극단값에 강인하다. 효과크기로는 ε² 또는 η²(H)를 제시할 수 있다.
Kolmogorov–Smirnov 2표본: 분포 전반의 차이를 찾을 때
Kolmogorov–Smirnov 2표본 검정은 두 독립 표본의 분포가 전반적으로 같은지 확인한다. 위치뿐 아니라 분산, 꼬리 형태처럼 분포의 여러 구간에서 발생하는 차이에 민감하다.
두 표본의 ECDF 사이 최대 수직거리 D를 구한 다음 표본 크기를 반영한 KS 분포로 p-값을 계산한다. 이산 데이터이거나 동률이 많으면 p-값이 보수적으로 나오는 경향이 있다.
분포 모양 자체의 변화를 탐지하는 데 적합하다. D 또는 AUC(상관 해석 가능)를 보조 효과크기 지표로 보고할 수 있다.
선택부터 결과 보고까지의 흐름
Mann-Whitney U에서는 독립 표본 X, Y와 대립방향(two-sided/greater/less)을 입력한다. 전체 순위화, U 계산, 동률 보정, 정확 또는 근사 p-값 산출을 거쳐 U, p-값, 효과크기 r=|Z|/√N, 델타 δ를 결과로 남긴다.
Kruskal–Wallis H에는 k개 독립 표본과 사후 비교 계획이 필요하다. 전체 순위화와 H 산출 뒤 카이제곱 근사 p-값을 구하고, 유의하면 Dunn 사후 검정과 다중비교 보정(Holm/Benjamini-Hochberg)을 적용한다. H, p-값, ε² 또는 η²(H), 사후 쌍비교 결과가 산출물이다.
KS 2표본 검정은 두 독립 표본과 양측 또는 단측 설정을 입력으로 받는다. 두 ECDF의 최대 거리 D를 구하고 KS 분포에서 p-값을 산출한다. 이산값이 많다면 보수적으로 해석하거나 퍼뮤테이션을 보조 수단으로 검토한다. 결과에는 D, p-값, 차이 위치(ECDF 교차점), 보조 지표(AUC)를 포함한다.
검정별 해석과 운영 조건
| 항목 | Mann-Whitney U | Kruskal–Wallis H | KS 2-sample |
|---|---|---|---|
| 대상 | 2개 독립 집단 | 3개 이상 독립 집단 | 2개 독립 집단 |
| 귀무가설 | 위치 차이 없음(동일 분포 가정 시) | 위치 차이 없음 | 분포 동일 |
| 민감도 | 위치 변화에 강함 | 위치 변화에 강함 | 분포 모양 전반에 민감 |
| 정규성/등분산 | 불필요, 모양 유사 시 해석 용이 | 불필요, 모양 유사 가정 권장 | 불필요, 연속형 가정 우호적 |
| 표본수 가이드 | n1,n2 ≥ 20 시 근사 안정 | 각 집단 n ≥ 5~10 권장 | n ≥ 20 권장, 이산값 많으면 보수적 |
| 동률 처리 | 평균순위 + 분산 보정 | 평균순위 + 보정 | p-값 보수적 경향 |
| 효과크기 | r, Cliff’s δ, AUC | ε², η²(H) | D, AUC |
| 계산복잡도 | O(N log N) | O(N log N) | O(N log N) |
| 사후 검정 | 해당 없음 | Dunn/Conover + 보정 | 해당 없음 |
제품 지표와 운영 데이터에서의 적용
매출, 체류시간, 클릭수처럼 꼬리가 두꺼운 A/B 테스트 KPI는 Mann-Whitney U로 비교할 수 있다. 로그변환이 실패한 경우에도 순위 기반 검정으로 강건하게 판단할 수 있다.
세 버전 이상인 프로덕트의 응답시간 중앙값을 비교할 때는 Kruskal–Wallis를 적용하고, 유의하면 Dunn 사후 검정으로 쌍대 비교를 수행한다.
모델 점수 분포의 칼리브레이션 비교나 센서 값 드리프트 탐지에는 KS 검정이 맞는다. ECDF 차이가 발생한 위치를 보면 운영 임계치 조정의 근거를 얻을 수 있다.
n이 작고 이상치가 존재하는 임상 또는 제조 데이터에서는 위치 검정에 Mann-Whitney를, 여러 집단 비교에는 Kruskal–Wallis를 우선 적용할 수 있다.
Python SciPy로 실행하기
전제조건. Python 3.10+, scipy >= 1.10, numpy 설치.
import numpy as np
from scipy.stats import mannwhitneyu, kruskal, ks_2samp
# 예시 데이터
np.random.seed(42)
A = np.random.lognormal(mean=0.0, sigma=1.0, size=60)
B = np.random.lognormal(mean=0.2, sigma=1.0, size=55)
C = np.random.lognormal(mean=0.4, sigma=1.0, size=50)
# 1) Mann-Whitney U (양측)
u_stat, p_u = mannwhitneyu(A, B, alternative='two-sided', method='auto') # auto: exact/근사 자동 선택
print(f"Mann-Whitney U={u_stat:.1f}, p={p_u:.4f}")
# 2) Kruskal–Wallis H
h_stat, p_h = kruskal(A, B, C)
print(f"Kruskal–Wallis H={h_stat:.3f}, p={p_h:.4f}")
# 3) KS 2-sample (양측)
d_stat, p_ks = ks_2samp(A, B, alternative='two-sided', mode='auto')
print(f"KS D={d_stat:.3f}, p={p_ks:.4f}")
method='auto' 또는 mode='auto'를 사용하면 소표본에서는 정확법, 대표본에서는 근사법을 자동 선택하도록 구성할 수 있다. 사후 검정에는 scikit-posthocs의 sp.posthoc_dunn을 적용할 수 있으며, p값 보정 방식으로 Holm/Sidak/Benjamini-Hochberg를 고려한다.
결과를 신뢰할 수 있게 만드는 점검 항목
검정 전에 독립성을 확인하고 중복, 결측, 동률 비율을 점검해야 한다. 단측과 양측 검정의 선택도 사전에 등록한다.
p-값만으로 판단하지 않고 r/δ/ε²/D 등의 효과크기를 함께 제시하며, 신뢰구간을 포함하는 방식이 권장된다. Kruskal–Wallis 결과가 유의할 때 Dunn 사후 검정과 다중비교 보정을 표준 절차로 두면 결과 해석을 일관되게 운영할 수 있다.
분포 모양이 다른 경우 Mann-Whitney 결과를 “중위수 차이”로 해석하기 어려울 수 있다. 정규성과 등분산이 확실한 상황에서는 대응하는 모수 검정보다 검정력이 열위일 가능성도 있다. KS는 이산값과 동률이 많은 데이터에서 p-값이 보수적일 수 있으므로 퍼뮤테이션 또는 Brunner–Munzel 등의 대안을 검토할 필요가 있다.
강건한 판단 절차로 이어지는 효과
이상치와 비정규 환경에서 유형 I 오류율을 안정화해 운영 리스크를 줄일 수 있다. 입력→처리→출력 절차를 표준화하면 재현성이 높아지고, 사후 검정을 포함한 전 주기 자동화도 쉬워진다.
계산은 O(N log N) 정렬 기반이므로 대규모 로그와 이벤트 데이터에도 실시간 적용할 수 있으며, 메모리는 O(N) 수준으로 관리한다.