Python101 - Bài 6: A/B Testing - So Sánh Hiệu Quả Chiến Dịch (T-test & ANOVA)
Sếp hỏi: "Landing Page A hay B bán hàng tốt hơn?". "Khách miền Bắc hay miền Nam chi tiêu nhiều hơn?". T-test và ANOVA trong Python sẽ giúp bạn trả lời bằng con số P-value đầy thuyết phục.

Trong Marketing hiện đại, A/B Testing là vua. Nhưng làm sao biết sự chênh lệch giữa A và B là "thật" hay chỉ do may mắn?
Insight: Đừng chỉ nhìn P-value. Một mẫu thử đủ lớn (n=100.000) thì khác biệt bé tí tẹo cũng có P-value < 0.05. Nhưng khác biệt đó có Ý nghĩa thực tiễn (Practical Significance) không? Ví dụ doanh thu tăng 10đ (P<0.05) thì có đáng để thay đổi cả hệ thống không?
-> Bạn cần quan tâm đến Kích thước hiệu ứng (Effect Size) (ví dụ: Cohen's d). Nó cho biết độ lớn thực sự của sự khác biệt.

Nhìn bằng mắt thường thấy cột B cao hơn A. Nhưng cao hơn có ý nghĩa thống kê không? Hãy hỏi P-value.
1. Independent T-test: So sánh 2 nhóm độc lập
Ví dụ: So sánh chi tiêu của khách hàng Nam và Nữ.
Bước 1: Kiểm tra phương sai đồng nhất (Levene Test)
`pg.homoscedasticity(data=df, dv="Spending", group="Gender")`
Nếu p > 0.05 -> Phương sai đồng nhất -> Dùng T-test thường.
Nếu p < 0.05 -> Phương sai khác nhau -> Dùng Welch ANOVA.
Bước 2: Chạy T-test + Effect Size
`res = pg.ttest(df_male["Spending"], df_female["Spending"], correction=True)`
`print(res)`
Nhìn cột `cohen-d` (Kích thước hiệu ứng) trong kết quả:
- 0.2: Nhỏ (Không đáng kể)
- 0.5: Trung bình (Đáng chú ý)
- > 0.8: Lớn (Wow! Khác biệt rõ rệt - Hãy hành động ngay!)
2. One-way ANOVA: So sánh nhiều nhóm
Ví dụ: So sánh hiệu quả của 3 mẫu quảng cáo (Ad A, Ad B, Ad C).
`res = pg.anova(data=df, dv="CTR", between="Ad_Type")`
`print(res)`
Nếu p-unc < 0.05 -> Các mẫu quảng cáo có hiệu quả khác nhau. Để biết cụ thể ông nào hơn ông nào, ta dùng `pg.pairwise_tests(..., subject="Ad_Type")` (Hậu kiểm Post-hoc).

