실험 분석에서의 비모수 검정 적용

Python으로 배우는 실험 설계

James Chapman

Curriculum Manager, DataCamp

비모수 검정을 사용할 때

 

  • 모수 검정 가정 불충족
  • 순서형 데이터 또는 비정규 분포
  • 이상치·비선형 데이터에 견고함

왜도 있는 분포

Python으로 배우는 실험 설계

비모수 방법 살펴보기

 

  • 전통적 가정을 충족하지 않는 데이터용 비모수 방법
  • Mann-Whitney U 검정: 두 독립 집단 비교
  • Kruskal-Wallis 검정: 두 개 초과 집단 비교

비정규 분포

Python으로 배우는 실험 설계

비모수 데이터 시각화

  • 바이올린 플롯: 집단별 분포 시각화
condensed_data = mineral_rocks[mineral_rocks['RockType'].isin(['Igneous', 'Metamorphic'])]

sns.violinplot(x='RockType', y='MineralHardness', data=condensed_data)

암석 유형별 광물 경도 바이올린 플롯(화성암 vs 변성암)

Python으로 배우는 실험 설계

비모수 데이터 시각화

  • 박센 플롯: 분포 형태를 더 잘 파악
sns.boxenplot(x='RockType', y='MineralHardness', data=mineral_rocks)

암석 유형별 광물 경도 분포 박센 플롯

Python으로 배우는 실험 설계

비모수 검정 적용 - Mann-Whitney U

from scipy.stats import mannwhitneyu, kruskal
u_stat, u_pval = mannwhitneyu(
    mineral_rocks[mineral_rocks['RockType'] == 'Igneous']['MineralHardness'],
    mineral_rocks[mineral_rocks['RockType'] == 'Sedimentary']['MineralHardness']
)

print(f"Mann-Whitney U test p-value: {u_pval:.4f}")
Mann-Whitney U test p-value: 0.9724
Python으로 배우는 실험 설계

비모수 검정 적용 - Kruskal-Wallis

k_stat, k_pval = kruskal(
    mineral_rocks[mineral_rocks['RockType'] == 'Igneous']['MineralHardness'],
    mineral_rocks[mineral_rocks['RockType'] == 'Sedimentary']['MineralHardness'],
    mineral_rocks[mineral_rocks['RockType'] == 'Metamorphic']['MineralHardness']
)

print(f"Kruskal-Wallis test p-value: {k_pval:.4f}")
Kruskal-Wallis test p-value: 0.0630
Python으로 배우는 실험 설계

연습해 봅시다!

Python으로 배우는 실험 설계

Preparing Video For Download...