看书标记【R语言数据分析项目精解:理论、方法、实战 5】


【R语言数据分析项目精解:理论、方法、实战】

Chapter 5 用数据驱动业务——AB测试

5.1项目背景、目标和方案

5.1.1项目背景

AB测试就是为同一个目标制定两个或多个方案,并将用户流量分成A、B两组,两组用户特点类似且同时进行实验,一段时间后分别统计两组用户的表现,然后进行对比,指标好的一组所对应的版本就为胜出的方案。

5.1.2项目目标

使用统计学方法建立一套完整的AB测试计算体系
(1)自动化切分流量,使得切分的流量用户的特点尽可能相同。
(2)设定AB版本比较指标。
(3)确定比较AB版本哪个好的统计学方法。
(4)上述过程的自助化实现。

5.1.3项目方案

(1)自动化切分流量:随机多层次分流策略
(2)设定AB版本比较指标策略:结合实际业务,与产品经理共同商议决定。
(3)比较AB版本的统计学方法:假设检验,t检验、z检验、贝叶斯推论等。

5.2项目技术理论简介

5.2.1自动化分流策略

分流时要考虑:
(1)采样的相似性:分流后各组的用户群体特征尽可能一致
(2)采样的代表性:有时不会用到全流量,往往一开始先在小部分人群中做实验,然后逐渐扩展到全流量,那么选择的小部分用户是否能代替总体就变得很重要。
(3)是否需要按层次进行分流:不同特征的用户具有不同的行为,业务方需要确认是否要对用户进行分层。不同层面上分别进行AB测试,以便掌握不同群体对某个因素的敏感性。
(4)流量的共用性:如何保证各实验之间的正交性,若实验分流流量不满足正交性,则无法判断结果的可靠性。
常用的一种分流策略——分层实验模型,可以满足以上要求。
分层实验模型的结构

5.2.2整体评估指标(Overall Evaluation Criterion)

整体评估指标是衡量实验好坏的量化标准。在实验设定之前,必须根据业务需要事先规定指标定义,如转
化率(访问的所有用户中最终下单的用户比例)、人均下单量(访问的
所有用户中平均每人下单个数)、人均利润(访问的所有用户中平均每
人给企业贡献的利润)。整体评估指标对于实验来说至关重要,主要体
现在如下两个方面。
(1)每个指标都体现某个方面的内容,如转化率侧重于用户最终下单的转化,强调的是用户的转化程度。
(2)不同整体评估指标的选择,对今后计算最小样本量和实验周期有很大的影响。

5.2.3概率论预备知识

1.正态分布
2.中心极限定理
3.卡方分布、t分布、F分布

5.2.4假设检验

1.在一定的统计假设的前提下,如果发生了小概率事件,我们就有一定的理由怀疑假设的真实性,从而拒绝接受原假设。(贝叶斯的思想是,通过手上已有的证据,判断原假设的可能性)
2.若干基本概念
(1)原假设和备择假设
(2)双边检验与单边检验
(3)第一类错误和第二类错误
(4)置信度α
3.p-value
假设检验主要是先观察样本结果,再计算总体假设的可能性,最后判断出假设的正确与否。那么可能性的指标是什么呢?需要根据显著性水平p-value进行计算。p-value是指在原假设为真的条件下,样本数据拒绝原假设这个事件发生的概率。
4.t检验和z检验
5.功效(power)
当原假设不成立时,拒绝原假设的概率为1-β,即在备择假设是真时,我们能否定原假设的可信程度。在假设检验中,如果功效太低,这时即使两个样本间确实存在差异,也很难被该检验方法发现。在实际应用中,若检验的结果是非显著的,则需要查看功效是否足够大(一般在80%~95%之间)。如果这时候功效的值低于80%,则说明“非显著”的结果不可靠,需要扩大样本量重新观察数据结果,直到结论显著或功效达到80%为止。(不显著等情况下是否还需要再观察的依据)
6.最小样本量
最小样本量是使得实验结果可信所达到的最小样本个数,若样本个数不够,得到的结果可信度不高,即使得出了想要的结果也不能使用。最小样本量和功效是可以相互推导的,一般情况下,功效越高,所要求的最小样本量也越大。
7.AA测试
某一个实验,最终的结果为新、老版本整体评估指标具有显著差异,而AA测试结果也同时显示具有显著性差异,这时候就会出现一个问题,新、老版本之间的差异究竟是版本之间的不同引起的还是新、老版本用户特性不同所导致的?为了验证这个事件有无发生,在分流到新、老版本之后,被分流到老版本的用户群体还会随机分成两个部分,这两个部分同样会进行显著性检验,此类检验称为AA测试。
8.AB测试整个流程

  • 设计新版本功能,选定比较对象(A版本、B版本等)。
  • 确定整体评估指标,根据业务需求和KPI,设定实验好坏的评价指标。
  • 确定分流比例,最好是均匀分流。
  • 确定置信度、功效值,根据整体评估指标计算最小样本量。
  • 开始实验并且每天跟踪数据。
  • 当达到最小样本量时,查看显著性结果、功效和AA测试结果。
  • 耐心观察一段时间,待结果稳定时得出最终结果。
  • 关闭实验,制作实验结果报告。
5.2.5三个问题

(1)一旦结果显著,是否立刻得出结论?
“新奇效应”,用户对新产品没有一个适应的过程,一般情况下前几天的波动会相对较大,显著性结论可能会交替出现,等结果稳定再下结论。
(2)统计上显著是否真的表示新版本一定好?
结果只表明整体评估有显著差异,并不代表新版本的商业价值,而要结合实际的成本等进一步衡量。
(3)AB测试
从实验目的方面统计,点击率是很容易提高的,但是流失率是很难改进的,不要把精力放在优化某个页面的点击率上。尽量不要做很复杂的大量改动的实验,而是要做很简单的小的迭代。

5.3项目实践

(1)检测敏感度为0.02,即当转化率上升或下跌2%时,认为其有显著差异。
(2)希望有90%的概率检测到异常。
(3)希望有95%的把握不会误报差异显著。

minsample<-function(alpha=0.05,power=0.9,lift=0.02,mu,sd_num){
    z<-(qnorm(1-alpha/2)+qnorm(power))^2
    d<-(lift*mu/sd_num)^2
    minsample<-2*z/d
    return(minsample)
}
minsample(,,,0.1,1.29)   #计算最小样本量

#为了降低样本量,把power降低到0.8和敏感度减弱到0.05,且选取了变异系数较小的整体指标。
minsample(0.05,0.8,0.02,0.09,0.488)
#固定置信度和power
minsample_fun<-function(lift,mu,sd_num){
    fm1<-(sd_num*(qnorm(0.975)+qnorm(0.8)))/mu
    fm<-2*(fm1^2)
    minsample<-fm/(lift^2)
    return(minsample)
}
##提升度和样本量存在相关关系,提升度越灵敏越小越好
#提升度从0.01到0.05
lift<-seq(0.01,0.05,0.001)
nlift<-length(lift)
samplen<-c()

#生成不同提升度下的最小样本量
for (i in 1:nlift){
   minsample<-minsample_fun(lift[i],0.09,0.488)
   samplen[i]<-ceiling(minsample)
}

#绘制曲线图
plot(samplen,lift,type='o')
abline(h=0.02)  #绘制提升度与最小样本量的关系,提升度从0.01到0.05,以步长0.001变化,取趋势变化点的值。
  • 20
    点赞
  • 24
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值