비모수 검정은 데이터가 정규분포를 따른다는 가정 없이 사용할 수 있는 검정 방법입니다.
데이터의 실제 값 대신 순위(rank)를 기반으로 분석하기 때문에, 이상값의 영향을 덜 받고 소표본에서도 적용할 수 있습니다.
Wilcoxon Rank Sum Test (Mann-Whitney U Test)
언제 사용하는가
독립적인 두 집단의 분포가 같은지(중앙값 차이가 있는지) 비교할 때 사용합니다. 모수 검정의 독립 표본 t-검정에 대응하는 비모수 검정입니다. 데이터가 정규분포를 따르지 않거나, 표본 크기가 작거나, 이상값이 있는 경우에 선택합니다.
Wilcoxon rank sum test와 Mann-Whitney U test는 동일한 검정입니다. 동일한 통계 이론을 기반으로 하며 결과도 같습니다. 명칭만 다를 뿐입니다.
동작 원리
두 집단의 모든 관측값을 합쳐서 크기 순으로 순위를 매깁니다. 그 다음 각 집단이 차지하는 순위의 합을 계산합니다. 만약 두 집단의 분포가 동일하다면 순위의 합이 비슷하게 나와야 합니다. 한 집단이 일관되게 높은 순위를 차지한다면 두 집단의 분포가 다르다는 증거가 됩니다.
- H₀: 두 집단의 분포가 동일하다 (중앙값에 차이가 없다)
- H₁: 두 집단의 분포가 다르다
R 코드
wilcox.test(x, y) # 기본 (양측 검정)
wilcox.test(x, y, alternative = "greater") # 단측 검정
wilcox.test(x, y, conf.int = TRUE) # 신뢰구간 함께 출력
결과에서 W가 검정 통계량이고, p-value로 유의성을 판단합니다.
동점(tie)이 있는 경우 정확한 p-value 계산이 복잡해집니다.
동점이 많으면 exact = FALSE를 지정해서 정규 근사를 사용합니다.
Wilcoxon Signed-Rank Test
언제 사용하는가
대응하는 두 측정값(동일 대상의 처리 전후, 짝지어진 두 샘플) 간의 차이를 검정할 때 사용합니다.
모수 검정의 대응 표본 t-검정에 대응하는 비모수 검정입니다.
Wilcoxon rank sum test는 두 독립 집단을 비교하고, Wilcoxon signed-rank test는 대응된 쌍을 비교합니다. 이름이 비슷해서 혼동하기 쉽지만 사용 상황이 다릅니다.
동작 원리
각 쌍에서 두 값의 차이를 계산합니다. 차이가 0인 쌍은 제외하고, 차이의 절댓값에 순위를 매깁니다.
양의 차이와 음의 차이 각각의 순위 합을 계산해서 검정 통계량 W를 구합니다.
처리 효과가 없다면 양의 순위 합과 음의 순위 합이 비슷해야 합니다.
- H₀: 두 측정값 간의 차이의 중앙값이 0이다 (차이가 없다)
- H₁: 두 측정값 간의 차이의 중앙값이 0이 아니다
R 코드
wilcox.test(before, after, paired = TRUE)
paired = TRUE를 지정하는 것이 핵심입니다.
빠뜨리면 독립 표본 검정인 rank sum test로 실행됩니다.
Kruskal-Wallis Test
언제 사용하는가
세 집단 이상의 분포를 동시에 비교할 때 사용합니다.
모수 검정의 One-way ANOVA에 대응하는 비모수 검정입니다.
ANOVA의 정규성 또는 등분산성 가정이 충족되지 않을 때 선택합니다.
동작 원리
Wilcoxon rank sum test와 마찬가지로 모든 집단의 데이터를 합쳐 순위를 매깁니다.
집단별 평균 순위를 계산하고, 집단 간 평균 순위의 차이가 우연히 발생할 수 있는 수준인지를 검정합니다.
검정 통계량 H는 카이제곱 분포를 따릅니다.
- H₀: 모든 집단의 분포가 동일하다
- H₁: 적어도 하나의 집단이 다른 분포를 가진다
R 코드
kruskal.test(y ~ group, data = df)
사후 검정
Kruskal-Wallis test에서 유의한 결과(p < 0.05)가 나오면 어느 집단 간에 차이가 있는지 파악하기 위해 사후 검정을 수행합니다.
비모수 사후 검정으로는 Dunn test가 일반적으로 사용됩니다.
Dunn test는 각 집단 쌍을 비교하며, 다중 검정 보정(Bonferroni 또는 BH-FDR)을 함께 적용합니다.
# dunn.test 패키지 사용
dunn.test::dunn.test(y, group, method = "bonferroni")
dunn.test::dunn.test(y, group, method = "bh")
# FSA 패키지 사용
FSA::dunnTest(y ~ group, data = df, method = "bonferroni")
비모수 검정 비교 정리
| 검정 | 대응하는 모수 검정 | 사용 상황 |
| Wilcoxon rank sum test | 독립 표본 t-검정 | 독립적인 두 집단 비교 |
| Wilcoxon signed-rank test | 대응 표본 t-검정 | 대응된 두 측정값 비교 |
| Kruskal-Wallis test | One-way ANOVA | 세 집단 이상 비교 |
세 검정 모두 순위 기반이며, 정규분포 가정이 필요 없습니다.
모수 검정의 가정이 충족된다면 모수 검정이 검정력이 더 높습니다.
비모수 검정은 가정이 충족되지 않을 때 더 신뢰할 수 있는 결과를 줍니다.
'BI&Programming-Tools > 통계' 카테고리의 다른 글
| [통계적 추론] 6. 상관 분석 (0) | 2026.07.04 |
|---|---|
| [통계적 추론] 5. 모수 검정 (t-검정) (0) | 2026.07.04 |
| [통계적 추론] 3. 통계 분석 기법 선택 (0) | 2026.07.02 |
| [통계적 추론] 2. 결과 해석의 기초 (0) | 2026.07.01 |
| [통계적 추론] 1. 통계의 기본 개념 (0) | 2026.07.01 |
