前言
利用python进行AB测试自学实践
数据来源:知乎数据分析课程
数据包含用户ID和消费金额两个字段。
目标是提高会员收入,选取“平均消费金额”作为衡量指标。
平均消费金额=销售额/开通会员人数
实验组和对照组区别为用户点击进入VIP步骤界面的不同。
一、AB测试步骤
设定优化目标、提出假设、实验设计、实施实验收集数据、分析结果做出决策
二、明确指标
我们选取“平均消费金额”作为衡量指标,该指标为均值类指标,选择T检验
三、提出假设
原假设:实验组和对照组的平均消费金额相同。
备择假设:实验组和对照组的平均消费金额不同。
四、计算实验样本量
https://bowei-zhang.shinyapps.io/Sample_Size_Calculator/
五、分析结果
#导入相关包
import pandas as pd
from statsmodels.stats.weightstats import DescrStatsW,CompareMeans
#导入对照组数据
ctrldf=pd.read_excel('E:\知乎课程\AB测试数据分析\\知乎课程AB测试数据分析.xlsx',sheet_name='对照组')
ctrl = ctrldf['消费金额']
ctrl
#导入实验组数据
treatdf=pd.read_excel('E:\知乎课程\AB测试数据分析\\知乎课程AB测试数据分析.xlsx',sheet_name='实验组')
treat = treatdf['消费金额']
treat
#使用tconfint_diff函数计算T检验(均值类指标)置信区间,先处理一下数据
cm = CompareMeans(d1=DescrStatsW(data=treat),
d2=DescrStatsW(data=ctrl))
#看实验组和对照组的标准差是否一致,一致用pooled
use='unequal'
if ctrl.std()==treat.std():
use='pooled'
#计算置信区间
ci=cm.tconfint_diff(alpha=0.05,alternative='two-sided',usevar=use)
ci
计算置信区间得(4.892058499513767, 5.538991500486232),我们选择实验组设计。
附加:概率类指标,选择Z检验
部分数据展示
![](https://i-blog.csdnimg.cn/blog_migrate/f8354833fa6835e780f5d340c8e91c46.png)
使用Excel数据透视表计算总人数和点击人数
![](https://i-blog.csdnimg.cn/blog_migrate/2b527b94d19d085c91b8e907766bfd72.png)
分析
#实验组和对照组样本量和转化人数
treatn=145119
treatz=19976
ctrln=145265
ctrlz=17501
import math
#计算转化率
treatp = treatz/treatn
ctrlp = ctrlz/ctrln
#计算置信区间
lower=(treatp-ctrlp)-1.96 * math.sqrt(treatp*(1-treatp)/treatn+ctrlp*(1-ctrlp)/ctrln)
upper=(treatp-ctrlp)+1.96 * math.sqrt(treatp*(1-treatp)/treatn+ctrlp*(1-ctrlp)/ctrln)
print(lower,upper)
计算得置信区间(0.01473803001922366 0.019614322879190963),置信区间大于0,选择实验组,实验组比对照组效果提升[1.47%,1.96%]。