본문 바로가기

문제풀이

태블로: 개인 과제 풀이 및 해설 정리

- 주제: 랜딩 페이지 A/B 테스트 대시보드 만들기

- 배경: Product Owner의 요청 - 실험 결과를 분석할 수 있는 대시보드 작업을 진행해주세요!
- 실험 상황 시나리오
이커머스 K사는 웹사이트의 랜딩 페이지 UI 실험을 진행했습니다. 유저를 실험군과 대조군으로 나누어 랜딩 페이지 구 버전 A안과 새 버전 B안을 비교하여 약 1달 동안 실험이 진행 되었어요. 실험 결과 데이터는 'ab_data.csv' 파일에 쌓였습니다. A/B 테스트의 성공 지표를 컬럼 converted(페이지 전환 유무)를 활용하여 두가지 랜딩 페이지 실험 결과를 검증하고 싶습니다.
✅ 실험 진행 기간: 약 1달간(2017/1/2 - 1/24)
✅ 실험 대상: 총 약 29만명 랜딩 페이지 유입 유저 → 실험군(약 14만명), 대조군(약 14만명) 
✅ 실험 목표: 유저의 랜딩 페이지 전환율 상승
✅ 성공 지표(실험이 성공했다고 판단할 수 있는 지표): conversion rate(%)
✅실험 검증 방법: t-test

 

- 데이터 출처: kaggle,  A/B testing, LUYUAN ZHANG, 2018
└ user_id: 유저 아이디(약 29만명)
└ timestamp: 2017-01-02 ~ 2017-01-24
└ group: 대조군(control), 실험군(treatment)
└ landing_page: old_page, new_page
└ converted: 랜딩 페이지 전환 유무(1,0)

- 대시보드 요구 사항
└ 대시보드 뷰어: 프로덕트팀 구성원(Product Owner, Product Analyst, UI Designer, Software Engineer)
└ 지표 선정: conversion rate(%)
└ 대시보드 구성
 · 레이아웃 규격: 일반 데스크톱 모니터(1920 x 1080)
 · 컬러: 컬러 팔레트 자유롭게 활용
 · 모든 통계량은 유저 기반으로 집계

 

- 과제 요구 사항 및 제출본 
(1) 난이도 하(필수)
- 워크시트 1번: 그룹별 유저 비중 파이 차트 시각화
- 워크시트 2번: 그룹별 평균 전환율 막대 그래프 시각화
- 워크시트 3번: 일별 그룹별 평균 전환율 선 그래프 시각화
- 워크시트 4번: 그룹별 유저 고유 카운트 요일별 캘린더 차트 만들기


(2) 난이도 중 (필수)
- 워크시트 5번: 데이터 정합성 체크 & 전처리 작업 (그래프는 미포함)
└ control인데 new page, treatment인데 old page인 경우 유저 아이디 제거

control은 old page, treatment는 new page로 분류된게 정확한 상태
└ 방법: 계산된 필드 만들기 또는 필터 활용

- 워크시트 6번: 도넛 차트 활용 평균 전환율 지표 카드 만들기
방법: [문서 참고]
- 워크시트 7번: start date와 end date 매개변수 필터 만들기
방법: [문서/영상 참고] (매개 변수 만들기 → 일자별 조회 필드 만들기 → 필터 만들기)
일별 전환율 또는 유저 카운트 → 완성된 대시보드에 해당 필터 표시


(3) 난이도 상(+ 통계) (선택)
- 워크시트 8번: t-test 텍스트 표시
방법: [문서 참고] (t-score 계산된 필드 만들기 → t-통계량을 p-value값으로 변환)


[문제 풀이]
* 워크시트 1~7번에 담긴 시각화 내용과 유사한 내용은 실전 프로젝트 포스팅으로 정리하여, t-test 풀이만 추가 

 

1. t-test 개념 

- 귀무가설: 일반적인 사실 또는 우리가 실험에서 틀리길(기각되길) 바라는 가설
- 대립가설: 우리가 실험에서 맞다고 입증하고자 하는 가설, 차이가 있음을 실험을 통해 입증하고자 하는 가설
- p-value

 └ 귀무가설이 맞다는 가정에서 실제 실험 결과와 같이 귀무가설을 지지하는 결과가 나올 확률

 └ 어떤 실험에서 귀무가설이 “두 그룹의 평균은 같다”라면, p-value는 두 그룹의 평균이 같다는 결과가 나온 확률

 └ p-value가 임의의 수준(ex. 0.05)보다 작으면 귀무가설이 잘못됐을 가능성이 높아 기각하고, 대립가설을 채택

- 가설 검정(t-test)

 └ 두 그룹 간의 차이가 통계적으로 유의미한지를 검정하는 방법 중 하나

 └ 일반적으로 서로 독립적인 두 그룹간의 비교를 통해 두 그룹의 평균값이 다른지를 검정

 └  t-test 결과, 귀무가설이 기각되면 두 그룹 간의 차이는 통계적으로 유의미하다는 것을 의미

 

2. t-test를 위한 t-score 공식 (two-sample t-검정)

- t-score는 두 그룹 간의 평균 차이를 합동 표준 편차(표준 오차)로 나눈 값

(분자) 두 그룹의 평균 전환율과 평균 전환율의 차이

(분모) 합동 표준 편차(두 그룹의 평균 전환율 차이를 얼마나 확신할 수 있는지 측정하는 방법)

└ 단, n값이 충분히 크고 태블로상 계산이기에 자유도는 고려하지 않음 

- 합동 표준편차 부분 수식 풀어서 이해해보기 

└ 그룹1의 표준편차의 제곱 / 그룹1의 사이즈(고유 유저수) + 그룹2의 표준편차의 제곱 / 그룹2의 사이즈(고유 유저수)

└ 두 값을 더한 수치를 마지막으로 루트(제곱근) 처리! 

 

3. 태블로에서 t-test 계산하기

1) 측정값으로 쓸 계산식

① 그룹별 전환수 필드

# ctrl_cnt
if [Group] = 'control' then [converted] end

# test_cnt
if [Group] = 'treatment' then [converted] end

 

② 그룹별 고유 유저 사이즈 필드 

# crtl_sample size
countd(if [Group] = 'control' then [User Id] end)

# test_sample size
countd(if [Group] = 'control' then [User Id] end)

 

 

2) t-score을 구하는 계산식

- STDEV: 표본 집단의 표준 편차
- ABS: 절댓값 반환하는 함수
- POWER: ^(거듭제곱)

- SQRT: 제곱근을 반환 (루트)

ABS(AVG([ctrl_cnt]) - AVG([test_cnt])) /
SQRT((POWER(STDEV([ctrl_cnt]), 2) / [crtl_sample size] )
+
(POWER(STDEV([test_cnt]), 2) / [test_sample size] ))

 

3) t-score를 p-value로 변환해주는 계산식 [문서참조]

2 * ( .5 * exp(-1.2 * power(abs([t-score 계산된 필드명]), 1.3) ) )

 

 

4) 정답 및 해석 

-  p-value가 0.18로 임의 수준(0.05)보다 크므로 랜딩페이지 A안과 B안의 평균 전환율에 유의한 차이가 있다고 보기 어려움 

 

5) 오답 체크

- 제출한 p-value값이 0.36으로 정답(0.18)과 상이하여 틀린 부분 확인 

└ t-score 계산식 분자에 들어가는 전환수 조건에 0이 들어가면서 평균값이 다르게 집계됨 

└ 하기 수식에서 [else 0]을 제외하거나 [else null]로 수정 필요  

if [Group] = 'treatment' then [converted] else 0 end

if [Group] = 'control' then [converted] else 0 end