用Python进行AB测试之T检验的案例学习【文末源码地址】

案例背景

产品经理对APP做了许多改动,想要通过AB测试评估一下改动后的效果如何?

其中有一项评估是:签到按钮从蓝色改为红色后,客户点击的次数有没有发生变化。

于是,随机向200名客户投放测试连接,进行了一个月的内测体验。

内测结果数据如下:

在这里插入图片描述

userid:参与内测的用户id

group:参与内测用户使用的版本,分为A版本和B版本

click:参与内测用户点击签到按钮的次数

根据以上200条数据,通过AB测试的方法进行评估。

假设检验解读

假设检验的基本思想:在少量的实验中,小概率事件几乎不可能发生。

一、提出假设

原假设: 在本次测试中,A版本与B版本的平均点击次数在统计学中没有显著性差异

备择假设: 在本次测试中,A版本与B版本的平均点击次数在统计学中有显著性差异

我在查找资料时,一直在思考一个问题:

什么是小概率事件?

以下是我的一些想法,不足之处还请各位指出,不胜感激!

假设我们做了 10000 组测试,每组都有200人参与测试,将每一组实验中的AB版本的签到按钮点击数分别求均值得到,在用A版本的平均值减去B版本的平均值,这样会得到 10000 个平均值差的数据比如:【-20,-14,0,1,2,3,,…】

然后自定义划分一些区间,比如【-30,-28】、…【0,2】、【2,4】等,统计一下每个区间的有多少数据,绘制出的频数直方图,如下图所示:

在这里插入图片描述

用曲线拟合后,如下图所示:

在这里插入图片描述

在曲线图中画了一部分阴影,我们设定阴影部分的面积占全部曲线面积的5%,即:0.05。在统计学中,我们把这个值称为显著性水平

小概率事件就是指我们计算的平均值差值落入阴影部分中。

继续思考一个问题:

那我们应该如何计算这次测试的结果是不是小概率事件呢?

二、检验统计量

经过很多人的研究后,发明了一种T检验统计量,公式如下:

在这里插入图片描述

经过该公式计算出对应的T值后,经过查表就能得到对应的P值。即:我们这次测试的结果在曲线图中,对应的面积占比有多大。

如果P值大于0.05,图像可能如下所示:

在这里插入图片描述

说明我们本次的测试的结果在统计学上并不是一个小概率事件,而是大概率会出现的。即原假设中A版本与B版本没有显著性差异是大概率会出现的事件,A版本与B版本没有太大差异。

如果P值小于0.05,图像可能如下所示:

在这里插入图片描述

说明我们本次测试的结果是一个小概率事件,根据假设检验的基本思想:在少量的实验中,小概率事件几乎不可能发生。 但是我们这次的测试发生了小概率事件,所以我们的原假设有问题,需要拒绝。即假设中A版本与B版本没有显著性差异是小概率事件。A版本与B版本有差异。

三、代码实现

import random
import pandas as pd
import numpy as np
from scipy import stats

df = pd.read_excel("./AB测试数据.xlsx")

a = df[df["group"]=="A"]["click"]
b = df[df["group"]=="B"]["click"]

print(a.mean(),b.mean())
# 15.22 15.96

# 检验方差齐次性
print(stats.levene(a, b))

# 独立样本T检验
# 如果LeveneResult中的pvalue<0.05,equal_var=False,否则equal_var=True
print(stats.ttest_ind(a, b, equal_var=True))
print(stats.ttest_ind(a, b, equal_var=False))

运行结果如下:

LeveneResult(statistic=0.19467268623024872, pvalue=0.6595371210000016)
Ttest_indResult(statistic=-0.6277510508489583, pvalue=0.5308903548838031)
Ttest_indResult(statistic=-0.6277510508489583, pvalue=0.5308924610673192)

四、结论

检验方差齐次性结果pvalue>0.05,说明两组数据方差同质性。

使用独立同方差样本T检验,结果pvalue为0.53>0.05,所以接受原假设,即:A版本与B版本没有太大差异。

源码地址

链接:https://pan.baidu.com/s/14EU6EK3FnfM_MovvasjGeg?pwd=4b3i
提取码:4b3i

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

帅帅的Python

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值