A/B Test에서의 t-test, z-test

Seohyeon Park·2025년 5월 14일
0

Intro.

A/B Test의 통계적 질문은 다음과 같다. “두 집단의 모수가 통계적으로 유의미하게 다른가?“ 이 차이를 검정하기 위해 t-test 또는 z-test를 사용할 수 있다.

Difference.

t-test는 주로 연속형 변수(ex. 체류시간, 장바구니 금액 등)에 대해 독립 표본 t-test를 사용하며, z-test에 경우 이진형 변수(ex. 전환 됨 vs 안됨)에 대해 두 집단 비율 z-test를 사용한다.

t-test (독립 표본)z-test (proportions)
데이터 종류연속형 변수이진형 변수
표본 수 조건소 표본도 가능큰 표본
모집단 분산 σ\sigma표본 표준편차 ss사용알고 있는 값 or nn이 충분히 크다면 근사 (sσs \approx \sigma) 가능
분포 기반t-분포정규분포
활용평균 체류 시간 비교, 평균 매출 비교 등전환률, 클릭률, 가입률 등 이진 비율 비교

Example.

  1. t-test
# 예시: 두 웹페이지 버전의 평균 체류 시간을 비교한 A/B Test

import numpy as np
from scipy.stats import ttest_ind

# A 그룹: 기존 웹사이트 (평균 70초, 표준편차 10초)
group_a_time = np.random.normal(loc=70, scale=10, size=100)

# B 그룹: 새로운 웹사이트 (평균 74초, 표준편차 11초)
group_b_time = np.random.normal(loc=74, scale=11, size=100)

t_stat, p_val = ttest_ind(group_a_time, group_b_time, equal_var=False)

print("=== t-test 결과 (평균 체류 시간 비교) ===")
print(f"t 통계량: {t_stat:.3f}")
print(f"p-value: {p_val:.4f}")

# 결과) t 통계량: -3.808, p-value: 0.0002
# 귀무가설을 기각할 수 있음
  1. z-test
# 예시: 두 웹페이지 버전의 구매 전환 여부를 비교한 A/B Test

import numpy as np
from statsmodels.stats.proportion import proportions_ztest

# 성공(구매 전환) 수
successes = np.array([50, 65])

# 전체 사용자 수
sample_sizes = np.array([1000, 1000])

z_stat, p_val = proportions_ztest(count=successes, nobs=sample_sizes)

print("=== z-test 결과 (전환률 비교) ===")
print(f"Z 통계량: {z_stat:.3f}")
print(f"p-value: {p_val:.4f}")

# 결과) Z 통계량: -1.441, p-value: 0.1496
# 귀무가설을 기각하지 못함
profile
카페에서 한줄 한줄

0개의 댓글