정규성 검정(Normality Test)은 주어진 데이터가 정규 분포를 따르는지 여부를 확인하는 통계적 방법입니다. 정규 분포는 많은 통계 분석 방법의 기본 가정 중 하나로, 이를 확인하는 것이 중요합니다. 정규성 검정을 통해 데이터의 정규성을 확인하면 올바른 분석 방법을 선택할 수 있습니다.
\(\)
정규성 검정의 중요성
- 통계적 가정 확인: 회귀 분석, t-검정 등 많은 통계적 방법은 데이터가 정규 분포를 따른다는 가정을 기반으로 합니다.
- 데이터 변환: 데이터가 정규 분포를 따르지 않는 경우, 적절한 변환(예: 로그 변환)을 통해 정규성 가정을 만족시킬 수 있습니다.
- 분석의 정확성: 정규성 가정을 만족하는 데이터는 통계 분석 결과의 신뢰성을 높여줍니다.
시각적 방법
1. 히스토그램 (Histogram)
- 설명: 데이터의 분포를 시각적으로 확인할 수 있습니다.
- 사용 방법: 데이터의 히스토그램을 그려서 종 모양의 정규 분포와 비교합니다.
2. Q-Q 플롯 (Quantile-Quantile Plot)
- 설명: 데이터의 분포와 정규 분포의 이론적 분포를 비교합니다.
- 사용 방법: Q-Q 플롯을 그려서 점들이 대각선에 가깝게 분포하는지 확인합니다.
통계적 방법
1. 샤피로-윌크 검정 (Shapiro-Wilk Test)
- 설명: 데이터가 정규 분포를 따르는지 검정하는 가장 일반적인 방법 중 하나입니다.
- 사용 방법: 귀무 가설(H0)은 데이터가 정규 분포를 따른다는 것이며, p-값이 유의 수준(예: 0.05)보다 작으면 귀무 가설을 기각합니다.
2. 앤더슨-달링 검정 (Anderson-Darling Test)
- 설명: 샤피로-윌크 검정보다 정규성에서 벗어난 데이터를 더 잘 감지할 수 있습니다.
- 사용 방법: 귀무 가설(H0)은 데이터가 정규 분포를 따른다는 것이며, 검정 통계량이 임계값보다 크면 귀무 가설을 기각합니다.
3. 콜모고로프-스미르노프 검정 (Kolmogorov-Smirnov Test)
- 설명: 데이터와 참조 분포(정규 분포)를 비교하는 비모수 검정입니다.
- 사용 방법: 귀무 가설(H0)은 데이터가 참조 분포를 따른다는 것이며, p-값이 유의 수준보다 작으면 귀무 가설을 기각합니다.
4. 자비스-베라 검정 (Jarque-Bera Test)
- 설명: 데이터의 왜도와 첨도를 이용해 정규성을 검정합니다.
- 사용 방법: 귀무 가설(H0)은 데이터가 정규 분포를 따른다는 것이며, p-값이 유의 수준보다 작으면 귀무 가설을 기각합니다.
정규성 검정 예시 코드 (Python)
import numpy as np
import scipy.stats as stats
import matplotlib.pyplot as plt
# 샘플 데이터 생성
data = np.random.normal(0, 1, 100)
# 히스토그램
plt.hist(data, bins=30, alpha=0.5, color='blue', density=True)
plt.title('Histogram')
plt.show()
# Q-Q 플롯
stats.probplot(data, dist="norm", plot=plt)
plt.title('Q-Q Plot')
plt.show()
# 샤피로-윌크 검정
shapiro_test = stats.shapiro(data)
print(f"Shapiro-Wilk Test: Statistic={shapiro_test.statistic}, p-value={shapiro_test.pvalue}")
# 앤더슨-달링 검정
anderson_test = stats.anderson(data, dist='norm')
print(f"Anderson-Darling Test: Statistic={anderson_test.statistic}, Critical Values={anderson_test.critical_values}")
# 콜모고로프-스미르노프 검정
ks_test = stats.kstest(data, 'norm')
print(f"Kolmogorov-Smirnov Test: Statistic={ks_test.statistic}, p-value={ks_test.pvalue}")
# 자비스-베라 검정
jb_test = stats.jarque_bera(data)
print(f"Jarque-Bera Test: Statistic={jb_test[0]}, p-value={jb_test[1]}")
이러한 방법들을 통해 데이터가 정규 분포를 따르는지 검정할 수 있습니다. 시각적 방법과 통계적 방법을 함께 사용하면 보다 정확한 결론을 도출하는 데 도움이 됩니다.

위 그림은 데이터의 히스토그램과 정규 분포 곡선을 함께 나타낸 예시입니다.
구성 요소:
- 히스토그램:
- 파란색 막대는 데이터의 빈도를 나타내며, 데이터를 여러 구간으로 나누어 각 구간에 속하는 데이터 포인트의 수를 시각적으로 보여줍니다.
- 정규 분포 곡선:
- 검정색 곡선은 동일한 평균과 표준 편차를 가지는 정규 분포 곡선을 나타냅니다.
- 데이터가 정규 분포를 따를 경우, 히스토그램의 형태가 이 곡선과 유사해야 합니다.
해석:
- 데이터의 정규성:
- 히스토그램이 정규 분포 곡선과 얼마나 일치하는지를 시각적으로 확인할 수 있습니다.
- 데이터가 정규 분포를 따른다면, 히스토그램은 종 모양을 나타내며 정규 분포 곡선과 유사한 형태를 가지게 됩니다.
이 히스토그램과 정규 분포 곡선은 데이터의 정규성을 시각적으로 평가하는 데 유용한 도구입니다. 이를 통해 데이터가 정규 분포를 따르는지 여부를 직관적으로 파악할 수 있습니다.

위 그림은 데이터의 Q-Q 플롯(Quantile-Quantile Plot) 예시입니다.
구성 요소:
1. Q-Q 플롯:
- Q-Q 플롯은 데이터의 분포와 이론적 정규 분포를 비교하여 정규성을 평가하는 도구입니다.
- x축은 이론적 정규 분포의 분위수(quantiles)를 나타내며, y축은 실제 데이터의 분위수를 나타냅니다.
2. 대각선:
- 대각선은 데이터가 정규 분포를 따를 경우 점들이 위치해야 할 위치를 나타냅니다.
- 점들이 대각선에 가까울수록 데이터가 정규 분포에 잘 부합합니다.
해석:
- 정규성 평가:
- 점들이 대각선에 가까이 위치하면 데이터가 정규 분포를 따른다는 것을 시사합니다.
- 점들이 대각선에서 크게 벗어나 있으면 데이터가 정규 분포를 따르지 않는다는 것을 나타냅니다.
Q-Q 플롯은 데이터의 정규성을 시각적으로 평가하는 데 매우 유용한 도구입니다. 이 플롯을 통해 데이터가 정규 분포를 따르는지 여부를 직관적으로 파악할 수 있습니다.