susinlee 님의 블로그
두 집단 간의 비율 차이 검정하기 본문
그룹 | 클릭(1) | 미클릭(0) | 총 인원 |
대조군 | 30 | 70 | 100 |
실험군 | 45 | 55 | 100 |
- 대조군 클릭률 = 30%
- 실험군 클릭률 = 45%
- 실험군의 클릭률이 더 높다는 걸 검정하고자 함
1. t-검정 (두 집단의 평균 차이 비교)
t-검정은 기본적으로 수치형 데이터에 사용하는 방법이지만,
0과 1로 이루어진 이진값(예: 클릭=1, 미클릭=0)이라면 평균 = 비율 이므로 사용 가능
- 귀무가설
- 실험군과 대조군의 평균(=비율)이 같다.
- 대립가설
- 단측검정 (실험군 > 대조군)
- 실험군의 평균(=클릭률)이 더 높다
- 양측검정
- 두 집단 평균이 다르다
- scipy.stats.ttest_ind()는 기본적으로 양측검정이므로, 단측일 시 p-value를 2로 나눈다.
- 단측검정 (실험군 > 대조군)
from scipy.stats import ttest_ind
# 0 = 미클릭, 1 = 클릭
control = [0]*70 + [1]*30 # 대조군
treatment = [0]*55 + [1]*45 # 실험군
t_stat, p_value = ttest_ind(control, treatment, equal_var=False)
if t_stat < 0:
one_tailed_p = p_value / 2
else:
one_tailed_p = 1 - (p_value / 2)
print(f"t 통계량: {t_stat:.3f}\np-value: {one_tailed_p:.3f}")
# t 통계량: -2.207
# p-value: 0.014
해석:
- p < 0.05 → 클릭률 차이가 유의미하다
- p >= 0.05 → 클릭률 차이가 우연일 가능성 크다
2. 카이제곱 검정 (범주형 분포 차이 검정)
- 귀무가설
- 그룹과 클릭여부는 독립적이다.
- 즉, 실험군과 대조군의 클릭 비율은 동일하다
- 대립가설
- 그룹과 클릭여부는 독립이 아니다
- 즉, 실험군과 대조군의 클릭률에 차이가 있다
- chi2_contingency()는 양측검정만 가능 (방향성 없음)
- "다르다"는 건 검정 가능, "더 높다"는 건 검정 불가
from scipy.stats import chi2_contingency
import pandas as pd
# 교차표 생성
table = pd.DataFrame({
'Clicked': [30, 45],
'Not_Clicked': [70, 55]
}, index=['Control', 'Treatment'])
chi2, p, dof, expected = chi2_contingency(table)
print(f'카이제곱 통계량: {chi2:.3f}\np-value: {p:.3f}')
# 카이제곱 통계량: 4.181
# p-value: 0.041
해석:
- p < 0.05 → 클릭 분포 차이가 의미 있음
- expected 를 통해 기댓값과 관측값 차이도 확인 가능
참고: 비율에 특화된 방법 → z-test for proportions
사실 이 경우엔 statsmodels의 proportions_ztest()가 정상적인 비율 비교 방법
from statsmodels.stats.proportion import proportions_ztest
count = [45, 30] # 클릭 수 (실험, 대조)
nobs = [100, 100] # 각 집단 크기
z, p = proportions_ztest(count, nobs, alternative='larger') # 실험군이 더 큰가?
print(f"z 통계량: {z:.3f}\np-value: {p:.3f}")
# z 통계량: 2.191
# p-value: 0.014
- alternative='larger' → '실험군 > 대조군' 인지 확인
요약
상황 | 추천 방법 |
클릭률, 구매율 같은 이진 비율 비교 | z-test for proportions |
이진 데이터를 수치로 보고 평균 비교 | t-test |
분할표로 범주형 비율 비교 | 카이제곱 검정 |
'학습 > TIL' 카테고리의 다른 글
[250403] TIL (2) | 2025.04.04 |
---|---|
[250402] TIL (0) | 2025.04.03 |
[250326] TIL (0) | 2025.03.26 |
[250324] TIL (0) | 2025.03.24 |
[250319] TIL (0) | 2025.03.19 |