Summary

두 독립 집단의 분포를 비교하는 비모수 검정. Independent t-test의 비모수 대안으로, 순위(rank)를 기반으로 검정한다. 정규성 가정이 위반되거나 순서형 데이터에 적합.

용어 설명

  • 순위 (Rank): 데이터를 크기순으로 나열했을 때의 위치 번호. 가장 작은 값 = 1위. 같은 값이 있으면 평균 순위 부여
  • 순서 척도 (Ordinal scale): 크기의 순서는 있지만 간격이 동일하지 않은 데이터 (예: Likert 척도 “매우 불만족~매우 만족”)
  • 비모수 검정 (Non-parametric test): 정규분포 가정 없이 순위를 이용하는 검정. 이상치에 강건
  • 순위합 (Rank sum, R): 각 집단에 속한 데이터들의 순위를 모두 더한 값

Mann-Whitney U Test

언제 사용하는가?

  • Independent t-test 대안: 정규성 가정 위반, 소표본
  • 순서형 데이터: Likert 척도 등 연속이 아닌 순서형
  • 극단값/이상치: 평균보다 중위수가 적절할 때

통계 검정법 개요 의사결정 플로우차트 참조


검정 원리

  1. 두 집단의 데이터를 합쳐서 순위(rank) 부여
  2. 각 집단의 순위합(R₁, R₂)을 계산
  3. U 통계량 계산

수식 변수 풀이

  • : 각 집단의 표본 크기
  • : 각 집단의 순위합 — 합친 데이터에서 해당 집단에 속한 값들의 순위를 모두 더한 것
  • : 각 집단의 U 통계량 — “집단 1의 값이 집단 2의 값보다 큰 쌍의 수”로 해석 가능
  • : 둘 중 작은 값을 검정에 사용
  • : H₀ 하에서 U의 기대값 (두 집단이 동일하면 U가 이 값 근처)
  • : U의 표준편차 — 대표본 정규근사에 사용
  • 대표본 (n₁, n₂ > 20): 정규근사

Example

집단 A: [3, 5, 7, 9] (n₁=4)
집단 B: [2, 4, 6, 12] (n₂=4)

합쳐서 순위: 2→1, 3→2, 4→3, 5→4, 6→5, 7→6, 9→7, 12→8

R_A = 2+4+6+7 = 19, R_B = 1+3+5+8 = 17


가정

가정설명
독립 표본두 집단이 독립적
순서 척도 이상최소 순서형 (서열 비교 가능)
동일 분포 형태두 집단의 분포 형태가 유사 (위치 이동만 검정)

주의

Mann-Whitney는 엄밀히 “중위수의 차이”가 아니라 **“한 집단의 값이 다른 집단보다 클 확률”**을 검정한다. 두 분포의 형태가 다르면 해석에 주의.


가설

  • : 두 집단의 분포가 동일하다 (P(X > Y) = 0.5)
  • : 한 집단의 값이 다른 집단보다 확률적으로 크다/다르다

Effect Size: rank-biserial correlation

또는

수식 변수 풀이

  • : rank-biserial correlation — 효과 크기. −1~1 범위
  • : Mann-Whitney U 통계량
  • : 정규근사 z-값
  • : 전체 관측치 수 ()
  • 직관: r = 0이면 두 집단 동일, |r| = 1이면 완전히 분리
r 값해석
0.1Small
0.3Medium
0.5Large

Implementation

from scipy import stats
import pingouin as pg
 
# === scipy ===
u_stat, p = stats.mannwhitneyu(group1, group2, alternative='two-sided')
print(f"U={u_stat:.1f}, p={p:.4f}")
 
# effect size (rank-biserial r)
import numpy as np
n1, n2 = len(group1), len(group2)
r = 1 - (2 * u_stat) / (n1 * n2)
print(f"rank-biserial r = {r:.3f}")
 
# === pingouin (자동 effect size) ===
result = pg.mwu(group1, group2, alternative='two-sided')
print(result[['U-val', 'p-val', 'RBC', 'CLES']])
# RBC = rank-biserial correlation
# CLES = Common Language Effect Size (P(X>Y))

관련 문서