logo

신뢰구간

신뢰구간

  • 신뢰구간(confidence interval)은 대표적인 구간 추정 방법
  • 하나의 점 추정값만 제시하지 않고, 표집의 불확실성을 반영한 범위를 제시함
  • 기본 형태
    • 신뢰구간 = 통계량 ± 오차범위
  • 신뢰수준, 표본의 크기, 데이터의 변산성 등을 고려하여 오차범위를 이론적으로 유도해 사용

오차 범위

  • 오차 범위(margin of error)는 표집 오차가 발생하는 범위
  • 6면체 주사위의 경우 표집오차는 아무리 커도 를 넘을 수 없음
  • 오차범위에 영향을 주는 요소
    • 신뢰수준: 얼마나 극단적인 경우까지 포함할 것인가
    • 표본의 크기: 표본에 얼마나 많은 사례를 포함할 것인가
    • 모집단의 변산성: 모집단의 변산성이 얼마나 큰가

신뢰수준

  • 신뢰수준(confidence level)은 같은 방법으로 표집과 구간 추정을 반복했을 때 그 구간이 모수를 포함하는 비율
  • 극단적인 경우까지 포함하면 오차범위는 커짐
    • 예: 6면체 주사위를 굴렸을 때 모두 1이나 모두 6이 나오면 표집 오차가 최대
  • 극단적인 경우를 배제하면 오차범위를 줄일 수 있음
  • 유의수준(significance level)
    • 배제하는 극단적인 경우의 비율
    • 예: 유의수준 5% = 5%의 극단적인 경우는 배제함
  • 신뢰수준 = 100% - 유의수준
  • 신뢰수준과 오차범위
    • 높은 신뢰수준 → 더 많은 가능성 → 넓은 오차범위
    • 낮은 신뢰수준 → 더 적은 가능성 → 좁은 오차범위
  • 95% 신뢰수준은 반복해서 만든 신뢰구간 중 약 95%가 모수를 포함한다는 뜻
  • 한 번 계산한 구간에 모수가 들어 있을 확률이 95%라는 뜻은 아님

신뢰수준 95%와 99%의 오차범위 비교

신뢰 수준 100%면 안되는 이유

  • 신뢰수준을 100%로 잡으면 사실상 모든 가능한 극단적 경우를 포함해야 함
  • 그러면 오차범위가 너무 넓어져 실질적인 의사결정에 도움이 되기 어려움
  • 통계적 추정은 불확실성을 완전히 제거하는 것이 아니라, 합리적인 수준에서 관리하는 과정

신뢰 수준 100%의 한계 예시

신뢰 수준의 결정

  • 신뢰수준은 적절한 수준에서 타협이 필요
  • 신뢰수준이 지나치게 높으면 가능성이 희박한 극단적 경우를 너무 많이 고려하여 의사결정이 어려워짐
  • 신뢰수준이 지나치게 낮으면 너무 많은 경우를 배제하여 의사결정의 타당성이 떨어짐
  • 교과서적으로는 95%, 99% 등을 추천하지만 절대적 기준은 아님

데이터의 변산성

  • 데이터의 변산성이 크면 오차범위가 커짐
  • 20면체 주사위를 굴리고 7을 빼면 기대값은 6면체 주사위와 똑같이 3.5
  • 하지만 20면체 주사위는 가능한 값의 범위가 더 넓기 때문에 오차범위가 훨씬 큼
  • 6면체 주사위를 10개 굴려서 모두 1이 나올 가능성은 매우 희박함
  • 20면체 주사위를 10개 굴려서 모두 8 이하가 나올 가능성은 그보다 훨씬 큼
  • 실험과 측정을 정확히 해서 변산성을 낮추면 오차범위가 작아짐
  • 데이터에 내재한 변산성은 없앨 수 없음

20면체 주사위 예시

표본의 크기

  • 표본의 크기가 크면 오차범위가 작아짐
  • 주사위 10개 굴리기(10d6)와 50개 굴리기(50d6)를 비교하면 표본 수가 많은 쪽의 평균이 기대값에 더 가까워지는 경향
  • 무한히 던지면 평균은 정확히 3.5에 가까워지고 오차범위는 0에 가까워짐
  • 통계에서 거의 모든 문제의 해결 방법은 데이터를 더 모아서 표본의 크기를 키우는 것
  • 하지만 표본을 늘리면 시간과 비용도 증가함

주사위 50개 굴리기 예시

주사위 10개 굴리기 예시

실습 준비

패키지를 설치합니다.

pip install pandas seaborn matplotlib pingouin statsmodels openpyxl

실습 파일을 불러옵니다.

import pandas as pd

df_ship = pd.read_excel("ship.xlsx")

평균의 신뢰구간

  • 평균, 중앙값, 비율 등 다양한 모수에 대해 신뢰구간을 구할 수 있음
  • 평균의 경우에는 이론적으로 신뢰구간을 비교적 간단히 구할 수 있음
  • pingouinttest 결과에서 CI95는 평균의 95% 신뢰구간을 의미
import pingouin as pg

df_ship["speed"].mean()
# 18.306

pg.ttest(df_ship.speed, 0, confidence=0.95)
  • 선박의 표본평균 속도는 약 18.306
  • CI95[17.53, 19.09]이므로 모집단의 평균 속도를 17.53에서 19.09 사이로 추정
  • 같은 방식으로 표집과 신뢰구간 계산을 반복하면 만들어진 구간의 약 95%가 실제 평균 속도를 포함함

여론조사의 표본오차

  • 국내 여론조사 결과에서는 "표본 오차"라는 이름으로 오차 범위를 표시
  • 중심극한정리에 따라 신뢰수준 95%에서 오차범위를 계산할 수 있음
  • 찬성률 50%를 기준으로 계산하면 변산성이 가장 큰 보수적 상황을 가정하는 것
  • 설문 응답자 수 이 커질수록 오차범위는 작아짐
import numpy as np

n = 1000
1.96 * 50 / np.sqrt(n)
  • 원하는 오차범위로부터 필요한 설문 응답자 수를 역산할 수 있음
    • 예: 오차범위면 충분할 경우 약 100명에게 설문

여론조사 표본오차 예시

Previous
표집 오차