예제 1. 디자인 시안 A,B에 따른 유저의 체류 시간 테스트하기
'디자인 A의 평균 체류 시간이 조금 더 기네? → A 디자인이 더 좋네!' — 
'디자인 A의 시간이 더 긴 것은 우연의 결과가 아니었을까? → 검정해봐야겠다!' — 
1.
파이썬을 이용해 검정하기
from scipy import stats
# 데이터 담기
design_A = [16.4, 12.6, 17.5, 18.8, 12.1, 13.2, 14.5, 12.4, 17.5, 25.4, 9.3, 10.4]
design_B = [12.1, 11.8, 14.7, 13.1, 13.8, 10.1, 9.1, 13.5, 11.2, 13.7]
# 검정 코드 실시
stats.ttest_ind(design_A,
design_B,
equal_var=False)
# 결과 보기
>>> Ttest_indResult(statistic=1.933374622222914, pvalue=0.07227304704557012)
Python
복사
2.
결과 해석하기
•
3.
equal_var = True, False 의 의미를 알고 쓰기
디자인 시안 별 유저 체류 시간은 평균과 분산값을 갖고 있습니다.
이때 A와 B의 분산이 너무 다르거나, 혹은 수집된 데이터의 개수 차이가 너무 크면 계산 방법을 달리 적용해야 합니다.
자세한 설명 읽기
예제 2. 디자인 시안 A,B에 따른 유저의 전환율(클릭) 차이 테스트하기
클릭 = 1, 클릭 안 함 = 0
'디자인 B의 클릭 전환율이 2~3% 높네? → B 디자인이 더 좋네!' — 
'디자인 B의 클릭 전환이 더 잘 된 것은 우연의 결과가 아니었을까? → 검정해봐야겠다!' — 
1.
파이썬을 이용해 검정하기
import pandas as pd
from scipy.stats import chi2_contingency
def click_abtest(a_click, total_a, b_click, total_b):
click = [a_click, b_click] # A와 B의 클릭한 유저 수
no_click = [total_a - a_click, total_b - b_click] # A와 B의 클릭 안 한 유저 수
cont_table = pd.DataFrame([click, no_click], columns=['A', 'B'], index=['click', 'no_click'])
chi2, p_val, d_f, expected = chi2_contingency([click, no_click])
print("카이제곱 통계량 :", format(chi2, '.5f'))
print("pvalue :", format(p_val, '.5f'))
# A의 클릭수(13)와 A의 데이터 전체 개수(244), B의 클릭수(23)와 A의 데이터 전체 개수(287)를 정의한 클래스에 넣어줍니다.
click_abtest(13, 244, 23, 287)
# 결과
>>> 카이제곱 통계량 : 1.11053
>>> pvalue : 0.29197
Python
복사
2.
결과 해석하기
•
알면 알수록 더 궁금해지는 것들
2.
새로 시도할 디자인 시안이 2개가 아니라 3개인데...
→ ANOVA (분산분석) 방법론을 써야하지만 그 절차가 AB 두 개의 비교에 비해 급격히 복잡해집니다.
3.
→ 효과크기와 검정력 개념을 알아야합니다.