본문 바로가기
Statistics

Z-Test와 P-Value 완전 정복: ML/DL 활용법까지

by markbyun 2025. 6. 16.

Z-test와 P-value의 개념, 계산 방법, 머신러닝과 딥러닝에의 응용 사례 및 파이썬 코드 예제를 자세히 설명합니다.

Z-Test란?

z-test는 모집단 평균과 표본 평균 간의 유의미한 차이가 있는지를 검정하는 통계적 가설 검정 방법입니다. 모집단의 분산이 알려져 있고 표본 크기가 충분히 클 경우(n > 30)에 적합합니다.

귀무가설 (Null Hypothesis, $H_0$)은 일반적으로 "차이가 없다", "영향이 없다"는 전제를 의미하며, 검정의 출발점이 됩니다. 대립가설 (Alternative Hypothesis, $H_1$)은 반대로 차이가 있다는 주장입니다. 통계적 검정은 수집된 데이터로부터 귀무가설을 기각할 수 있을 만큼의 증거가 있는지를 확인하는 과정입니다.

공식:

$ z = \frac{\bar{x} - \mu}{\sigma / \sqrt{n}} $

  • $\bar{x}$: 표본 평균
  • $\mu$: 모집단 평균
  • $\sigma$: 모집단 표준편차
  • $n$: 표본 수

P-Value란?

p-value는 귀무가설이 참이라는 전제 하에, 현재의 통계량보다 극단적인 결과가 나올 확률을 의미합니다. 이 값이 작을수록 귀무가설을 기각할 가능성이 높아집니다.

일반적인 기준:

  • p < 0.05: 통계적으로 유의미함
  • p < 0.01: 매우 유의미함

파이썬 예제: Z-Test 계산

예를 들어, 어떤 샘플의 평균이 알려진 모집단 평균과 다른지를 검정할 수 있습니다:


import numpy as np
from scipy import stats

sample = [2.9, 3.0, 2.5, 3.2, 3.8, 3.5]
mu = 3.0
sigma = 0.5
n = len(sample)
x_bar = np.mean(sample)

z = (x_bar - mu) / (sigma / np.sqrt(n))
p_value = 2 * (1 - stats.norm.cdf(abs(z)))

print("Z-점수:", z)
print("P-값:", p_value)
  

ML/DL에서의 Z-Test와 P-Value 활용

머신러닝과 딥러닝 실험에서도 z-test와 p-value는 유의미한 도구입니다. 예:

  • 모델 성능 비교: 두 모델의 정확도 차이가 우연이 아닌지를 검정
  • A/B 테스트: 실험 그룹 간의 반응 차이를 검정
  • 피처 선택: 클래스 간 피처 평균 차이가 유의한지를 분석

예제: 두 모델 정확도 비교


acc_model_a = [0.83, 0.85, 0.82, 0.84, 0.86]
acc_model_b = [0.79, 0.78, 0.80, 0.77, 0.81]

mean_a = np.mean(acc_model_a)
mean_b = np.mean(acc_model_b)
sd = np.std(acc_model_a + acc_model_b, ddof=1)
n = len(acc_model_a)

z = (mean_a - mean_b) / (sd * np.sqrt(2/n))
p = 2 * (1 - stats.norm.cdf(abs(z)))

print("Z-점수:", z)
print("P-값:", p)
  

결론

z-test와 p-value는 통계적으로 모델 개선 여부를 검증할 수 있는 유용한 도구입니다. ML/DL 실험 결과에 통계적 근거를 더해 데이터 기반의 의사결정을 내리는 데 기여합니다.

참고자료