当前位置: 首页 > backend >正文

数据分析学习笔记——A/B测试

目录

前言

A/B测试中的统计学方法

假设检验

Levene's Test莱文测试

t 检验(两组均值差异)

实战案例

数据来源及参考资料

代码详解

导入数据

计算ROI

Request检验

GMV检验

ROI检验

结语


前言

什么是A/B测试?说白了就是中学生物实验里常说的控制变量。实验对象分为A组(对照组)、B组(实验组)来测试某个行为的影响。在互联网企业,为了判断某个行为的效益,或者挑选更加合适的方案就会采用A/B测试。A/B测试的核心在于两组样本除了实验条件不一样,其他条件都一样。因此A/B测试依赖如下假设。

  • 每个因子水平的数据均呈正态分布​
  • 案例独立性:样本案例应相互独立​
  • 方差的同质性:同质性是指各组之间的方差应近似相等​
  • 从因子水平定义的总体中独立且随机地获得观察结果

A/B测试中的统计学方法

假设检验

假设检验的原理其实是反证法。先对总体提出一个假设(原假设 H_0,再通过样本数据判断该假设是否成立。若样本数据与原假设矛盾,则拒绝 H_0,接受备择假设H_1;反之,则不拒绝 H_0。关键逻辑为小概率事件原理。假设检验依赖 “小概率事件在一次试验中几乎不会发生” 的原理:

1. 若原假设成立,那么某个与其相关的事件A发生的概率极小。

2. 若在一次抽样中,事件A竟然发生了,则有理由怀疑原假设的正确性。

也就是我们常说的具有统计学上的显著意义。而这个事件A的概率也就是我们常说的P值。而往往我们还会设定一个显著性水平,这个显著性水平是标准的小概率事件的概率(这么说不知道对不对啊,描述感觉不太严谨),由前人大量的实践得到的。当P值小于这个显著性水平时,则符合假设,因为这个小概率事件的概率比假定的标准还小。当P值大于这个显著性水平时,则怀疑假设,因为这个小概率事件的概率比假定的概率要大,那么原假设便值得怀疑。

Levene's Test莱文测试

Levene's test 主要用于检验多个组数据的方差是否相等,适用于两组或多组数据。

t 检验(两组均值差异)

适用于 正态分布数据 且 样本量较小(n≤30)的两组均值比较

实战案例

对滴滴打车的运营数据进行A/B测试,判断投入优惠卷对ROI、GMV、订单数量(requests)是否有影响。

数据来源及参考资料

工作台 - Heywhale.com

方差分析简介(结合COVID-19案例)

代码详解

导入数据

#数据导入
import pandas as pd
test = pd.read_excel('test.xlsx')
test.head()

结果

计算ROI

#计算ROItest['ROI']=test['gmv']/(test['coupon per trip']*test['trips'])
test.head()

结果

其实这里有一个问题,这个成本对应的优惠券的投入成本,但是这里gmv是优惠券带来的利润增长,还是总利润呢?如果是总利润,那对应的是总成本。不能把其他行为带来的收益增长算到投入优惠券上去。

Request检验

#levene检验requests是否齐方差requests_A=test[test.group=='control'].requests
requests_B=test[test.group=='experiment'].requestsimport scipy.stats as st
st.levene(requests_A,requests_B)

#配对样本t检验(两独立样本t检验之前需检验是否齐方差,此处不需要)st.ttest_rel(requests_A,requests_B)

GMV检验

#levene检验gmv是否齐方差gmv_A=test[test.group=='control'].gmv
gmv_B=test[test.group=='experiment'].gmvst.levene(gmv_A,gmv_B)

#配对样本t检验(两独立样本t检验之前需检验是否齐方差,此处不需要)st.ttest_rel(gmv_A,gmv_B)

ROI检验

#levene检验ROI是否齐方差ROI_A=test[test.group=='control'].ROI
ROI_B=test[test.group=='experiment'].ROIst.levene(ROI_A,ROI_B)

#配对样本t检验(两独立样本t检验之前需检验是否齐方差,此处不需要)st.ttest_rel(ROI_A,ROI_B)

结语

一起学习,共同进步!

http://www.xdnf.cn/news/9607.html

相关文章:

  • 题目 3314: 蓝桥杯2025年第十六届省赛真题-魔法科考试
  • Fastmcp本地搭建 ,查询本地mysql,接入agent-cursor--详细流程
  • Odoo 条码功能全面深度解析(VIP15万字版)
  • 仿真科普|弥合市场需求断层,高性能仿真,“性能”与“安全”如何兼得?
  • Tesseract 字库介绍与训练指南
  • 深兰科技董事长陈海波率队考察南京,加速AI大模型区域落地应用
  • 设计模式26——解释器模式
  • 软件测试环境搭建及测试过程
  • 在Shopify性能调优过程中,如何考虑用户体验的完整性?
  • C语言进阶--数据的存储
  • 解决Window10上IP映射重启失效的问题
  • 第13章-2 合规控制构建
  • node创建自己的CLI脚手架(强化基础)
  • 【数据库系列】bulk_save_objects 与 bulk_insert_mappings 对比
  • Redis 5 种基础数据结构?
  • 解决 Go 中 `loadinternal: cannot find runtime/cgo` 错误
  • 从零开始学习PX4源码23(飞行模式管理)
  • windows安装Ubuntu(通过WSL,非双系统,非虚拟机)
  • Three.js 直线拐角自动圆角化(圆弧转弯)
  • 【unity游戏开发——编辑器扩展】AssetDatabase公共类在编辑器环境中管理和操作项目中的资源
  • MySQL如何开启死锁检测?
  • C 语言学习笔记(结构体2)
  • 国内有哪些智能外呼机器人
  • 单例模式的隐秘危机
  • 2025.5.23 【ZR NOI模拟赛 T3】高速公路 题解(容斥,高维前缀和,性质)
  • 【Redis】基本命令
  • Caddy如何在测试环境中使用IP地址配置HTTPS服务
  • VR 汽车:引领生产与设计的革命性飞跃​
  • 高端制造行业 VMware 替代案例合集:10+ 头部新能源、汽车、半导体制造商以国产虚拟化支持 MES、PLM 等核心应用系统
  • 漫画Android:Handler机制是怎么实现的?