面LY时问到了这个问题,没回答出来,因此记录下。
ABT原理
一、假设检验
1.思路
逻辑学中,如果我们能够证明某个零假设不成立,那么其备择假设肯定为真。即,零假设和备择假设为对立事件。
设立假设:
零假设:A和B没有显著差异
备择假设:A和B有显著差异
如果能找到足够强的证据来否定零假设(A和B没有显著差异),那么就能有效的说明零假设不成立,即备选假设成立。
证据:计算零假设成立的前提下A和B没有显著差异的概率P.value(新方案根本没啥卵用的可能性),若P值=0.01,显著性水平α为0.05,则零假设成立的概率=1%小于5%,而备择假设成立的概率大于95%,因此否定了零假设,可认为备择假设为真。
结论:P.value<=α,拒绝零假设;P.value>α,不拒绝零假设
假设检验的两类错误
i.否定了真实的原假设。避免方法:可通过α水平控制,降低α水平
ii.接受了错误的原假设。避免方法:可通过扩大样本容量
2.常见假设检验
T检验:假设样本服从正态分布,无需知道总体方差
Z检验:假设样本服从标准正态分布,需知道总体方差
F检验:方差齐次检验,检查两组样本的方差是否有差异
3.为什么选择T检验
使用Z-检验需要知道总体的方差,然而在很多情况下这是难以知道的。
t-检验是可以代替Z-检验的。根据中心极限定理:当总体分布是正态分布时,对任意样本量n,抽样均值分布均为正态分布。如果总体为非正态分布,仅在n值较大的情况下,样本均值分布近似为正态分布。总体服从正态分布的数据在小样本时呈现为t分布形态,而服从t分布的数据在样本较大时会渐近于正态分布,也就是无论样本大小,均可以使用T检验。
4.以成对T检验为例的常见步骤
对样本进行正态性检验,样本服从正态分布;
两组样本进行方差齐性检验,判定是否同方差,以选择同方差or异方差T检验;
进行T检验,计算P值,拒绝or不拒绝原假设(通常大家只做了最后一步)
二、最小样本量
原理大概是这样~考虑显著性水平、以及两组样本的方差等,来计算最小样本量。显著性水平越低,方差越大,最小样本量越大。
R语言实现~ pwr.t.test(n=, d=, sig.level=, power=, type =, alternative=)
其中:
1、n为样本大小;
2、d为效应值,即标准化的均值之差;
3、sig.level表示显著性水平(默认为0.05);
4、power为功效水平;
5、type表示检验类型:双样本t检验(two.sample)、单样本t检验(one.sample)或相依样本t检验(paired)。默认为双样本t检验。
6、alternative表示统计检验时双侧检验(two.sided)还是单侧检验(less或greater)。默认为双侧检验。
备注:前五个中,输入任意4个值,都会输出另外一个
例子:
> library(pwr)
> pwr.t.test(d=.8, sig.level = .05, power = .9, type = "two.sample", alternative = "two.side")
Two-sample t test power calculation
n = 33.82555
d = 0.8
sig.level = 0.05
power = 0.9
alternative = two.sided
NOTE: n is number in *each* group
结果表明,每组中需要34个样本(总共68个),这样才能保证有90%的把握检测到0.8的效应值,并且最多5%的可能性会误报差异存在。
三、如何验证AA分流稳定性
1.AA进行假设检验,检验AA是否有显著差异,如果随机分流稳定,AA不会有显著差异;
2.检查小样本的分流比例是否和设定的相差不多,例如,看新老用户分别的分流比例、2000家酒店detail页的分流比例等等;
3.顺着随机分流系统的代码规则,看一个用户是否被分到该分的组内(难度大,主要是看随机分流系统有无问题)