跳过正文

[AB测试-2] AB测试里的统计学 PART 1

·2815 字·6 分钟·
AB测试 统计 数据分析
EZ
作者
EZ
Take it EZ!
目录
AB测试 - 这篇文章属于一个选集。
§ 2: 本文

AB测试里的统计学 PART 1
#

统计学在A/B测试中至关重要,它提供了评估测试结果可信度、确定显著性、计算样本量以及分析和解释数据的方法,从而帮助决策者做出基于数据的明智决策。本文将聚焦于出现在A/B测试中的统计学,为科学的实验过程,可靠的实验结论打下基础。


置信区间
#

置信度区间 就是用来对一组实验数据的总体参数进行估计的区间范围。

假设人群的身高服从:
$$ X \sim N(\mu, \sigma^2) $$

对人群进行采样,其样本大小为 \(n\), 样本均值为 \(M = \frac{X_1+X_2+ \cdots +X_n}{n}\)。

根据大数定律和中心极限定理,M 服从 \(M \sim N(\mu, \frac{\sigma^2}{n})\)。

置信区间公式: $$ (\mu - Z_{\frac{\alpha}{2}}\frac{\sigma}{\sqrt{n}},\space \mu + Z_{\frac{\alpha}{2}}\frac{\sigma}{\sqrt{n}}) \approx (\overline{x} - Z_{\frac{\alpha}{2}}\frac{s}{\sqrt{n}},\space \overline{x} + Z_{\frac{\alpha}{2}}\frac{s}{\sqrt{n}}) $$

Z的取值:

置信水平 \(Z_{\frac{\alpha}{2}}\)
90% 1.64
95% 1.96
99% 2.58

以上是单样本的置信区间计算,并不适用于A/B测试,因为A/B测试至少是双样本。下面将介绍置信区间在A/B测试(双样本)中的应用: $$ \lgroup (\overline{X_B} - \overline{X_A})-Z_{\frac{\alpha}{2}}\sqrt{\frac{\sigma^2_B}{m} + \frac{\sigma^2_A}{n}}, (\overline{X_B} - \overline{X_A})+Z_{\frac{\alpha}{2}}\sqrt{\frac{\sigma^2_B}{m} + \frac{\sigma^2_A}{n}} \rgroup $$ 由上面的公式我们可以发现,计算的置信区间公式是以两组数据的平均值为基础的。也就是说当区间内不包含0时,我们可以得出A和B两个版本有明显的差异。

当置信区间包含0时,两个版本的差异是不显著的。换种说法就是,在95%的置信水平下,A版本有可能比B好,B也有可能比A好。

当置信区间都为正的时候,可以说在95%的置信水平下,B版本是大于A版本的。

在实际的业务场景中,可以设定一个“最小重要变化”,例如1%或者5%。只有当置信区间的最小值大于它时,才会决定发布新版本。

效应大小
#

除了检验差异的显著性外,还要考虑差异的效应大小。即使差异是显著的,但如果效应大小很小,则可能并不具有实际意义。

验证 A/B 测试效应大小通常是通过计算效应量(Effect Size)来实现的。效应量是描述两个群体之间差异大小的度量,它告诉我们实验效果的大小,而不仅仅是是否存在显著差异。常用的效应量包括 Cohen’s d、相对风险(Relative Risk)、Cohen’s h 等等。 一种常见的方法是使用 Cohen’s d,它表示两组均值之间的标准化差异。具体计算方法如下: $$ d = \frac{\bar{x}_B-\bar{x}_A}{s} $$ 其中: \(\bar{x}_B\) 和 \(\bar{x}_A\) 是两组的平均值;\(s\) 是两组合并后的标准差 \(s = \sqrt{\frac{(n_A-1)s_A^2+(n_B-1)s_B^2}{n_A+n_B-2}}\)

根据 Cohen 提出的标准,一般情况下,效应量 \(d\) 可以分为三个级别:

  • 小效应:\(d=0.2\)
  • 中等效应:\(d=0.5\)
  • 大效应:\(d=0.8\)

通常情况下,效应量 \(d\) 的绝对值越大,表示两组之间的差异越大。

假设检验
#

假设检验(Hypothesis testing) 是统计学中用来检验关于总体参数的一种假设方法。它通常用于确定样本数据是否提供足够的证据来支持或反驳对总体参数的某种假设。

A/B测试通常使用双样本的假设检验。从逻辑上来讲,假设检验法借用了反证法的思想。

  • 假设检验的基本步骤如下:
    1. 建立假设: 在假设检验中,通常会提出两种假设:原假设(null hypothesis)记为\(H_0\)和备择假设(alternative hypothesis)记为\(H_1\)。
      原假设通常是默认的假设,表示我们要进行检验的假设,而备择假设则是对原假设的补充或否定。
    2. 选择检验统计量:检验统计量是一个用于根据样本数据对假设进行检验的统计量。选择适当的检验统计量取决于所研究的问题和所提出的假设。
    3. 选择显著性水平:显著性水平\(\alpha\) (significance level)通常表示拒绝原假设的阈值。常用的显著性水平包括0.05和0.01。
    4. 计算 \(P\) 值: \(P\)值是假设 null hypothesis 成立的情况下,观察到样本数据或更极端情况发生的概率。它表示了观察到的数据对原假设的支持程度。\(P\) 值越小,意味着观察到的数据与原假设的一致性越小。
      • 当 \(P\) 值小于显著性水平 \(\alpha\) :有证据表明我们可以拒绝 \(H_0\)接受 \(H_1\)
      • 当 \(P\) 值大于显著性水平 \(\alpha\):我们没有足够的证据去拒绝 \(H_0\)(直接说“\(H_0\)是对的”是非常不严谨的,因为仍然存在\(H_0\)是错的概率)
    5. 做出决策: 将计算得到的P值与显著性水平进行比较。如果P值小于显著性水平,则拒绝原假设,否则接受原假设。如果拒绝了原假设,则可以得出备择假设成立的结论。

单尾检验 VS. 双尾检验
#

  • 单双尾检验需要在实验设计时确定下来,两者区别在于备择假设的符号,单位是大于或者小于,而双尾是不等于。
  • 两者计算出来的统计值是一样的,但是计算p值是不一样的。
  • 与\(\alpha\)比较时,双尾的统计值需要与\(\frac{\alpha}{2}\)比较,单尾与\(\alpha\) 比较
  • 优先选择双尾实验,两者p值不一样,可能会有结论冲突的情况:
    • 单尾得出B比A好的结论,但是双尾得出两者没有显著性区别
    • 因为双尾实验会考虑到 B 组比 A 组是否更好, 更坏或者存在显著差异三种情况,但是单尾不会区分是否更坏和存在显著性差异的情况。
  • 如果双尾检验结果是显著的,无法得出哪个方案更好的结论
    • 可以通过计算置信区间和效应大小来判断哪个方案更好
  • 计算p值需要用到统计工具包:
    from scipy import stats
    # 双尾
    t_statistic, p_value_two_tailed = stats.ttest_ind(data1, data2)
    # 单尾 <
    t_statistic, p_value_left_tailed = stats.ttest_ind(data1, data2, alternative='less')
    # 单尾 >
    t_statistic, p_value_right_tailed = stats.ttest_ind(data1, data2, alternative='greater')
    

第一类错误和第二类错误
#

第一类错误:

  • 定义:第一类错误是指在原假设为真的情况下,错误地拒绝了原假设的概率。换句话说,是错误地认为存在效应或差异,但实际上并不存在。
  • 相关指标:
    • 显著性水平(Significance Level):通常用符号 \(\alpha\) 表示,是指在进行假设检验时所能接受的第一类错误的最大概率。常见的显著性水平为 0.05 或 0.01。

第二类错误:

  • 定义:第二类错误是指在备择假设为真的情况下,未能拒绝原假设的概率。换句话说,是未能发现真实存在的效应或差异。
  • 相关指标:
    • 统计功效(Statistical Power):通常用符号 \(1-\beta\) 表示,是指在备择假设为真时,正确地拒绝原假设的概率。换句话说,统计功效衡量的是我们能够检测到真实效应的能力。

t-Test
#

在 A/B 实验中一般使用到的是独立样本t检验。独立样本 t 检验:用于比较两个独立样本(如实验组和对照组)的均值是否有显著差异。

其他的 t 检验还有:单样本t检验、配对样本 t 检验

假设条件:两个样本是独立的、来自正态分布总体、具有相似的方差。

t 检验公式: $$ t = \frac{{\bar{x}_1 - \bar{x}_2}}{{\sqrt{\frac{{s_1^2}}{{n_1}} + \frac{{s_2^2}}{{n_2}}}}} $$

其中:

  • \(\bar{x}_1\) 和 \(\bar{x}_2\) 分别为两个样本的均值;
  • \(s_1^2\) 和 \(s_2^2\) 分别为两个样本的方差
  • 样本方差公式:\(s^2 = \frac{\sum_i^n (x_i - \bar{x})^2}{n-1}\)
  • \(n_1\) 和 \(n_2\) 分别为两个样本的大小。

t 检验的自由度:\((n_1-1) + (n_2-1) = n_1+n_2-2\)

Z-Test
#

假设条件:在 t-Test 假设条件基础上,总体方差已知,以及 n 至少大于30。

Two Sample Z Test $$ Z = \frac{\bar{x}_1-\bar{x}_2}{\sqrt{\frac{\sigma^2_1}{n_1}+\frac{\sigma^2_2}{n_2}}} $$

其中:

  • \(\bar{x}_1\) 和 \(\bar{x}_2\) 分别是两个样本的均值
  • \(\sigma^2_1\) 和 \(\sigma^2_2\) 分别是两个总体的方差
  • \(n_1\) 和 \(n_2\) 分别是两个样本的样本量

Two Proportion Z Test: $$ Z = \frac{\hat{p}_1-\hat{p}_2}{\sqrt{\hat{p}(1-\hat{p})(\frac{1}{n_1}+\frac{1}{n_2})}} $$

其中:

  • \(\hat{p}_1\) 和 \(\hat{p}_2\) 是两个版本的点击率(或者其他比率值类数据)
  • \(n_1\) 和 \(n_2\) 分别是两个样本的样本量
  • \(\hat{p}_1=\frac{x_1}{n_1}\),\(\hat{p}_2=\frac{x_2}{n_2}\),\(\hat{p}=\frac{x_1+x_2}{n_1+n_2}\)

卡方检验
#

$$ \chi^2 = \sum_i^n \frac{(O_i-E_i)^2}{E_i} $$

其中:

  • \(O_i\) 是第 \(i\) 个观察值
  • \(E_i\) 是第 \(i\) 个期望值

可以参考下面的例子:

参考资料
#

AB测试 - 这篇文章属于一个选集。
§ 2: 本文

相关文章

[AB测试-1] 理清业务问题
·3939 字·8 分钟
AB测试 统计 数据分析
在做AB测试前,我们必须要理清业务相关的问题。这方面会涉及到公司层面、产品层面、功能层面等相关重要的内容及指标,本文会对这方面做出详细的介绍。