데이터분석

비모수 검정법

장수우 2024. 11. 6. 23:23

1. 부호 검정 (Sign Test)

부호 검정은 한 집단의 중앙값이 특정 값과 동일한지 또는 두 집단의 중앙값 차이가 유의미한지를 검정하는 비모수 방법
중앙값에 기초하여, 각 데이터가 특정 값보다 큰지, 작은지를 확인합니다.

 

## 새로운 교육 프로그램이 학생들의 점수를 올렸는지 검정하는 경우, 부호 검정을 사용
from scipy.stats import binom

# 기존 점수와 새로운 점수
before = [70, 65, 80, 75, 72]
after = [75, 67, 82, 77, 73]

# 차이 계산
diff = [a - b for a, b in zip(after, before)]

# 부호 검정 수행
positive_count = sum(1 for d in diff if d > 0)
n = len(diff)
p_value = 2 * binom.cdf(min(positive_count, n - positive_count), n, 0.5)

print(f"부호 검정 P-값: {p_value}")
  • 귀무가설: 중앙값 변화가 없다.
  • 대립가설: 중앙값이 달라졌다.
    p-값이 유의 수준보다 작으면 중앙값 변화가 유의미하다고 결론 내릴 수 있습니다.

 

2. 윌콕슨 부호 순위 검정 (Wilcoxon Signed-Rank Test)

윌콕슨 부호 순위 검정은 대응 표본에서 두 그룹 간의 차이가 유의미한지를 검정하는 방법입니다.
두 그룹 간의 차이의 순위를 사용하여 중앙값 차이가 유의미한지를 평가합니다.

## 동일한 학생들이 프로그램 전후에 달성한 점수를 비교할 때 사용
from scipy.stats import wilcoxon

# 프로그램 전후 점수
before = [70, 65, 80, 75, 72]
after = [75, 67, 82, 77, 73]

# 윌콕슨 부호 순위 검정 수행
stat, p_value = wilcoxon(before, after)

print(f"윌콕슨 부호 순위 검정 통계량: {stat}")
print(f"P-값: {p_value}")

 

  • 귀무가설: 두 집단의 중앙값 차이가 없다.
  • 대립가설: 두 집단의 중앙값 차이가 있다.

3. 만-위트니 U 검정 (Mann-Whitney U Test)

만-위트니 U 검정은 독립적인 두 집단의 중앙값이 동일한지를 검정하는 방법입니다.
두 집단 간 순위를 비교하여 차이가 유의미한지 평가합니다.

 

##남학생과 여학생 간의 시험 점수가 차이가 있는지 검정
from scipy.stats import mannwhitneyu

# 남학생과 여학생의 점수
male_scores = [75, 80, 70, 85, 78]
female_scores = [65, 68, 72, 70, 66]

# 만-위트니 U 검정 수행
stat, p_value = mannwhitneyu(male_scores, female_scores, alternative='two-sided')

print(f"만-위트니 U 검정 통계량: {stat}")
print(f"P-값: {p_value}")​

 

  • 귀무가설: 두 집단의 중앙값이 같다.
  • 대립가설: 두 집단의 중앙값이 다르다.

 

4. 크루스칼-왈리스 검정 (Kruskal-Wallis Test)

크루스칼-왈리스 검정은 세 개 이상의 독립된 집단에서 중앙값 차이가 유의미한지를 검정하는 방법입니다.
각 집단의 순위 합을 비교하여, 모든 집단 간의 차이가 유의미한지 평가합니다.

## 세 개의 다른 교육 프로그램이 학생들의 성적에 미치는 영향이 유의미한지 검정
from scipy.stats import kruskal

# 세 그룹의 점수 데이터
group1 = [70, 72, 68, 71, 69]
group2 = [75, 78, 77, 74, 76]
group3 = [80, 82, 81, 79, 83]

# 크루스칼-왈리스 검정 수행
stat, p_value = kruskal(group1, group2, group3)

print(f"크루스칼-왈리스 검정 통계량: {stat}")
print(f"P-값: {p_value}")

 

  • 귀무가설: 세 집단의 중앙값이 같다.
  • 대립가설: 적어도 하나의 집단이 다른 중앙값을 가진다.

5. 스피어만 순위 상관 검정 (Spearman’s Rank Correlation Test)

스피어만 순위 상관 검정은 두 변수 간의 비선형 관계 또는 순서 관계를 평가하는 비모수 방법입니다.

##두 종류의 시험 점수 간 상관관계를 검정
from scipy.stats import spearmanr

# 두 시험 점수 데이터
exam1_scores = [80, 78, 75, 85, 90]
exam2_scores = [82, 77, 78, 88, 92]

# 스피어만 순위 상관 검정 수행
corr, p_value = spearmanr(exam1_scores, exam2_scores)

print(f"스피어만 순위 상관계수: {corr}")
print(f"P-값: {p_value}")

 

  • 귀무가설: 두 변수 간 상관관계가 없다.
  • 대립가설: 두 변수 간 상관관계가 있다.

6. 런 검정

순서가 있는 데이터에서 패턴이나 순차적 경향이 존재하는지를 검정하는 방법

특정한 시간적 흐름이나 순서를 가진 데이터에서 무작위성을 검정할 때 사용합니다.

주로 시계열 데이터프로세스 품질 검사에서 데이터가 무작위성을 띠는지를 확인하는 데 유용

## 생산 공정에서 불량 제품이 무작위로 발생하는지 검정
from statsmodels.sandbox.stats.runs import runstest_1samp
import numpy as np

# 예시 데이터 (1은 불량, 0은 양품)
production_data = [1, 0, 0, 1, 0, 1, 1, 0, 0, 1, 0, 1, 1, 0, 0]

# 런 검정 수행 (중앙값 기준으로 양성/음성 나누기)
z_stat, p_value = runstest_1samp(production_data, correction=True)

print(f"런 검정 통계량: {z_stat}")
print(f"P-값: {p_value}")

 

 

  • 귀무가설: 데이터가 무작위적이다.
  • 대립가설: 데이터에 패턴이 존재한다.

 

반응형