乐趣区

关于python:AB测试的统计原理频率派与贝叶斯派观点

  • 频率派的 AB Test 统计原理,基于假设检验办法步骤,样本数的估算办法
  • 贝叶斯派的 AB Test 统计原理:观测数据 -> 计算后验 -> 做出决策
  • 工业界 AB Test 流程

频率派 AB 测试原理

假设检验:两样本 t 测验

AB 测试算是频率派统计学实践利用的典型体现。他基于两个根本逻辑:

    1. 抽样散布的确定(大数定理、核心极限定理、三大散布 t 散布、F 散布、Chi 方散布),使得咱们能够用抽样数据预计总体的均值与方差
    1. 假设检验的办法使得能够应用反证法,用小概率事件来颠覆原假如,而承受咱们要检测的备择假如

因而,频率派 AB 测试的思维所有都围绕一个原假如登程:H0: A/ B 组的指标均值无差别 。那接下来的测验逻辑就差不多是 两样本均值测验 的流程。依据原假如写出指标 A - 指标 B 均值的抽样散布 -> 结构统计量并计算 p 值 -> 依据执行区间测验。

记 A、B 两个总体的指标为 $X_1$, $X_2$, 抽样散布和均值差的散布能够间接写进去:

$$
\bar{X_1} \sim N(\mu_1, \sigma_1^2/n), \ \bar{X_2} \sim N(\mu_2, \sigma_2^2/n) \\
\bar{X_1} – \bar{X_2} \sim N(\mu_1, \mu_2,\ \sigma_1^2/n + \sigma_2^2/n) \\
if \ assume \ \mu_1 = \mu_2, \bar{X_1} – \bar{X_2} \sim N(0, \sigma_1^2/n + \sigma_2^2/n)
$$

至此,如果总体方差已知,咱们能够间接计算统计量测验。但大多数无奈得总体方差。咱们此时就借助频率派对于样本标准差的一些抽样散布进行推导:

已知当变量合乎 正态分布 时,样本标准差 $S$ 和总体方差 $\sigma$ 合乎散布:

$$
\frac{(n-1)S^2}{\sigma^2} \sim \chi^2(n-1)
$$

咱们看见右边呈现了总体方差 $\sigma$, 而 $N(0, \sigma_1^2/n + \sigma_2^2/n)$ 头疼的正是方差地位,很天然的想法就是右边相除,把 $\sigma$ 消掉:

$$
\frac{\bar{X} – \mu}{\sigma/ \sqrt{n}} / \sqrt{\frac{S^2(n-1)}{\sigma^2 * (n-1)}} = \frac{\bar{X} – \mu}{S / \sqrt{n}} \sim \ N(0,1) / \sqrt{\frac{\chi^2(n-1)}{n-1}} = t(n-1)
$$

$t(n-1)$ 就是假设检验罕用的 t 散布。能够看到右边打消掉总体方差后,左边正好合乎 t 散布。

于是,咱们对于 H0 的假如应用的统计量为:

$$
t = \frac{\bar{X_1} – \bar{X_2} – \mu_1 – \mu_2}{\sqrt{\frac{S_1^2}{n} + \frac{S_2^2}{n}}} \\
assume \ \mu_1 = \mu_2, \ t=\frac{\bar{X_1} – \bar{X_2}}{\sqrt{\frac{S_1^2}{n} + \frac{S_2^2}{n}}}
$$

至此,频率派的 AB 测试的根本统计原理与假如总结如下:

  • H0: $$\bar{X_1} -\bar{X_2} = 0 $$
  • 在总体方差未知、假如 AB 总体均值雷同、且合乎正态分布时,结构的统计量为 $$ t=\frac{\bar{X_1} – \bar{X_2}}{\sqrt{\frac{S_1^2}{n} + \frac{S_2^2}{n}}} $$
  • 依照置信区间 $$ \bar{X_1} -\bar{X_2} \pm \ t_{\frac{\alpha}{2}} \sqrt{\sigma_1^2/n + \sigma^2_2/n} $$ 测验;

持续放宽条件,z 测验

当然上述流程是基于两总体方差不同的假如 $\sigma_1 \neq \sigma_2$. 如果咱们持续放宽这一假如,使得两总体的方差、均值均雷同。咱们就能够间接应用 $z$ 测验。也能够认为,当样本量持续放大时,样本标准差对方差的预计与总体误差越小,能够代替,间接能够用样本标准差计算 z 分数。z 测验的置信区间:

$$
\bar{X_1} – \bar{X_2} \pm z_{\frac{\alpha}{2}} \star \sqrt{\sigma_1^2/n + \sigma_2^2/n}
$$

下表根本涵盖了两样本均值测验的所有情景,除了 AB 测试外其余测验问题也实用。

如何确定测试所需的样本量?

频率派的 AB 测试借用假设检验的统计效用(Statistical Power)概念来估算要达到肯定效用所需的样本量。下图是 假设检验两类谬误的经典示意图:

$\beta$ 局部即为咱们谬误地承受了原假如 H0 所犯的谬误(第二类谬误)。而不犯这个谬误的概率 $1-\beta$ 就是这里两样本测验定义的统计效用。计算如下:

$$
1 – \beta = \Phi(z – z_{1-\alpha /2} + \Phi(-z – z_{1-\alpha/2})) \\
z = \frac{\bar{X_1} – \bar{X_2}}{\hat{\sigma} \sqrt{2/n}}
$$

可见是由 z 分数计算而来的。这样输出咱们冀望的效用,得出所需的样本数。

贝叶斯派 AB 测试原理

贝叶斯办法的劣势

频率派的 AB 测试有些毛病,例如他基于观测数据只能给出零假如反例的证据,无奈给出承受备择假如的证据。也无奈给出两个试验到底孰优孰劣的证据。而贝叶斯的 AB 测验流程更加清晰明了[5]:

贝叶斯 AB 测试能够间接给出 AB 两个试验参数谁更优良的论断。同频率派一样,贝叶斯 AB 测试也将贝叶斯统计的外围实践展示地酣畅淋漓。

贝叶斯原理

这里假设大家对贝叶斯统计较为相熟了。与频率派最大的区别在于贝叶斯统计认为参数是以概率分布的模式存在的,不是确定的。而 贝叶斯定理 就是用来在观测到新数据时正确地更新这些概率以升高咱们对参数概率的不确定性。

贝叶斯统计围绕先验(prior), 似然(likelyhood), 后验(posterior)和证据(观测,evidence)开展:

$$
\mathbb{P}(H|\bold{d}) = \frac{\mathbb{P}(H)\mathbb{P}(\bold{d}|H)}{\mathbb{P}(\bold{d})}
$$

其中,$\mathbb{P}(H|\bold{d})$ 是贝叶斯统计要失去的外围论断,参数的后验概率。这个参数 H 能够是咱们对群体的参数估计,也能够是对参数的一些假如。$\mathbb{P}(\bold{d})$ 的计算是贝特斯统计的外围挑战,他只能用积分计算准确:$\mathbb{P}(\bold{d}) = \int \mathbb{P}(H|\bold{d})\mathbb{P}(H) dH$。

贝叶斯 AB 测试

回到本文主题 AB 测试来,咱们心愿间接失去 AB 两个群体指标的后验散布,或者差值的后验散布。以线上的转化率(conversion)为例,贝叶斯 AB 测试的步骤为:

  • 1. 确定似然的散布

    转化率的散布看做 A,B 两个群体用户是否进行了某项转化行为,0 代表无,1 代表有这种行为。因而 AB 的转化行为是合乎转化率 $p_A, p_B$ 的贝致力散布:

    $$
    \bold{d_A} = \{0, 1, 0, …, 1 \} \\
    d_A \sim Beinolli(N_A, p_A) \\
    d_B \sim Beinolli(N_B, p_B)
    $$

    那么似然就能够间接写进去

    $$
    \mathbb{P}(d|H) – \mathbb{P}(d_A, d_B | p_A, p_B) =
    \mathbb{P}(d_A|p_A) \mathbb{P}(d_B|p_B) = p_A^{c_A}(1-p_A)^{N_A-c_A}p_B^{c_B}(1-p_B)^{N_B-c_B}
    $$

  • 2. 抉择参数的先验散布

    参数的先验是咱们对参数散布的一个初始假设。例如在转化率上,如果咱们对线上的转化率无所不知,就能够假设为均匀分布。如果曾经有了线上之前体现的历史教训,也能够假设为高斯分布。但为了后续计算不便,贝叶斯统计倡议咱们抉择 似然散布的共轭先验 作为参数的先验。共轭先验与似然相乘后失去的后验散布于先验散布的数学模式统一。

    例如,咱们假设了 AB 线上转化率数据的似然是 Beinoulli 散布,他的共轭先验散布是 Beta 散布,这意味着计算出的后验也是 Beta 散布:

    $$
    p \sim Beta(\alpha, \beta) = \frac{p^{\alpha -1} (1-p)^{\beta-1}}{B(\alpha, \beta)} \\
    B(\alpha, \beta) = \frac{\Gamma(\alpha) \Gamma(\beta)}{\Gamma(\alpha + \beta)} \\
    $$

    计算后验能推导得:

    $$
    \mathbb{P}(p_A|\bold{d}_A) \sim Beta(\alpha + c_A, \beta + (N_A – c_A)) \\
    \mathbb{P}(p_B|\bold{d}_B) \sim Beta(\alpha + c_B, \beta + (N_B – c_B))
    $$

  • 3. 计算后验散布
    上一步,如果咱们选用了共轭先验,能够求出后验的解析解。但当变量多维、解析模式简单时,咱们也能够选用数值解(近似解)。后验近似解有很多种求解办法,如变分 VA、MCMC。上面贴一个用 PyMC3 的 MCMC 采样求解出的转化率后验散布:

      import numpy as np
      import pymc3 as pm
      import matplotlib.pyplot as plt
    
      pA_true = 0.04
      pB_true = 0.05
      N_A = 2500
      N_B = 3000
    
      obs_A = np.random.binomial(1, pA_true, size=N_A)
      obs_B = np.random.binomial(1, pB_true, size=N_B)
    
      with pm.Model() as ab_model:
          #priors
          p_A = pm.Uniform('p_A', 0, 1)
          p_B = pm.Uniform('p_B', 0, 1)
          #likelihoods
          obs_A = pm.Bernoulli('obs_A', p_A, observed=obs_A)
          osb_B = pm.Bernoulli('obs_B', p_B, observed=obs_B)
    
          #find distribution of difference
          delta = pm.Deterministic('delta',p_B - p_A)
    
          trace = pm.sample(5000)
    
      pm.traceplot(trace)

    MCMC 的数学细节不多叙述,只须要晓得他是用一个已知能采样的散布对后验散布进行采样。且采样时能往密度函数的密集区域采样,保障了采样的高校。

  • 4. 做出决策
    贝叶斯 AB 测试得出结论的办法没有规范范式,介绍两种罕用做法。

    Region Of Practical Equivalence (ROPE)[6]

    首先定义一个 Effective size: $\frac{\mu_A – \mu_B}{\sqrt{\sigma_A^2 + \sigma_B^2}} = \pm 0.1$, 这个指标的意思是,两组试验指标在 10% 的区域内是不能承受的(不能显著证实有论断的)。而咱们拿什么跟这个 Effective size 比拟呢?上一步咱们失去了后验 $\mathbb{P}(\mu_A – \mu_B| \bold{d})$,咱们用其 95% 的 HPD(High Posterior Density Interval)与之比拟。HPD 是后验散布的一个定义:

    而后咱们将 95%-HPD 与 Effective size 做比照:

    图(a)示意 HPD 在 Effective size 两侧,没有充沛证据证实两组有差距;图(b)HPD 齐全在 Effective size 一侧,能够发表某方胜利;图(c)HPD 被 Effective size 齐全蕴含,能够发表两者无显著差异。

    Expected Loss Method[7]

    定义一个冀望 loss:

    $$
    \mathbb{E}(\mathcal{L}) = \min(\mathbb{E}(\mathcal{L}_A) , \mathbb{E}(\mathcal{L}_B)) \\
    \mathbb{E}(\mathcal{L}_A) = \int_0^1 \int_0^1 \max(\mu_A – \mu_B, 0) \mathbb{P}(\mu_A|d_A)\mathbb{P}(\mu_B|d_B) d\mu_A d\mu_B \\
    \mathbb{E}(\mathcal{L}_B) = \int_0^1 \int_0^1 \max(\mu_B – \mu_A, 0) \mathbb{P}(\mu_A|d_A)\mathbb{P}(\mu_B|d_B) d\mu_A d\mu_B
    $$

    其中 $\mathbb{E}(\mathcal{L}_A)$ 意思是如果咱们发表 A 胜利的 loss 值是多少;决策规定就是:如果 $\mathbb{E}(\mathcal{L})$ 小于一个咱们设定的阈值,则依照 loss 较小准则抉择 A 或 B 胜利;如果 $\mathbb{E}(\mathcal{L}_A)$ 和 $\mathbb{E}(\mathcal{L}_B)$ 都小于设定阈值,则发表两者无差别。

工业界 AB 测试流程

工业界 AB 测试框架除了背地的统计学原理的利用,往往最重要的是流量的分层与分桶。两个对照组要尽可能地保障除了控制参数外其余的流量特色正交。能够了解为两组用户的画像统一,画像蕴含但不限于性别、年龄、所在城市等。

流量分桶原理
采纳如下步骤将流量调配到具体模型下面去[1]:

  • 把所有流量分成 N 个桶。
  • 每个具体的流量 Hash 到某个桶外面去。
  • 给每个模型肯定的配额,也就是每个策略模型占据对应比例的流量桶。
  • 所有策略模型流量配额总和为 100%。
  • 当流量和模型落到同一个桶的时候,该模型领有该流量。

举个栗子来说,所有流量分为 32 个桶,A、B、C 三个模型别离领有 37.5%、25% 和 37.5% 的配额。对应的,A、B、C 应该占据 12、8 和 12 个桶。为了确保模型和流量的正交性,模型和流量的 Hash Key 采纳不同的前缀。

Reference

  • [1] 流量为王:ABTest 流量分层分桶机制
  • [2] 统计学(2):AB 测试—实践根底
  • [3] AB test 的奠基论文:Overlapping Experiment Infrastructure More, Better, Faster Experimentation — Google KDD 2010
  • [4] Bayesian A/B Testing: a step-by-step guide
  • [5] https://www.dynamicyield.com/…
  • [6] J. K. Kruschke, Bayesian Estimation Supersedes the t Test, Journal of Experimental Psychology: General, 142, 573 (2013).
  • [7] C. Stucchio, Bayesian A/B Testing at VWO (2015).
退出移动版