데이터분석
정규성 검정(Normality Tests)
DEDS
2025. 4. 8. 15:20
728x90
T-검정, 회귀분석, ANOVA 같은 통계 분석에서 데이터가 정규분포(normal distribution)를 따른다는 가정은 매우 핵심적입니다. 이 정규성(normality)을 확인하는 방법에는 통계적 검정과 시각화 두 가지가 있습니다.
정규성 검정 방법
방법 | 설명 | 함수 |
Shapiro-Wilk Test | 샘플이 정규분포인지 확인하는 가장 널리 쓰이는 방법 일반적인 정규성 검정 (n < 5000) |
scipy.stats.shapiro() |
Kolmogorov–Smirnov Test | 표본 분포와 정규분포 비교 (샘플 많을 때) | scipy.stats.kstest() |
Anderson-Darling Test | 여러 분포 비교 지원, 더 정밀 | scipy.stats.anderson() |
QQ Plot (시각화) | 이론적인 정규분포와 실제 데이터 비교 | statsmodels.api.qqplot() |
Shapiro-Wilk 정규성 검정 코드
import numpy as np
from scipy.stats import shapiro
data = [72, 74, 71, 69, 73, 75, 70, 68, 72, 74] # 예시 데이터
stat, p = shapiro(data)
print(f"Shapiro-Wilk test 통계량: {stat:.4f}, p-value: {p:.4f}")
if p > 0.05:
print("정규분포를 따른다고 볼 수 있음")
else:
print("정규분포를 따른다고 보기 어려움")
Shapiro-Wilk test 통계량: 0.9611, p-value: 0.7986 정규분포를 따른다고 볼 수 있음
해석
- p-value > 0.05 → 정규분포를 따른다고 볼 수 있음 (귀무가설 채택)
- p-value < 0.05 → 정규분포를 따른다고 보기 어려움 (귀무가설 기각)
QQ Plot
import matplotlib.pyplot as plt
import statsmodels.api as sm
sm.qqplot(np.array(data), line='s')
plt.title("QQ Plot - 정규성 확인")
plt.grid(True)
plt.show()
점들이 대각선에 잘 정렬되어 있으면 정규성 있음
728x90