Cute Hello Kitty 3
본문 바로가기
Data/통계

비모수 검정 모수 검정 비교 / 윌콕슨 순위합 검정 / 맨휘트니 U 검정 / 브루너 문젤 검정 / 크루스칼 왈리스 검정

by 민 채 2025. 4. 8.
 
 
 

 

LS 빅데이터 스쿨에서 비모수 검정에 대해 배웠습니다. 

 

비모수 검정이란?

비모수 검정은 데이터가 특정 분포(예: 정규분포)를 따른다는 가정을 하지 않고도
중앙값 또는 순위 기반으로 집단 간 차이를 검정하는 방법입니다.

 

언제 사용?

사용해야 하는 상황 이유
정규성 가정이 깨졌을 때 평균 대신 중앙값이나 순위를 비교
표본의 수가 작고 이상치가 많을 때 평균이 왜곡되기 쉬움
등분산성도 만족하지 않을 때 모수 검정(ANOVA, t-test 등)이 부적합
  • 즉, 모수 검정을 할 수 없을 때 사용합니다.
  • 표본의 수가 적어서 중심극한정리가 적용되지 않을 때, 
  • 이상치가 많을 때,
  • 평균 개념이 성립하지 않을 때 주로 사용합니다.

 

2025.04.04 - [Data] - LS 빅데이터 스쿨 / 정규성 검정 / Shapiro-Wilk / Anderson-Darling / Kolmogorov–Smirnov / Q-Q Plot

 

LS 빅데이터 스쿨 / 정규성 검정 / Shapiro-Wilk / Anderson-Darling / Kolmogorov–Smirnov / Q-Q Plot

정규성 검정(Normality Test) 이란?정규성 검정은 데이터가 정규분포를 따르는지를 검정하는 과정입니다.많은 통계 기법(Z-test, t-test 등)은 정규분포를 전제로 하기 때문에, 분석 전에 정규성을 검정

kiminchae.tistory.com

참고: 정규성 검정을 활용하면 내가 가진 데이터가 정규 분포를 따르는 지 확인할 수 있습니다.

 

모수 검정 vs 비모수 검정

항목 모수 검정 비모수 검정
전제 조건 정규성, 등분산성 등 필요 별다른 분포 가정 없음
데이터 기준 평균 비교 중앙값 또는 순위 비교
예시 t-test, ANOVA Mann–Whitney U, Kruskal–Wallis
이상치에 대한 민감도 민감함 덜 민감함
데이터의 크기 영향을 받음 민감하지 않음
검정력 높음 모수 검정보다 낮음

비모수 검정은 평균을 사용하지 않고 중앙값을 사용한다는 특징이 있습니다.

 

중앙값을 사용하는 이유

group = [3, 4, 4, 5, 100]  # 이상치 100

평균 = (3 + 4 + 4 + 5 + 100) / 5 = 23.2
중앙값 = 4

이상치 100이 존재할 경우, 평균은 23.2 로 확 올라버립니다. 즉, 평균은 이상치에 민감합니다.

하지만, 중앙값은 이상치에 민감하지 않는 모습을 볼 수 있습니다. 그래서 이상치가 존재하는 비모수 검정에서는 평균이 아닌 중앙값을 사용합니다.

 

비모수 검정의 장점

1. 분포가정이 없다
2. 이상치에 민감하지 않다.
3. 데이터의 크기에 구애받지 않는다.

단, 검정력은 모수 검정이 더 좋다.

 

모수검정 - 비모수검정 대응표

목적 모수 검정 비모수 검정 등분산성 고려
📊 1개의 집단 평균 비교 1표본 t-검정 윌콕슨 순위합 검정 (Wilcoxon signed-rank) 등분산 불필요
🔍 2개 독립 집단 비교 독립 2표본 t-검정 (등분산 O) 맨휘트니 U 검정 (Mann–Whitney U) ✔️ Levene 검정
🔍 2개 독립 집단 비교 독립 2표본 t-검정 (등분산 ❌) 브루너-문젤 검정 (Brunner–Munzel) ❌ 등분산 X 허용
🔄 짝지은 집단 비교 대응표본 t-검정 윌콕슨 부호 순위 검정 (Wilcoxon signed-rank) 등분산 불필요
🔁 3개 이상 집단 비교 일원분산분석 (ANOVA) 크루스칼-왈리스 검정 (Kruskal–Wallis) ✔️ Levene 검정 권장

 

  • 비모수 검정은 정규성 없이도 비교가 가능하도록 설계된 "대안 검정"
  • 모수 검정이 평균 기반이라면, 비모수는 중앙값 또는 순위 기반
  • 비교 대상(1집단, 2집단, 짝지음, 3집단 이상)에 따라 각각 대응되는 비모수 검정이 있음

 

 


대표적인 비모수 검정

1.  윌콕슨 순위합 검정 (1표본 t-검정 대체)

  • 한 그룹의 중앙값이 특정 값과 다른가?
  • 예: 교육 전과 후 점수 변화가 있는가?
from scipy.stats import wilcoxon

before = [71, 69, 70, 68, 72]
after = [75, 74, 73, 72, 76]
stat, p = wilcoxon(np.array(after) - np.array(before))
print(f"Wilcoxon 결과: p-value = {p:.4f}")

 

2. 맨휘트니 U 검정 (독립 2표본 t-검정)

  • 두 독립 그룹의 중앙값이 같은가?
  • 예: 남자와 여자의 수면 시간 차이
from scipy.stats import mannwhitneyu

group1 = [6.8, 7.1, 6.9, 7.0, 6.7]
group2 = [7.5, 7.6, 7.3, 7.8, 7.4]
stat, p = mannwhitneyu(group1, group2, alternative='two-sided')
print(f"Mann–Whitney U 결과: p-value = {p:.4f}")

 

3. 브루너-문젤 검정 (독립 2표본 t-검정)

  • 등분산성이 없는 상황에서의 두 집단 비교
  • 예: 환경이 다른 두 공장의 제품 품질 비교
from scipy.stats import brunnermunzel

group1 = [5.2, 5.5, 5.1, 5.4]
group2 = [6.7, 7.1, 7.0, 6.8]
stat, p = brunnermunzel(group1, group2)
print(f"Brunner–Munzel 결과: p-value = {p:.4f}")

 

4. 크루스칼–왈리스 검정 (ANOVA 대체)

  • 3개 이상의 그룹의 중앙값이 동일한가?
from scipy.stats import kruskal

groupA = [50, 52, 48, 51]
groupB = [60, 62, 58, 59]
groupC = [70, 68, 72, 71]
stat, p = kruskal(groupA, groupB, groupC)
print(f"Kruskal–Wallis 결과: p-value = {p:.4f}")