最近在学习优达学城Udacity的“数据分析师”的“A/B测试”部分,系统学习了硅谷的A/B测试的理念,流程,设计及分析结果,在这里跟大家分享下。
先普及下什么是“A/B测试”
A/B测试是为Web或App界面或流程制作两个(A/B)或多个(A/B/n)版本,在同一时间维度,分别让组成成分相同(相似)的访客群组随机的访问这些版本,收集各群组的用户体验数据和业务数据,最后分析评估出最好版本正式采用。
AB测试.jpg项目概述
在本项目中,你所要考虑的是由优达学城运行过的一个真实试验。具体数字已做更改,但是模式并没有改变。
你要将试验的想法变成一个完整定义的设计、分析其结果,并提供一个高层次的后续实验。
如何完成这个项目
请查看此处的项目指南,回答相关问题。
为什么进行这个项目?
在这个项目中,你需要决定如何进 行A/B 测试,并分析测试结果的数据。这些都是从线上试验得出结论所需的重要技能。
我会学到什么?
完成这个项目后,你将能够:
- 选择合适的指标,来评估你想要实施的改动
- 定义和验证这些指标
- 根据所需的样本量和预期风险,计划试验进行的时间
- 对结果进行完整性检查,确保一切顺利
- 根据结果得出结论
- 建议是否要实施改动
试验设计
指标选择
列出你将在项目中使用的不变指标和评估指标。(这些应与你在“选择不变指标”和“选择评估指标”小测试中使用的指标一样)
对于每个指标,解释你为什么使用或不使用它作为不变指标或评估指标。此外,说明你期望从评估指标中获得什么样的试验结果。
1. 不变指标:
- (1) Number of cookies(Cookie的数量):
cookie是分组单元,必须是不变指标,而且测试的是首页的子页面,不会影响首页的情况,也就不会影响cookie数量;
期望结果:不变;
- (2) Number of clicks(点击次数):
首页没有任何改变,cookie不变,点击次数也不变;
期望结果:不变;
- (3) Click-through-probalility(点进概率):
点击次数不变,cookie不变,点进概率也不变;
期望结果:不变
- 评估指标:
-
(1)Gross conversion(总转化率):
因为提醒用户每周5小时学习时间,可能会影响完成登录并参加免费试学的用户id的数量,这也是我们想通过A/B测试来研究的问题。因此,是个很好的评估指标。期望结果:减小;
实验预期是减少因为没有足够的时间而离开免费试学,并因此受挫的学生数量,即:分子会减小,分母不变,因此总转化率期望是减小;
-
(2)Retention(留存率):
因为提醒用户每周5小时学习时间,会对付费用户 和 完成免费试用的用户的比例产生影响,是个很好的评估指标;期望结果:增大;
因为根据预期,期望最终通过免费试学和最终完成课程的学生数量不变,而登录的用户id数量减少,根据公式,留存率会增大;
-
(3) Net conversion(净转化率):
为提醒用户每周5小时学习时间,会对付费用户产生影响,因此净转化率是个很好的评估指标;期望结果:不变;
因为根据实验预期,付费用户不变,点击“开始免费试学”按钮的唯一cookie数量不变,所以净转化率的期望结果不变;
- 无关指标:
-
(1)Number of user-ids(用户id的数量):
根据实验设计,用户id数量有可能变化,因此不能是不变指标;
同时,也不是好的评估指标,因为如果实验组和控制组的用户id变化很大,
但是因为实验组和控制组的点击cookie数量可能有不同,所以测试出来的变化不一定仅仅是因为试验,因此不能准确地评估试验的效果。
怎么样才能更好地评估呢?我们可以将用户id的数量除以点击的cookie的数量(进行归一化操作),只比较比例,这样就可以消除cookie数量不同的影响了。
归一化操作得到的度量也就是总转化率,在总转化率存在的条件下,我们可以不选择用户id作为评估度量。
测量标准偏差
列出你的每个评估指标的标准偏差。(这些应是来自“计算标准偏差”小测试中的答案。)
对于每个评估指标,说明你是否认为分析估计与经验变异是类似还是不同(如果不同,在时间允许的情况下将有必要进行经验估计)。简要说明每个情况的理由。
** 标准偏差根据公式: sqrt(p * (1-p) / N) 计算 **
-
(1) Gross conversion(总转化率):
p = 0.20625(给出)
N= 5000*0.08 = 400
Std dev = sqrt(0.20625 * (1-0.20625) / 400) = 0.0202
总转化率是以cookie数量作为分母,也是转移的单位。转移单位等于分析单位,标明分析估计值与经验变异类似;
-
(2) Retention(留存率):
p = 0.53(给出)
N= 50000.080.20625 = 82.5
Std dev = sqrt(0.53 * (1-0. 53) / 82.5) = 0.0549
留存率是以“登录用户数”为分母,与转移单位cookie不相似,分析单位和转移单位不相似,所以分析估计值与经验变异不相似;
-
(3) Net conversion(净转化率):
p = 0.1093125(给出)
N= 5000*0.08 = 400
Std dev = sqrt(0.1093125 * (1-0.1093125) / 400) = 0.0156
净转化率是以cookie数量作为分母,也是转移的单位。转移单位等于分析单位,标明分析估计值与经验变异类似;
规模
样本数量和功效
说明你是否会在分析阶段使用 Bonferroni 校正,并给出实验正确设计所需的页面浏览量。(这些应是来自“计算页面浏览量”小测试中的答案。)
不使用Bonferroni校正;
因为本试验中总转化率和净转化率并非是独立的,而是相关联的,使用Bonferroni校正会使试验结果过于保守;
页面浏览量通过在线计算器(http://www.evanmiller.org/ab-testing/sample-size.html)计算样本量(alpha = 0.05,beta = 0.2),再转化为实验组的页面浏览量,再乘以2得出总的页面浏览量:
-
(1) Gross conversion(总转化率):
参数:baseline conversion rate:20.625%(给出),
Minimum detectable effect:1%(给出),
样本数量:25835
实验组页面浏览量:25835/0.08 =322938
总页面浏览量:322938 * 2 = 645875
-
(2) Retention(留存率):
参数:baseline conversion rate:53%(给出),
Minimum detectable effect:1%(给出),
样本数量:39115
实验组页面浏览量:39115/0.20625/0.08 =2370606
总页面浏览量:2370606 * 2 = 4741212
-
(3) Net conversion(净转化率):
参数:baseline conversion rate:10.93%(给出),
Minimum detectable effect:0.75%(给出),
样本数量:27413
实验组页面浏览量:27413/0.08 =342663
总页面浏览量:342663 * 2 = 685325
取其中较大值,但是留存率算出来需要的页面浏览量474万,相对于每天4万的页面浏览量太大了,所以舍弃掉 留存率这个指标;
在总转化率和净转化率算出的取较大值,最后使用 净转化率需要的页面浏览量685325;
持续时间和暴光比例
说明你会将多少百分比的页面流量转入此试验,以及鉴于此条件,你需要多少天来运行试验。(这些应是来自“选择持续时间和曝光”小测试中的答案。)
说明你选择所转移流量部分的原因。你认为此试验对优达学城来说有多大风险?
曝光比例是0.8;
因为,曝光流量比例主要是根据对实验的风险容忍度决定的,还要考虑到实验的周期不能太长;
从风险上来说,
- (1) 本试验只是询问用户每周能投入多少时间学习,不会对用户的身体,心理等造成不良影响,不涉及道德伦理问题;
- (2) 收集投入学习时间的数据,不具有个人识别性的信息,不是敏感数据;
- (3) 对网站来说,不涉及网站及后台,数据库的架构等关键节点,对数据库安全没有影响;
因此试验风险较小,可以考虑给出50%--100%的流量。
从实验周期上来说,每天页面总流量是4万,需要的总流量是68.5万,分别计算需要的时间,50%流量需要35天,100%流量需要18天;
综合考虑风险容忍度和试验周期,我选择了曝光80%的流量,持续时间22天的方案;
试验分析
合理性检查
对于每个不变指标,对你在95%置信区间下期望观察到的值、实际观察的值及指标是否通过合理性检查给出结论。(这些应是来自“合理性检查”小测试中的答案)
对于任何未通过的合理性检查,根据每日数据解释你觉得最有可能的原因。在所有合理性检查通过前,不要开始其他分析工作。
-
(1) Number of cookies(Cookie的数量):
控制组页面总量:345543
实验组页面总量:344660
页面总量:690203
Cookie分布概率:0.5
SE = sqrt(0.5*(1-0.5)/( 345543+344660) ) = 0.0006018
m = SE * 1.96 = 0.0011796
置信区间=[ 0.5-m, 0.5+m] = [0.4988, 0.5012]
观察值 = 344660 / 690203 = 0.5006
通过合理性检查
-
(2) Number of clicks(点击次数):
控制组总量:28378
实验组总量:28325
总量:56703
Cookie分布概率:0.5
SE = sqrt(0.5*(1-0.5)/( 28378 +28325 )) = 0.0021
m = SE * 1.96 = 0.0041
置信区间=[ 0.5-m, 0.5+m] = [0.4959, 0.5041]
观察值 = 28378 / 56703 = 0.5005
通过合理性检查
-
(3) Click-through-probalility(点进概率):
控制组概率:0.0821258
SE = sqrt( 0.0821258 * (1-0.0821258) / 344660 ) = 0.000468
m = SE * 1.96 = 0.00092
置信区间=[ 0.0821258-m, 0.0821258+m] = [0.0812, 0.0830]
观察值 = 0.0821824
通过合理性检查
结果分析
效应大小检验
对于每个评估指标,对试验和对照组之间的差异给出 95% 置信区间。说明每个指标是否具有统计和实际显著性。(这些应是来自“效应大小检验”小测试的答案。)
-
(1) Gross conversion(总转化率):
Control控制组 Experiment实验组
Clicks点击 17293 17260
Enrolment登录 3785 3423
Gross conversion(总转化率) 0.2189 0.1983
Pooled Probability=(3785+3423)/ (17293+17260) = 0.2086
SE = sqrt(0.2086 * (1-0.2086) / (1/17293 + 1/17260 ) = 0.004372
m = SE * 1.96 = 0.008568
d = 3423/17260 - 3785/17293 = -0.02055
置信区间=[ -0.02055-m, -0.02055+m] = [ -0.0291, -0.0120 ]
置信区间不包括0,具有统计显著性;
置信区间不包含d_min,具有实际显著性
-
(2) Net conversion(净转化率):
Control控制组 Experiment实验组
Clicks点击 17293 17260
Payment付费 2033 1945
Gross conversion(总转化率) 0.1176 0.1127
Pooled Probability=(2033+1945)/ (17293+17260) = 0.1151
SE = sqrt( 0.1151 * (1 - 0.1151) / (1/17293 + 1/17260) = 0.003434
m = SE * 1.96 = 0.006731
d = 1945/17260 - 2033/17293 = -0.004874
置信区间=[ -0.004874-m, -0.004874+m] = [ -0.01160, 0.001857 ]
置信区间包括0,不具有统计显著性;
置信区间包含d_min(+/- 0.0075),不具有实际显著性;
符号检验
对于每个评估指标,使用每日数据进行符号检验,然后报告符号检验的 p 值以及结果是否具有统计显著性。(这些应是“符号检验”小测试中的答案。)
利用在线计算器计算:http://graphpad.com/quickcalcs/binomial1.cfm
-
(1) Gross conversion(总转化率):
成功数量:4
试验次数:23
概率:0.5
双尾P值:0.0026
双尾P值0.0026 小于 alpha 水平0.025,具有统计显著性;
-
(2) Net conversion(净转化率):
成功数量:10
试验次数:23
概率:0.5
双尾P值:0.6776
双尾P值0.6776 大于 alpha 水平0.025,不具有统计显著性;
汇总
说明你是否使用了 Bonferroni 校正,并解释原因。若效应大小假设检验和符号检验之间存在任何差异,描述差异并说明你认为导致差异的原因是什么。
没有使用Bonferroni校正,因为本试验中的总转化率和净转化率不是独立的,是高度关联的,使用会使得实验结果过于保守;
建议
提供建议并简要说明你的理由。
不建议启动试验;
因为总转化率具有统计和实际显著性,且为负,说明试验会减少因为没有足够的时间而离开免费试学,并因此受挫的学生数量,这个符合试验预期。
但是净转化率的置信区间包含负数,置信区间的含义是”我们有95%的信心试验结果会落在这个区间“,根据此处的计算结果(-0.0116, 0.0019),也就是说有很大的概率净转化率会减少,并且有一定的概率净转化率的减少会超过实际显著性0.0075。因此我们无法说明”降低的程度不大“。
所以不建议启动。
后续试验
对你会开展的后续试验进行概括说明,你的假设会是什么,你将测量哪些指标,你的转移单位将是什么,以及做出这些选择的理由。
试验概述:
说一下我自己的亲身体验,从我开始知道优达学城,到付费报名数据分析师,中间有大概6个月的时间,期间有体验过纳米学位试学,但当时有些内容根本看不懂,编程之前也没有学习过,很懵,也不知道该怎么学,学习路径怎样,学习后的就业问题等等,都不清楚。
试用到期后我也就没有付费,后来就开始自己摸索这学习编程,找就业方面的资料等,直到我看了一个数据分析师毕业学员的分享,才真正解答了我的疑惑,也就报名正式开始学习了。
我总结下来,问题是,试学时,在课程中遇到问题需要解答的时候,需要到论坛发帖(我习惯了淘宝式的即时客服,对于论坛发帖,还要等好久才能知道结果,我是拒绝的),没有方便的即时沟通方式,这会大大影响到用户体验和付费转化。
此实验,可以测试一项变化,在第一次开始学习纳米课程时,提示“已经为您配置了专属学习导师,是否有问题咨询?”的提示框,点击“咨询”,立即与课程导师建立在线对话,有问题可以随时问。同时在纳米学位课程学习页面的右侧有“咨询导师”的按钮,点击直接在线咨询导师;
假设:
我假设这会即时解答学员的问题,个性化提供学习建议和设计学习方案,提高学员最终付费率。
度量选择:
1 . 不变度量:
-
(1)用户id的数量:
此试验是在用户点击试学,并且登录id后,不会影响到登录用户数量,因此选择用户id做不变度量;
2 .评估度量:
-
(1)留存率;
试验可能会影响最终付费用户数量,留存率是个很好的评估指标;
转移单位:
-
(1)用户id:
此测试发生在用户登录后,id会被跟踪,用户id是合适的转移单位;
网友评论
在学习过程中,给自己来一次阶段性的总结和个例分析,能起到对自己能力的重新认识,日后遇到对这个问题同样感兴趣的人,就可以分享交流,直接可以多次分享文档。加油!
007写作有几篇自己写的作品,当需要跟别人解释某个方法的时候,我就把文章推给他,算是时间多次销售。你这篇就是可以多次销售给跟你同频的人