단일 표본 비율 검정

Python으로 배우는 가설 검정

James Chapman

Curriculum Manager, DataCamp

1장 복습

  • 모집단 비율에 대한 주장이 타당한가?

 

  1. 부트스트랩 분포에서 표본 통계량의 표준 오차
  2. 표준화 검정 통계량 계산
  3. p-값 계산
  4. 가장 타당한 가설 결정

 

  • 이제 부트스트랩 분포 없이 검정 통계량 계산
Python으로 배우는 가설 검정

비율의 표준화 검정 통계량

$p$: 모비율 (미지의 모수)

$\hat{p}$: 표본 비율 (표본 통계량)

$p_{0}$: 가설적 모비율

$$ z = \frac{\hat{p} - \text{mean}(\hat{p})}{\text{SE}(\hat{p})} = \frac{\hat{p} - p}{\text{SE}(\hat{p})} $$

$H_{0}$가 참이면 $p = p_{0}$이므로

$$ z = \dfrac{\hat{p} - p_{0}}{\text{SE}(\hat{p})} $$

Python으로 배우는 가설 검정

표준 오차 계산 단순화

$SE_{\hat{p}} = \sqrt{\dfrac{p_{0}*(1-p_{0})}{n}}$ $\rightarrow$ $H_0$ 하에서 $SE_{\hat{p}}$는 가설적 $p_0$와 표본 크기 $n$에 의존

$H_{0}$가 참이면,

$z = \dfrac{\hat{p} - p_{0}}{\sqrt{\dfrac{p_{0}*(1-p_{0})}{n}}}$

  • 표본 정보($\hat{p}$, $n$)와 가설적 모수($p_{0}$)만 사용
Python으로 배우는 가설 검정

t 대신 z를 사용하는 이유

$t = \dfrac{(\bar{x}_{\text{child}} - \bar{x}_{\text{adult}})}{\sqrt{\dfrac{s_{\text{child}}^2}{n_{\text{child}}} + \dfrac{s_{\text{adult}}^2}{n_{\text{adult}}}}}$

  • $s$는 $\bar{x}$로부터 계산됨
    • $\bar{x}$는 모평균을 추정
    • $s$는 모표준편차를 추정
    • 모수 추정의 불확실성 $\uparrow$
  • t-분포 - 정규 분포보다 두꺼운 꼬리
  • $\hat{p}$는 분자에만 등장하므로 z-점수 사용 가능
Python으로 배우는 가설 검정

Stack Overflow 연령 범주

$H_{0}$: 30세 미만 Stack Overflow 사용자 비율 $=0.5$

$H_{A}$: 30세 미만 Stack Overflow 사용자 비율 $\neq0.5$

alpha = 0.01
stack_overflow['age_cat'].value_counts(normalize=True)
Under 30       0.535604
At least 30    0.464396
Name: age_cat, dtype: float64
Python으로 배우는 가설 검정

z 계산을 위한 변수

p_hat = (stack_overflow['age_cat'] == 'Under 30').mean()
0.5356037151702786
p_0 = 0.50
n = len(stack_overflow)
2261
Python으로 배우는 가설 검정

z-점수 계산

$z = \dfrac{\hat{p} - p_{0}}{\sqrt{\dfrac{p_{0}*(1-p_{0})}{n}}}$

import numpy as np
numerator = p_hat - p_0
denominator = np.sqrt(p_0 * (1 - p_0) / n)
z_score = numerator / denominator
3.385911440783663
Python으로 배우는 가설 검정

p-값 계산

정규 분포의 CDF. -2보다 작은 부분은 빨간색, 2보다 큰 부분은 초록색으로 표시됩니다. 왼쪽 꼬리 ("미만"):

from scipy.stats import norm
p_value = norm.cdf(z_score)

오른쪽 꼬리 ("초과"):

p_value = 1 - norm.cdf(z_score)

양측 ("같지 않음"):

p_value = norm.cdf(-z_score) + 
  1 - norm.cdf(z_score)
p_value = 2 * (1 - norm.cdf(z_score))
0.0007094227368100725
p_value <= alpha
True
Python으로 배우는 가설 검정

연습해 봅시다!

Python으로 배우는 가설 검정

Preparing Video For Download...