测试/对比思维

1、概念

测试/对比思维可以说在数据分析的工作中随处可见。当我们通过各种手段得到一些结果数据后,如何评价结果的好坏呢?这个时候你可能会想到和标准结果进行比较、和之前的数据进行对照等等方法,这些方法归根结底就是一种测试/对比思维。在该思维中最常用的方法就是A/B测试,本文我们就重点了解一下A/B测试的思想及其应用案例。

2、A/B测试(A/B实验)

为什么要进行A/B测试

  • 在很多互联网软件(广告)想要进行迭代时,通常要先进行假设给出迭代方案,而验证假设是否可行的最好方法就是进行A/B测试。
  • 在进行迭代时,会有想要迭代的目标,比如提高​​点击率​​​、​​新用户数​​​、​​购买转化率​​等等,我们通常称之为核心指标,A/B测试就是通过观察并计算核心指标的变化最终确定方案是否可行。

A/B测试原理

  • A/B测试的基本原理为“控制变量法”,我们需要将迭代前的功能(产品)作为​​对照组​​​,新迭代方案作为​​实验组​​,来进行测试。具体需要注意的点如下:
  • 保证两个组的人群相同(特征分布一致);
  • 保证实验进行时间相同;
  • 保证除了方案变量之外的所有变量都是一致的;
  • 可以有多个实验组(A/B实验可以不只有A和B)。

A/B测试的结果判断

  • 前面我们提到过,进行测试时会选择一个核心指标,在相同的环境下​​对照组​​​和​​实验组​​​都会产生核心指标,对于二者的指标我们通常采用​​假设检验​​的方式来进行判断。(后文会举例说明如何进行判断)
  • 假设检验的方式有很多,通常我们会把A/B测试中的检验分为​​单样本检验​​​、​​双样本检验​​​、​​配对检验​​三种,对于三种检验方法的使用场景如下:
  • 单样本检验:将一组样本和具体的数值进行比较时,为单样本检验。
  • 双样本检验:两组随机样本进行比较时,为双样本检验。
  • 配对样本检验:将同一组样本前后变化进行比较时,为配对样本检验。
  • 除了检验方法的选择之外,根据样本量和方差是否已知有要选择使用​​T检验​​​和​​Z检验​​。
  • 当不知道总体方差时,使用T检验。
  • 当总体方差已知,但是样本量<=30时,使用T检验。
  • 当总体方差已知,但是样本量>30时,使用Z检验。

A/B测试的流程图

  • A/B测试的原理看起来很简单,但其难点在于对于环境的控制以及对于方案变量的选择,梳理A/B测试的流程如下图所示:

数据分析思维(三)|测试/对比思维_迭代

3、举个例子

  • 某APP为了增加用户粘性,准备更改新的页面风格,为了比较更改前和更改后用户日均使用时长是否有明显差别,我们随机抽取10位用户进行内测并统计其内测前一周(A组)及内侧后一周(B组)的日均使用时长,之后进行A/B测试来进行验证。
  • 数据如下:

1

2

3

4

5

6

7

8

9

10

A组(min)

80

79

58

90

82

77

74

65

54

70

B组(min)

86

85

60

90

88

84

75

78

58

74

  • 分析:根据上述条件可知,我们进行的是同一组样本前后变化的比较,且样本量<30,因此需要进行配对样本T检验(这里的确定是为了计算时选择对应的检验方式)
  • 做出假设:
  • H0:改版前后用户粘性无显著变化。
  • H1:改版前后用户粘性有显著变化。
  • 计算P值:
from scipy.stats import ttest_rel
import pandas as pd

x = [80, 79, 58, 90, 82, 77, 74, 65, 54, 70]
y = [86, 85, 60, 90, 88, 84, 75, 78, 58, 74]
# 配对样本t检验
t_val, p = ttest_rel(x, y)
print("P值:", p)

# 结果如下
# P值: 0.0023301816817713405
  • 得出结论:
  • 根据计算可以得到P值=0.002<0.05,因此我们可以拒绝H0假设选择H1假设,也就是说改版后的用户粘性有显著变化,有了这个结果我们就可以更有力的去说明更新的重要性了。