一、什么是A/B测试
A/B 测试(A/B testing)是一种随机测试实验,用来判断某种干预是否对用户有影响,并根据统计学中的假设检验理论做出科学的推断。A/B 测试在互联网公司中经常被用于优化网站(或 App)来改善用户体验,最终实现降本增效的目的。
A/B 测试的可靠性依赖于两点:
- 分组必需是随机的,这样可以保证 A 和 B 两组用户无差异;
- 样本量足够大,可做出具有统计学意义的判断,即犯两类错误的概率足够小。
例如:某网站想通过优化网站的注册按钮来提升点击率,为了验证新版网页是否有提升作用,会将来访用户随机分为 A 和 B 两组:
- A 组用户作为对照组,展示网站的当前版本
- B 组用户作为实验组,展示网站的改进版本(如修改注册按钮的样式)
观测一段时间后,A 和 B 两组各自收集到 1,000,000 份样本,其中 A 组有 300,000 人注册(点击率为 30%),B 组有 350,000 人注册(点击率为 35%)。根据统计学中的假设检验理论可以确认:优化后的页面对提升用户点击率有显著作用。
Tips:按照惯例,A 通常作为对照组(也称为控制组,不对其做任何干预,仍使用原策略),B 通常作为实验组(将会被干预,或使用新的策略)。
二、为什么要确定最小样本量
实际上,为了得到上例的结论,并没有必要做一个如此庞大规模的 A/B 测试(A 和 B 共计 2,000,000 人)。那么至少需要多少样本,才能得到想要的结论呢?
这是一个要平衡成本和风险(收益)的问题:
- 成本:在应用角度来看,样本量越大,成本越高昂,耗时越长,同时也会影响更多的用户
- 风险:在统计角度来看,样本量越大,结果越可信,风险越小
为平衡两者,就需要在有统计学意义的前提下,确定最小的测试样本量。下面介绍相关理论,以及计算工具。
三、如何计算最小样本量
3.1 比较两个独立总体的比率是否有差异
3.1.1 使用条件
- 分组完全随机,并且知道两组用户规模的比例 $r=n_B/n_A$
观测指标是 0-1 分布,如用户是否点击,并对观测指标有一定预判,例如:
- 当前点击率 $p_1\approx 30\%$,预计改进后的点击率 ${\color{gray}p_2 \approx 40\%}$
- 如果希望能检测出 5pp 的改进(即分辨率),则应该将改进后的点击率设置为 ${\color{blue}p_2=35\%}$,而不是 ${\color{gray}p_2=40\%}$
- 事先确定,可以接受的犯第Ⅰ类错误的最大概率 $\alpha$
- 事先确定,可以接受的犯第Ⅱ类错误的最大概率 $\beta$
3.1.2 计算公式
当两组用户规模相同,即 $n_B=n_A=n$时,G*Power 使用的计算样本量的公式如下:
$$ n=\dfrac{ \left(Z_{\alpha/2}\sqrt{p_1+p_2-\dfrac{1}{2}(p1+p_2)^2}+Z_\beta\sqrt{p_1(1-p_1)+p_2(1-p_2)}\right)^2 }{(p_1-p_2)^2} $$
其中 $Z_x$ 表示正态分布的 $x$ 分位数,如 $Z_{0.025}\approx -1.96$。
上面公式很容易在 Excel 中计算,具体公式如下:
=(NORM.S.INV(C6/2)*SQRT(2*(C4+C5)/2*(1-(C4+C5)/2))+NORM.S.INV(C7)*SQRT(C4*(1-C4)+C5*(1-C5)))^2/(C5-C4)^2
其中每个单元格填写的内容为:
- 单元格 C4 填写 $p_1$
- 单元格 C5 填写 $p_2$
- 单元格 C6 填写 $\alpha$
- 单元格 C7 填写 $\beta$
除了使用 Excel 外,也可以使用在线工具来计算所需要的样本量:Sample Size Calculator。
3.2 复杂 A/B 测试的样本量计算工具
对于 A 和 B 两组用户规模不同,或观测目标是连续值时(如 GMV),建议专业的统计功效分析工具进行计算。
比如 G*Power:既可以在 A/B 测试前计算所需的样本量,也可以在 A/B 测试后计算显著性 $\alpha$ 和功效 $1-\beta$。
3.2.1 例:测试前,计算所需样本量
以上面 A/B 测试为例,在进行测试之前,可以按如下方式计算测试所需要的样本量:
选择类型:
- Test family: Z tests(检验族:使用 Z 检验。根据棣莫弗-拉普拉斯中心极限定理,当二项分布的样本量足够大时,可构造服从正态分布的统计量)
- Statistical test: Proportions: Difference between two independent proportions(统计检验:两独立样本的比例是否有差异)
- Type of power analysis: A priori: Compute required sample size - given α, power, and effect size(功效分析类型:根据预计的两组用户点击率、显著水平、功效等计算所需样本量)
输入参数:
- Tail(s): One(比较大小一般用单边检验,判断是否相等一般用两边检验)
- Proportion p2: 0.35(预计实验组点击率)
- Proportion p1: 0.3(预计对照组点击率)
- α err prob: 0.05(显著水平)
- Power (1-β err prob): 0.9(功效)
- Allocation ratio N2/N1: 1(两组样本比例)
3.2.2 例:测试后,计算显著性
仍以上面 A/B 测试为例,在测试之后,可以按如下方式计算两组用户的点击率是否有显著差异:
选择类型:
- Test family: Z tests(检验族:使用 Z 检验。根据棣莫弗-拉普拉斯中心极限定理,当二项分布的样本量足够大时,可构造服从正态分布的统计量)
- Statistical test: Proportions: Difference between two independent proportions(统计检验:两独立样本的比例是否有差异)
- Type of power analysis: Compromise: Compute implied α & power - given β/α ratio, sample size, and effect size(功效分析类型:根据样本量、两组用户实际点击率、两类错误比,计算发生两类错误的概率,即结果是否显著)
输入参数:
- Tail(s): One(比较大小一般用单边检验,判断是否相等一般用两边检验)
- Proportion p2: 0.35(实际实验组点击率)
- Proportion p1: 0.3(实际对照组点击率)
- β/α ratio: 2(第Ⅱ类错误概率/第Ⅰ类错误概率,一般设置为1或2)
- Sample size group 1: 3000(实际对照组样本量)
- Sample size group 2: 3000(实际实验组样本量)
四、涉及到的统计学术语解读
假设检验中的原假设与备择假设,在A/B实验中通常为定义:
- 原假设 $H_0$:A/B 两组总体的阳性比率相同
- 备择假设 $H_1$:A/B 两组总体的阳性比率不同
假设检验中的两类错误:
- 犯第一类错误的概率记为 α,表示:实际 $H_0$ 成立,但拒绝 $H_0$ 的概率(即在做多次 $H_0$ 成立的 A/B 实验中,做出错误判断的概率)
- 犯第二类错误的概率记为 β,表示:实际 $H_1$ 成立,但接受 $H_0$ 的概率(即在做多次 $H_1$ 成立的 A/B 实验中,做出错误判断的概率)
样本量大小与哪些因素相关:
- α 越小,样本量越大:需要更多样本才能减少做出错误判断的概率
- β 越小,样本量越大:需要更多样本才能减少做出错误判断的概率
- A 和 B 的均值差异越小,样本量越大:需要更多样本,才能提高假设检验的分辨率
OR值1(odds ratio)又称比值比、优势比,主要指病例组中暴露人数与非暴露人数的比值除以对照组中暴露人数与非暴露人数的比值,是流行病学研究中病例对照研究中的一个常用指标。
OR值的计算公式:
是否暴露于某因素 | 病例组 | 对照组 | 合计 |
---|---|---|---|
是 | a | b | a+b |
否 | c | d | c+d |
合计 | a+c | b+d | N |
$$ OR=\frac{a/c}{b/d}=\frac{ad}{bc} $$
不同OR值的意义:
- OR=1,表示该因素对疾病的发生不起作用;
- OR>1,表示该因素是危险因素;
- OR<1,表示该因素是保护因素。