A/B-test显著性检验

同步于CSDN;音尘杂记

1. A/B-test解读

A/B-test是为同一个目标制定两个方案,在同一时间维度,分别让组成成分相同(相似)的用户群组随机的使用一个方案,收集各群组的用户体验数据和业务数据,最后根据显著性检验分析评估出最好版本正式采用。

使用A/B-test首先需要建立一个待测试的版本服务,这个版本服务可能在标题、字体、排版、背景颜色、措辞等方面与原有版本服务有所不同,然后将这两个版本服务以随机的方式同时推送给测试用户。接下来分别统计两个版本的用户转化率指标,然后根据样本数据进行显著性检验。

2. 测试目的

页面(版本)的某一特定更新对转化率指标(如UV-线索转化率、UV-上架转化率、UV-成交转化率或者线索-上架转化率等)的影响效果。

3. A/B-test显著性检验

随机将测试用户群分为2部分,用户群1使用A方案,用户群2使用B方案,经过一定测试时间后,根据收集到的两方案样本观测数据,根据显著性检验结果选取最好方案。

为了下文方便说明,我们不妨设A方案为参考方案(或旧方案),B方案为实验方案(或新方案)。以下我们以xx二手车的线索-车辆成交转化率为例(注:所有数据均属虚构,仅做示例说明之用),假设进行A/B-test的时间是一周。

3.1 选择观测指标

使用A方案的人数$N_A$,使用B方案的人数$N_B$,通常情况下$N_A = N_B = N$;由样本计算出A方案的线索-车辆成交转化率为$\hat{P}_a$,B方案的线索-车辆成交转化率 为$\hat{P}_b$;总体A的分布:$A \sim B(N, P_a)$,总体B的分布:$B \sim B(N, P_b)$;

根据中心极限定理可知,$\hat{P}_a$和$\hat{P}_b$均可认为近似服从正态分布:
$$
\begin{eqnarray}
\hat{P}_a \sim N(P_a, \hat{P}_a(1-\hat{P}_a) / N) \
\hat{P}_b \sim N(P_b, \hat{P}_b(1-\hat{P}_b) / N)
\end{eqnarray} \tag{1.1}
$$

所以根据正态分布的性质:
$$
X = \hat{P}_b - \hat{P}_a \sim N(P_b-P_a, \hat{P}_b(1-\hat{P}_b) / N + \hat{P}_a(1-\hat{P}_a) / N) \tag{1.2}
$$

3.2 建立原假设和备择假设

由于我们的期望结果是B方案所带来的线索-车辆成交转化率高于A方案所带来的线索 -车辆成交转化率,所以原假设和备择假设如下:
$$
\begin{eqnarray}
H_0: X = P_b - P_a \leq 0 \
H_1: X = P_b - P_a > 0
\end{eqnarray} \tag{1.3}
$$

3.3 构建检验统计量

检验统计量:
$$
Z = \frac{\hat{P}_b - \hat{P}_a}{\sqrt{\frac{\hat{P}_b(1-\hat{P}_b)}{N} + \frac{\hat{P}_a(1-\hat{P}_a)}{N}}} \tag{1.4}
$$

3.4 显著性检验结论

给定显著性水平$\alpha$为。当$Z > Z_{\alpha}$时,拒绝原假设,认为B方案所带来的线索-车辆成交转化率高于A方案所带来的线索-车辆成交转化率,建议可以进行推广;当$Z \leq Z_{\alpha}$时,不能拒绝原假设,即认为B方案所带来的线索-车辆成交转化率不高于A方案所带来的线索-车辆成交转化率,建议暂不建议进行推广。

4. A/B-test示例

假设我们进行A/B-test一周,参考版本(通常默认是原始版本,简记为A)和实验版本(添加了特定改进的版本,简记为B),分别得到了1000个线索,A的线索-车辆成交转化率为7%,B的线索-车辆成交转化率为8%。如下表所示:

版本 总线索数 成交数(单位:辆) 转化率
参考版本(A) 1,000 70 7.00%
实验版本(B) 1,000 80 8.00%

在这儿,我们是肯定B比A版本所带来的转化率高呢,还是说这仅仅是由于一些随机的因素导致的这样的区别呢?我们严格按照A/B-test显著性检验过程进行如下计算。

  • 选取测量指标:

    $N_A = N_B = N = 1000$;其中$\hat{P}_a = 7%$,$\hat{P}_b = 8%$

  • 构建原假设和备择假设:
    $$
    \begin{eqnarray}
    H_0&:& B版本所带来的线索-车辆成交转化率不高于A版本,即X=P_b - P_a \leq 0 \
    H_1&:& B版本所带来的线索-车辆成交转化率高于A版本,即X=P_b - P_a > 0
    \end{eqnarray}
    $$

  • 构建检验统计量:
    $$
    Z = \frac{\hat{P}_b - \hat{P}_a}{\sqrt{\frac{\hat{P}_b(1-\hat{P}_b)}{N} + \frac{\hat{P}_a(1-\hat{P}_a)}{N}}}
    $$
    带入值,可以计算得到Z=0.849105726,

  • 显著性检验结论:

    如果取显著性水平$\alpha = 0.5$,则$Z_{\alpha} = 1.644854$,所以不能拒绝原假设,即认为B版本不一定比A版本所带来的线索-车辆成交转化率高。

如果我们将A/B-test的时间拉长,如两周时长的A/B-test分别得到5000条线索量;或者说同样做一周时间的A/B-test,但是测试的比例更大,分别得到5000条线索量。即 N=5000,且线索-车辆成交转化率保持不变。计算得出$Z_{\alpha}=1.89865812$,在同样显著性水 平下,可以拒绝原假设,得出B比A版本所带来的线索-车辆成交转化率高的结论。

上述结论是符合我们的主观感受的。在小样本量时,新版所带来的线索-车辆成交转化率高于旧版本所带来的线索-车辆成交转化率,其原因也有可能是受到随机波动等因素影响,故不能肯定地说明新版要比旧版所带来的线索-车辆成交转化率高;但在大样本量时,或者说长期来看,新版本所带来的线索-车辆成交转化率都稳定地高于旧版本所带来的线索-车辆成交转化率,我们有理由相信,确实新版本所带来的线索-车辆成交转化率高于旧版本所带来的线索-车辆成交转化率。

5. A/B-test样本量的确定

由上述示例可以看出,样本量的不同对于最终结果是有很大影响的。所以在进行抽样之 前的很重要一步是确定样本量;在实践中,样本量是应该在正式抽样进行A/B-test之前便确认的。放到这里讲的原因是为了通过上述示例加深我们对样本量重要性的认识。

实践中,我们对于样本量的确认,可以根据标准误(或者说我们需要检验的差异变化) 来求出,记标准误为$d$:
$$
d = Z_{\alpha} \times \hat{\sigma} \tag{1.5}
$$

其中$Z_{\alpha}$是在显著性水平$\alpha$下的临界值;$\hat{\sigma}$是由样本估计出的总体标准差。

显然,在给定显著性水平$\alpha$、需要检验的差异变化$d$和A版本(参考版本,旧版本)的线索-车辆成交转化率$\hat{P}_a$历史值(或经验值,或小样本预实验后得出的值[8])后,即可推导得出我们进行A/B-test所需的样本量。

$$
N = \frac{Z_{\alpha}^2}{d^2}(\hat{P}_a(1-\hat{P}_a) + \hat{P}_b(1-\hat{P}_b)) \tag{1.6}
$$

6. 指标推广

上文说明的是根据A/B-test进行新、旧版线索-车辆成交转化率的显著性检验。同理,如果需要根据A/B-test进行新、旧版本的UV-线索转化率、UV-上架转化率或者线索-上架转化率等的显著性检验,只需相应修改显著性检验过程中的观测指标($\hat{P}_a, \hat{P}_b$)即可。

作者

Buracag

发布于

2019-05-28

更新于

2020-10-06

许可协议

评论