Skip to main content

신뢰구간

신뢰구간 (Confidence Interval, CI)

  • 대표적 구간 추정 방법.
  • 계산: 신뢰구간 = 통계량 ± 오차범위
  • 오차 범위: 신뢰수준, 표본 크기, 데이터 변산성 등 고려하여 이론적으로 유도하여 사용.

오차 범위

  • 표집 오차 (Sampling Error): 모집단과 표본 다르기 때문에 생기는, 표본 추정값과 실제 모수와의 차이.
  • 예시:
    • 모집단 (6면체 주사위) 평균 = 3.5
    • 표본 (주사위 10개 굴림, 합 26) 평균 = 2.6
    • 표집 오차 = 2.6 - 3.5 = -0.9
  • 측정 오차는 줄일 수 있음(더 정확한 도구 등)
    • 표집 오차는 표집의 확률적 성격 때문에 발생 → 없앨 수 없음
  • 오차 범위: 표집 오차가 발생하는 범위
    • 6면체 주사위의 경우 표집오차는 아무리 커도 ±2.5를 넘을 수는 없음

평균의 신뢰구간

  • 모든 통계량에는 신뢰구간 존재.
  • 특히 평균의 경우, 이론적으로 간단히 신뢰구간을 구할 수 있음**.
  • 보통 95% 신뢰구간(=신뢰수준 95%의 신뢰구간)을 구함(→ 다음 시간에 설명)
  • 평균의 95% 신뢰구간
import pingouin as pg
pg.ttest(df.price, 0)
  • df.price의 평균의 95% 신뢰구간: 814.1 ~ 893.22

부트스트래핑 (Bootstrapping)

  • 평균과 달리 중간값, 최빈값 등의 통계량은 오차범위를 이론적으로 유도하기 어려움
  • 표본이 충분히 크면 부트스트래핑이라는 시뮬레이션 기법을 사용해서 신뢰구간을 추정
  • 오차 범위는 모집단에서 서로 다른 표본이 확률적으로 표집됨 → 표집 오차의 확률 분포를 추정하는 것
  • 부트스트래핑: 표본에서 다른 표본을 재표집(resampling).
  • 표본이 모집단을 어느 정도 반영한다면 이러한 재표집 또한 모집단에서 표본이 표집되는 과정을 반영할 것 → 오차 범위도 비슷하게 추정될 것
import numpy as np
import scipy as sp

# 시뮬레이션의 결과를 항상 똑같게 만들기 위해 난수 생성의 씨앗값을 고정
np.random.seed(1234)

# 부트스트래핑
res = sp.stats.bootstrap(
[df.price], # 데이터
np.median, # 계산할 통계량 (중간값)
n_resamples=10000, # 시뮬레이션(재표집) 횟수
)

res.confidence_interval # 신뢰구간

퀴즈