AB Test 是市场部经常使用的一个常用的测试手段,主要用于某个市场活动、系统升级、或者一些数据验证当中,你有没有想过手机里的App的设计是怎么来的,为什么手机的应用要不断的升级迭代,除了一些新功能外,很多界面也是不断的在调整,那调整的方式多种多样,谁说了算,是UI设计师还是产品经理,亦或是大老板,事实上是最终用户说了算,因为如果你是老板,你肯定关心的是你的用户喜不喜欢,如果所有的设计师都喜欢,但是如果用户不喜欢,那么你所认为的再好的产品也没有任何商业价值,那你很自然的会想到,我们是否可以把新的界面开放给一部分人,让他们先用起来,看看实际的反馈情况,然后让一部分人使用之前的界面,最后做下对比就知道新界面的效果了,嗯,很聪明,我们一般都会想到用这种方法来验证,这也就是最常用的AB Test方法,A代表的就是“对照组”(旧界面),B代表“实验组”(新界面),那这个对比该如何进行呢?一般凭感觉吗?没有涉及到统计学的可能会想,直接看均值,比如实验组1万个人中有1000个人点击了新界面,对照组1万人中有800个人点击了旧界面,那你理所应当的认为新界面有效,这不失为一种方法,但从统计学上面我们应该给出科学的解释,以及有效的论证,试想当实验组和对照组的基数不一致时,我们是否可以用均值来衡量,以及当我想取得一定的AB Test效果时,我应该至少圈出多少的样本来进行测试,所有的有关AB Test的统计理论,已经在“卡方检验”以及“统计功效”两节中进行了详细介绍,这里只给出应用场景,然后你也可以将你的数据传入其中,来看下AB Test结果。
场景一:
作为一家汽车厂商,想通过电话营销来提高购买率,现在随机从数据库里圈出一部分数据,大概2万左右,现在对其中1万人进行人工外呼以促进购买产品,另外1万人什么也不做,过3个月后分别统计实际购买数量,结果如下:
现在我们可以通过如下代码来验证实验组和对照组是否有明显差异,这里的差异主要是指购买率差异,因此如果存在差异并且实验组购买率大于对照组购买率时,说明电话营销对促进转化有一定作用。
import mlp.stats as st st.prop_test([1000,2500],[10000,10000])
p-value<0.5,因此拒绝原假设,即购买率在两组之间存在差异,因为对照组购买率0.1,实验组0.25,因此电话营销对提高购买率有一定作用。
场景二:
还是上面的例子,我们可以从另外一个角度来进行验证,即所谓的统计功效,power越大说明两组差异越显著。
import mlp.stats as st st.power_prop_test(n=10000, p1=0.1, p2=0.25, sig_level=0.05, alternative="two_sided")
场景三:
AB Test另外一个非常重要的点就是确定试验的数据量,取多少数据来做验证是合理的,科学的,事实上我们完全可以从统计学当中找到答案,还是上面的例子,现在假设我们知道我们的基线购买率是10%(外呼之前的购买率),并且为了具有实际意义,我们需要对照组和实验组之间购买率的绝对差异为15%,为了拥有80%的统计效力,每组所需的样本量是多少?
import mlp.stats as st st.power_prop_test(p1=0.1, p2=0.1+0.15,power=0.8, sig_level=0.05, alternative="two_sided")
试验结果显示,需要大概100个样本量即可。这里你会发现,当p1与p2差异越小时,为了达到80%的统计效力,往往需要较大的样本量,因为p1与p2几乎没差异,在既定的样本量下,power应该很小,这里为了让power达到80%,当然需要较大的 n 才能实现,这里可以参考“统计功效一节中的power公式”,相反,当p1与p2差异较大时,为了达到80%的统计效力,往往不需要太多的样本量。