주제
1. OLAP 큐브
2. AB Test 분석 시각화
3. 최종 대시보드 생성
1. OLAP 큐브
- 미리 모든 조합에 대해 지표 데이터를 수집한 것을 뜻한다(그림 출처)
- 이를 바탕으로 시각화를 진행함
- 장점 : 속도가 빠름
- 단점 : 필터가 변경될 때마다 데이터 수집 방법을 바꿔야함

1.1 가상 데이터로 OLAP 큐브 만들기
- session 기반으로 계산
- Variant/Date/Age/Gender별로 Measure를 계산
- session 수, impression, click, purchase, revenue
- 최종 two-sample t-test를 수행하려면 measure 별로 다음 세가지를 계산
- 크기(n)
- 값의 합산
- 값의 제곱의 합산
1.2 OLAP 큐브 계산 SQL
- Tableau에서는 이 계산을 모든 조합에 적용한 후 사용
- 다른 대시보드 툴에서는 필터가 바뀔 때마다 쿼리를 보내는 방식
-- session_hypercube.csv
SELECT datestamp, variant_id, age, gender,
'impression' category,
count(1) n, -- number of sessions
sum(num_of_items) sum,
sum(num_of_items*num_of_items) sum2
FROM jyunghyechoi.analytics_variant_user_daily vds
GROUP BY 1, 2, 3, 4, 5
UNION
SELECT datestamp, variant_id, age, gender,
'click' category,
count(1) n, -- number of sessions
sum(num_of_clicks) sum,
sum(num_of_clicks*num_of_clicks) sum2
FROM jyunghyechoi.analytics_variant_user_daily vds
GROUP BY 1, 2, 3, 4, 5
UNION
SELECT datestamp, variant_id, age, gender,
'purchase' category,
count(1) n, -- number of sessions
sum(num_of_purchases) sum,
sum(num_of_purchases*num_of_purchases) sum2
FROM jyunghyechoi.analytics_variant_user_daily vds
GROUP BY 1, 2, 3, 4
UNION
SELECT datestamp, variant_id, age, gender,
'revenue' category,
count(1) n, -- number of sessions
sum(revenue) sum, sum(revenue*revenue) sum2
FROM jyunghyechoi.analytics_variant_user_daily vds
GROUP BY 1, 2, 3, 4;
- sum : 세션에서 발생한 행동의 총합
- sum2 : 세션에서 발생한 행동의 제곱의 총합
2. Tableau를 이용한 AB Test 분석 시각화
2.1 Z-score 계산 방법
- A와 B가 50:50이 되어야 함
- 귀무가설 : PB가 0.5일 것이다.
- Z-score의 값이 1.96보다 크면 녹색, -1.96보다 작게 나오면 빨간색, 그 외는 회색으로 표시
- 큐브에 있는 세션수와 지표별 값의 합과 값의 제곱의 합을 사용
| Bucket B | Bucket A |
| n_b : n(세션의 수) | n_a : n(세션의 수) |
| mean_b : r_sum / n (매출액 평균) | mean_a : r_sum / n (매출액 평균) |
| square_b : r2_sum / n (매출액 제곱 평균) | square_a: r2_sum / n (매출액 제곱 평균) |
| var_b : sqaure_b - mean_b * mean_b (매출액 분산) | var_a : sqaure_a - mean_a * mean_a (매출액 분산) |
- t-score = (mean_b - mean_a) / math.sqrt(var_a / n_a + var_b / n_b)
2.2 Traffic Trend Chart 만들기
- 우선 sessions_hypercube.csv를 로컬에 다운받아 Tableau에서 불러오기
- 새로운 Sheet에 Traffic Trend로 이름을 변경
- Measures에 우클릭하고 Create Calculated Field 메뉴를 선택하여 새로운 필드 추가
- n_test : test(B)에 속한 세션의 수

- f_test : test(B)에 속한 세션의 전체에서의 비율. 이 값이 통계적으로 50%임을 Proportional Z-test로 검증해야함

- 새로 만들어진 두 개의 필드를 Rows로 드래그 앤 드롭
- f_test 우클릭 후 Dual axis로 변경
- Columns에는 Datestamp를 드롭한 후 포맷을 Month/Day/Year를 선택
- n_test는 bar 타입으로 변경 후 색을 회색으로 변경
2.2.1 Traffic Trend Chart z-score 계산
- 총 4개의 새로운 필드를 추가 : f_test_diff, f_test_err, f_test_stat, f_test_95CL
# f_test_diff
[f_test] - 0.5
# f_test_err
sqrt(([f_test] - [f_test]^2) / sum([N]))
# f_test_stat
[f_test_diff] / [f_test_err]
# f_test_95CL
IF abs([f_test_stat]) > 1.96 THEN 1 else -1 END
- f_test_95CL을 f_test의 color로 이동하고 컬러 팔레트를 변경

- Traffic Trend Chart 완성 모습

2.3 Impression 차트 만들기
- 새로운 시트를 만들고 Impression으로 이름 변경
- 새로운 필드 생성
| 필드 | 계산식 |
| n_ctrl | SUM(if [Variant Id]='control' then [N] end) |
| ctrl | SUM(if [Variant Id]='control' THEN [sum] END)/[n_ctrl] |
| ctrl_var | SUM(if [Variant Id]='control' THEN [sum2] END)/[n_ctrl]-[ctrl]^2 |
| test | SUM(if [Variant Id]='test' THEN [sum] END)/[n_test] |
| test_var | SUM(if [Variant Id]='test' THEN [sum2] END)/[n_test]-[test]^2 |
| diff | [test]-[ctrl] |
| diff_frac | [diff]/[ctrl] |
| diff_err | sqrt([test_var]/[n_test]+[ctrl_var]/[n_ctrl]) |
| diff_95CL | IF [zscore] > 1.96 THEN 1 ELSEIF [zscore] < -1.96 THEN -1 ELSE 0 END |
| zscore | [diff]/[diff_err] |
- Category를 filters에 추가하고 impression을 선택

- Measure Names를 Rows로 드롭한 후, 필터 수정메뉴에서 ctrl, diff, diff_frac, zscore를 선택
- Impression 차트도 마찬가지로 diff_95CL을 이용하여 컬러 코딩 진행
- diff와 diff_95CL을 Marks에 추가. diff_95CL은 또 다시 Color에 추가하여 위와 같은 팔레트 옵션을 지정한다
- 이렇게 하면 zscore가 1.96보다 크면 초록색, -1.96보다 작으면 빨간색, 그 이외에는 회색으로 표시가 되어 보기가 편해진다

2.4 Parameter 추가하기
- 파라미터 : 어떤 변수를 대체할 수 있는 워크북 변수로, 숫자나 날짜, 문자열이 될 수 있다
- 이 경우에는 Age, Gender, Datestamp를 기준으로 볼 수 있게 옵션을 추가
- 좌측 하단에 Parameter 메뉴 우클릭 후, Create Parameter.. 선택
- 파라미터명은 selected_dimension으로 지정, 타입은 문자열
- Allowable values에 직접 변수를 추가하면 된다

- 이후에 dimension이라는 새로운 필드 생성

- dimension 필드를 Columns로 드롭
- Age와 Gender는 Filters 부분에 드롭하면 필터 박스가 생성된다
- Datestamp는 필터 박스에서 Range of Dates를 선택
- Age와 Gender를 우클릭하여 Show Filter 메뉴를 선택하면 차트 오른쪽에 필터가 생성된다
- 미리 만들어둔 selected_dimension 파라미터 우클릭 후 Show Parameter를 클릭하면 dimension을 고를 수 있는 박스가 생성된다

2.5 Click, Purchase, Revenue 차트 만들기
- Impression 시트를 Duplicate하여 동일하게 복제한 후, category 필터의 값만 적절하게 변경하면 된다
3. 최종 대시보드 생성
- 새로운 대시보드를 생성하여 Traffic Trend chart부터 Impression/click/purchase/revenue 차트까지 모두 추가한다
- 필요한 필터를 빼고는 다 제거
- Impression/click/purchase/revenue 차트는 Fit Width로 변경하여 폭을 조정
- Impression 차트에서 datestamp 필터를 선택하면 날짜를 조정하며 볼 수 있는 박스가 생성된다
- 각 필터를 우클릭하여 Apply to Worksheets → All Using This Data Source를 선택해야 모든 차트에 대해 워크시트가 적용이 된다
- 마지막으로 Tableau Public에 공유


'Data Science > TIL (Today I Learned)' 카테고리의 다른 글
| 프로그래머스 데이터분석 데브코스 1기 - 72일차 (0) | 2024.03.05 |
|---|---|
| 프로그래머스 데이터분석 데브코스 1기 - 71일차 (1) | 2024.03.04 |
| 프로그래머스 데이터분석 데브코스 1기 - 69일차 (0) | 2024.02.29 |
| 프로그래머스 데이터분석 데브코스 1기 - 68일차 (1) | 2024.02.28 |
| 프로그래머스 데이터분석 데브코스 1기 - 67일차 (1) | 2024.02.27 |