A/B Test实战

这篇博客介绍了A/B测试在数据分析中的应用。通过对2017年1月2日至23日一家教育公司网站落地页数据的清洗,发现无缺失值,删除异常和重复记录。在确保样本量满足检测1%提升所需的至少16000样本后,通过假设检验发现新页面的转化率提升在统计学上显著,但是否采纳新页面还需考虑具体业务需求。
摘要由CSDN通过智能技术生成

数据简介

数据集包含了2017年1月2日至2017年1月24日共23天的一家教育公司网站落地页的访问量详情。
落地页有两种方案:
control-访问课程资料
treatment-开始免费试学

变量 描述
user_id 用户ID
timestamp 访问时间
group 访问页面组别,control为控制组,treatment为实验组
landing_page 落地页类型,old_page为旧页面,new_page为新页面
converted 是否转化,1转化,0未转化

数据清洗

df.shape
-> (294478, 5)

数据集共294478行、5列

缺失值

import pandas as pd
df.isnull().sum()
->
user_id         0
timestamp       0
group           0
landing_page    0
converted       0
dtype: int64

数据集无缺失值

异常值

删除控制组+新页面、实验组+旧页面的记录

drop1=df[(df.group=='control')&(df.landing_page=='new_page')].index.to_list()
drop2=df[(df.group=='treatment')&(df.landing_page=='old_page')].index.to_list()
drop=drop1+drop2
df1=df.drop(axis=0, labels=drop)
df1.shape
-> (290585, 5)

重复值

删除同一个用户id的重复记录

df2=df1.drop_duplicates(subset='user_id')
df2.shape
-> (290584, 5)

检验样本量

样本量计算器

df2[df2.group=='control'].converted.mean()
-> 0.1203863045004612

在这里插入图片描述
控制组转化率约为12%,如果我们希望能够检测出1%的提升,则需要至少16000的样本量

df2.group.value_counts()
->
treatment    145310
control      145274
Name: group, dtype: int64

数据集的样本量满足条件

可视化

from matplotlib import pyplot as plt
import seaborn as sns
df3=df2.copy()
df3['day']=pd.to_datetime(df2.timestamp).dt.floor('d')
trend=pd.DataFrame(df3.groupby(['day', 'group'])['converted'].mean())
trend=trend.reset_index()
sns.lineplot(x='day', y='converted', hue='group',data=trend)

在这里插入图片描述
新旧版本落地页的转化率并无明显区别

假设检验

原理

设控制组的转化率为 p 0 p_0 p0,实验组的转化率为 p 1 p_1 p1

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值