신뢰 구간(Confidence Intervals)
신뢰 구간이 뭐지?
통계학에서 신뢰 구간(信賴區間, 영어: confidence interval)은 모수가 어느 범위 안에 있는지를 확률적으로 보여주는 방법이다.
신뢰 구간은 보통 표본에서 산출된 통계와 함께 제공된다. 예를 들어, "신뢰수준 95%에서 투표자의 35% ~ 45%가 A후보를 지지하고 있다."라고 할 때 95%는 신뢰수준이고 35% ~ 45%는 신뢰구간이며 θ는 A후보의 지지율이다.
- 위키백과
신뢰 구간을 쉽게 표현하자면 무언가에 대해서 말할 때 그 무언가의 일부를 보고서 "이 정도면 어지간해선 들어맞겠지" 할 만한 범위이다.
위 예에서는 A 후보의 지지율 신뢰 구간이 35% ~ 45%라고 하는데, 이는 투표 마친 사람들한테 설문조사한 결과를 토대로 실제 A 후보의 지지율 결과가 35% ~ 45% 사이에 있을 거라고 보는 것이다.
그리고 신뢰수준 95%의 의미는 이 말이 진짜로 맞을 확률이 95% 라는 것이다.
신뢰 구간은 어떻게 구하는거지?
아래는 표본 평균을 이용하여 모평균이 들어와 있을 만한 구간, 즉 '신뢰 구간'을 구하는 과정과 이를 Python으로 표현한 것이다.
신뢰 구간은 표본 평균을 기준으로 좌우로 2 × 표준 오차(Standard Error of Mean, SEM)$^1$ 만큼 더하고 뺀 범위이다(신뢰 수준 95% 기준$^2$).
import numpy as np
from scipy import stats
def confidence_interval(data, confidence = 0.95):
"""
주어진 데이터의 표본 평균에 대한 신뢰구간을 계산.
기본 값으로 t-분포와 양방향 (two-tailed), 95%의 신뢰도를 사용합니다.
입력 값 :
data - 여러 개로 이루어진 (list 혹은 numpy 배열) 표본 관측치
confidence - 신뢰구간을 위한 신뢰도
반환 되는 값:
(평균, 하한, 상한구간)으로 이루어진 tuple
"""
data = np.array(data)
mean = np.mean(data)
n = len(data)
# Standard Error of Mean (https://docs.scipy.org/doc/scipy/reference/generated/scipy.stats.sem.html)
stderr = stats.sem(data)
# length_of_one_interval
interval = stderr * stats.t.ppf( (1 + confidence) / 2 , n-1) # ppf : inverse of cdf
return (mean, mean - interval, mean + interval)
# cdf -> t 를 넣으면 %
# ppf -> % 를 넣으면 t
# 1 + 0.95 / 2 -> 0.975
# (1 - 0.95) / 2 -> 0.025
np.random.seed(123)
data = np.random.normal(50, 10, 1000)
sample = np.random.choice(data, 10)
confidence_interval(sample)
(44.28501220284126, 37.93312500671013, 50.63689939897239)
# 다른 방법
from scipy.stats import t
# 표본의 크기
n = len(sample)
# 자유도
dof = n-1
# 평균의 평균
mean = np.mean(sample)
# 표본의 표준편차
sample_std = np.std(sample, ddof = 1)
# 표준 오차
std_err = sample_std / n ** 0.5 # sample_std / sqrt(n)
CI = t.interval(.95, dof, loc = mean, scale = std_err) # https://docs.scipy.org/doc/scipy/reference/generated/scipy.stats.t.html
print("95% 신뢰구간: ", CI)
95% 신뢰구간: (37.93312500671013, 50.63689939897239)
*1 : 표준 오차란 표본 평균의 표준 편차이며, 구하는 방법은 아래와 같다. $$SEM=\frac{σ}{√n}$$ 여기서 $σ$는 모집단의 표준편차이고 $n$은 표본의 크기이다.
*2 신뢰 수준에 따라 표준 오차에 몇을 곱해주는지가 달라진다. 참고 : Z-Score in Statistics
<참고 자료>
신뢰 구간 - 위키백과
신뢰 구간의 의미 - 공돌이의 수학정리노트
신뢰구간 (Confidence Interval) - BioinformaticsAndMe
표준 점수 - 위키백과
scipy.stats.sem - Standard Error of Mean, SEM
scipy.stats.t
Compute a confidence interval from sample data - Stack Overflow
'Statistics > Confidence Interval' 카테고리의 다른 글
[Stats] 중심 극한 정리(Central Limit Theorem, CLT) (0) | 2021.10.17 |
---|