가설검정이란?
가설검정(Hypothesis Testing)은 통계학에서 어떤 주장이나 가설이 옳은지를 데이터 기반으로 판단하는 절차입니다. 주어진 데이터로부터 모집단의 특성을 추정하고, 이 추정값을 바탕으로 기존에 세운 주장(귀무가설)이 타당한지를 검정합니다.
절차
1.귀무가설(H0) 설정: 기존의 주장 혹은 변화가 없다는 가정
2.대립가설(H1) 설정: 새롭게 주장하고 싶은 가정
3.검정통계량 계산: 관측된 데이터로부터 검정통계량을 구함
4.p-value 계산: 귀무가설 하에서 관측값보다 극단적인 결과가 나올 확률
5.판단: p-value가 유의수준보다 작으면 귀무가설 기각
정규분포와 t분포
정규분포 (Normal Distribution)
- 연속확률분포의 대표적인 분포
- 평균 μ, 표준편차 σ를 모수로 가짐
- 중앙에 봉우리가 있는 종 모양(Bell-shaped curve)
정규분포에서 자주 쓰이는 중요한 python 함수
from scipy.stats import norm
# 확률 밀도 함수 (PDF)
norm.pdf(x, loc=μ, scale=σ)
# 누적 분포 함수 (CDF)
norm.cdf(x, loc=μ, scale=σ)
# 분위수 함수 (PPF)
norm.ppf(p, loc=μ, scale=σ)
t분포 (t-distribution)
- 표본의 수가 작고, 모분산을 모를 때 사용하는 분포
- 정규분포보다 꼬리가 두꺼움 → 극단적인 값이 나올 확률이 큼
- 자유도(df)에 따라 모양이 달라지며, df가 커질수록 정규분포에 가까워짐
python 에서 사용하는 법
from scipy.stats import t
정규분포 t분포 차이 비교
구분 | 정규분포 | t분포 |
---|---|---|
사용조건 | 모분산을 아는 경우 | 모분산을 모르는 경우 (특히 n<30) |
분포모양 | 꼬리가 없음 | 꼬리가 두꺼움 |
자유도 | 없음 | df = n - 1 |
샘플 수 증가 시 | 그대로 | 정규분포에 수렴 |
검정 점선은 정규분포의 PDF 입니다.
노란색과 파란색 실선은 t분포를 나타냅니다.
t분포는 자유도가 커질수록 (표본의 크기가 커질수록) 정규분포의 형태와 비슷해집니다.
t분포의 자유도가 30이 되니깐 정규분포의 형태와 거의 같아진 모습을 볼 수 있습니다.
가설검정 예시
커피숍의 커피 온도 검정 (정규분포)
어떤 커피숍은 본인들의 커피의 평균 온도가 75도라고 주장합니다.
(단, 이때 모 표준편차는 1.2 입니다.)
이를 의심한 소비자가 10잔의 온도를 측정한 결과는 다음과 같습니다.
x = np.array([72.4, 74.1, 73.7, 76.5, 75.3, 74.8, 75.9, 73.4, 74.6, 75.1])
Step 1. 가설 설정
- H0: 평균은 75도이다.
- H1: 평균은 75도가 아니다.
우리가 검정하고 싶은 사실을 대립가설 (H1) 로 설정합니다.
즉, 우리는 커피온도가 평균 75도가 아니라는 사실을 증명하고 싶습니다.
귀무가설은 통용되는 사실로 그대로 둡니다.
Step 2. 검정통계량 계산 (모분산을 알 때 → Z검정)
$$
z = \frac{\bar{x} - \mu}{\sigma / \sqrt{n}}
$$
$\mu$: 모평균 (75
)
$\bar {x}$: 표본 평균 (x.mean()
)
$\sigma$: 모표준편차 (1.2
)
${n}$: 표본의 크기 (10
)
위의 수식을 파이썬 코드로 나타내 봅시다.
z = (x.mean() - 75) / (1.2 / np.sqrt(10))
Step 3. p-value 계산
from scipy.stats import norm
p_value = norm.sf(abs(z)) * 2
norm.sf()
는 1 - cdf 를 한 결과입니다.- 즉, 오른쪽 꼬리 확률을 의미합니다.
- 양측 검정을 하기 때문에 * 2를 해줍니다.
Step 4. 판단
p_value < 0.05 # False → 귀무가설 기각 불가
색칠된 영역에 z 값이 속한다면 H0을 기각할 수 있게 되지만, z 는 해당 영역에 속하지 않는 것을 볼 수 있습니다.
즉, 평균은 75도가 아니다. 라고 말할 수 있는 통계적 증거가 없습니다.
결국, 커피의 온도가 75도라고 할 수 있게 됩니다.
커피숍의 커피 온도 검정 (t분포)
🔍 t분포는 언제 사용하나?
1. 모집단이 정규분포를 따른다고 가정
2. 모분산을 모름 (표본에서 구한 표준편차 이용해서 추정)
x = np.array([72.4, 74.1, 73.7, 76.5, 75.3, 74.8, 75.9, 73.4, 74.6, 75.1])
n = len(x)
# 1. 가설 설정
# H0: 모평균이 75도씨이다.
# H1: 모평균이 75도씨가 아니다.
# 검정통계량 계산
t_stat = (x.mean() - 75) / (x.std(ddof=1) / np.sqrt(n))
# pvalue 계산
p_value = t.cdf(t_stat, df=n-1)
p_value = p_value * 2 # 양측검정이니까 2를 곱해준다.
p_value < 0.05 # False
# p-value가 0.05보다 작지 않으므로 귀무가설을 기각할 수 없다.
# 즉, 모평균이 75도씨라고 주장할 수 있다.
t분포를 사용해도 여전히 기각되지 않는 모습을 볼 수 있습니다.
정규분포와 t분포를 사용해서 가설 검정을 해보았습니다.
하지만, 나의 데이터가 어떤 분포를 따르고 있는지 모를 땐 어떻게 해야할까요?
나의 데이터가 정규분포를 따르고 있는지 검증하고 싶을 땐 어떻게 할까요?
해당 내용은 아래 포스팅에 있습니다.
LS 빅데이터 스쿨 / 정규성 검정 / Shapiro-Wilk / Anderson-Darling / Kolmogorov–Smirnov / Q-Q Plot
정규성 검정(Normality Test) 이란?정규성 검정은 데이터가 정규분포를 따르는지를 검정하는 과정입니다.많은 통계 기법(Z-test, t-test 등)은 정규분포를 전제로 하기 때문에, 분석 전에 정규성을 검정
kiminchae.tistory.com
'Data > 통계' 카테고리의 다른 글
카이제곱(Chi-Square) 검정 / 범주형 데이터 분석 / 독립성 검정 / 동질성 검정 / 적합도 검정 (1) | 2025.04.07 |
---|---|
정규성 검정 / Shapiro-Wilk / Anderson-Darling / Kolmogorov–Smirnov / Q-Q Plot (0) | 2025.04.04 |
확률질량함수(PMF), 확률밀도함수(PDF), 누적분포함수(CDF) (0) | 2025.03.27 |
이항 분포 예제로 이해하기 with python (0) | 2025.03.25 |
LS 빅데이터 스쿨 / 확률 변수와 확률 분포 (0) | 2025.03.24 |