在 AB 实验的实际业务中,我们经常面临一个两难的困境:
业务方每天都想看数据,看到涨了就想停,看到跌了也想停。但统计学家告诉我们:“不能偷看!必须跑满预设样本量,否则 P 值就失效了。”
这导致了两个痛点:
- 效率低:明明上线第一天就崩了(显著负向),却非要硬着头皮跑满 7 天才能下线,浪费流量和钱。
- 决策难:明明效果很好,但因为没跑满周期,不敢提前推全。
今天介绍的mSPRT(Mixture Sequential Probability Ratio Test,混合序列概率比检验),就是为了解决这个问题而生的。它是工业界(Uber, Airbnb, Doordash)公认的实验加速神器。
一、 什么是 mSPRT?
mSPRT是一种专为**序列分析(Sequential Analysis)**设计的统计检验方法。
与传统 T 检验要求“固定样本量”(Fixed Horizon)不同,mSPRT 允许我们在实验过程中连续、多次地查看数据并进行假设检验,同时还能严格控制犯错的概率(Type I Error)。
它的核心作用是:
- 实时监控:在实验未结束时,合法地计算显著性。
- 提前终止:一旦数据积累到足够的证据证明策略有效(或无效),即可提前结束实验,无需等待预设周期。据统计,它能平均节省30%~50%的样本量。
二、 核心原理拆解
为了让你看懂 mSPRT 是如何工作的,我们先直接看它的核心公式(基于正态分布近似):
Λn=σ2σ2+nτ2⋅exp(n2τ2(Yˉn−Xˉn)22σ2(σ2+nτ2)) \Lambda_n = \sqrt{\frac{\sigma^2}{\sigma^2 + n\tau^2}} \cdot \exp \left( \frac{n^2 \tau^2 (\bar{Y}_n - \bar{X}_n)^2}{2\sigma^2 (\sigma^2 + n\tau^2)} \right)Λn=σ2+nτ2σ2⋅exp(2σ2(σ2+nτ2)n2τ2(Yˉn−Xˉn)2)
别被公式吓到,我们把它拆解成三个最直观的逻辑步骤:
1. 核心思想:也是一种“赌博”
传统 P 值是在算“H0(无差异)成立的概率有多小”。而 mSPRT 算的是一个比值,叫似然比(Likelihood Ratio,Λn\Lambda_nΛn)。
它在比什么呢?
Λn\Lambda_nΛn= (数据像是有提升的概率) / (数据像是没提升的概率)
- 如果Λn\Lambda_nΛn很大(比如 100),说明数据强烈支持“有提升”。
- 如果Λn\Lambda_nΛn很小(比如 0.5),说明数据支持“没提升”。
2. 关键设计:它怎么做到“防偷看”的?
如果你仔细看上面的公式,会发现它由两部分组成:
Λn≈惩罚项⏟随时间变小×奖励项⏟随差异变大 \Lambda_n \approx \underbrace{\text{惩罚项}}_{\text{随时间变小}} \times \underbrace{\text{奖励项}}_{\text{随差异变大}}Λn≈随时间变小惩罚项×随差异变大奖励项
- 奖励项(指数部分):包含(Yˉn−Xˉn)2(\bar{Y}_n - \bar{X}_n)^2(Yˉn−Xˉn)2。只要实验组和对照组的差异越大,这一项就呈指数级爆炸增长,推动Λn\Lambda_nΛn变大。
- 惩罚项(根号部分):包含样本量nnn。随着时间推移,样本越来越多,这一项会变得越来越小。
这正是 mSPRT 的精髓:
在实验早期(样本少),虽然差异可能偶然很大,但惩罚项也很严厉,把Λn\Lambda_nΛn压得死死的,防止你因为数据波动而误判。只有当差异持续、稳定地存在,奖励项才能最终战胜惩罚项,冲破阈值。
3. 判决标准:撞线即停
mSPRT 不需要算 P 值,它直接看Λn\Lambda_nΛn是否超过了一个固定的阈值。
只要在实验的任意时刻:
Λn>阈值 \Lambda_n > \text{阈值}Λn>阈值
就立即宣布:显著!停止实验!
三、 核心困惑与实战指南
在落地 mSPRT 时,大家最容易在以下几个参数上卡壳。我们逐一解答:
Q1:阈值 (Threshold) 的选择逻辑是什么?业内通常怎么选?
阈值直接决定了你的判决有多严。公式非常简单:
阈值=1α \text{阈值} = \frac{1}{\alpha}阈值=α1
其中α\alphaα是你允许的假阳性率(通常是 0.05)。
- 业内标准:绝大多数公司(如 Optimizely)默认设定α=0.05\alpha=0.05α=0.05,所以阈值通常设为 20。
- 含义:当Λn>20\Lambda_n > 20Λn>20时,意味着“有提升的可能性是没提升的 20 倍”,此时犯错概率低于 5%。
Q2:公式是否能保证随着时间推移Λn\Lambda_nΛn越来越大?
不一定,这取决于策略是否真的有效。
- 如果策略有效:差异(Yˉ−Xˉ)(\bar{Y} - \bar{X})(Yˉ−Xˉ)会稳定存在,公式里的奖励项(指数增长)会碾压惩罚项(线性衰减),导致Λn\Lambda_nΛn飞速上涨,最终冲破 20。
- 如果策略无效:差异是随机波动的,奖励项起不来,而惩罚项随着时间nnn增加会一直变小。所以Λn\Lambda_nΛn反而会越来越小,趋近于 0。
- 这正是我们要的:好的策略快速显著,坏的策略快速“显形”为无效。
Q3:τ\tauτ(Tau) 是什么?怎么选?
τ\tauτ是公式里最重要的调节参数。它代表了你预期这个实验会有多大的提升。
- 怎么选:直接设置为你的MDE(最小可检测效应)。
- 比如:你希望检测出 1% 的提升,就设τ=0.01\tau = 0.01τ=0.01。
- 原理:τ\tauτ就像显微镜的焦距。把它设为 MDE,相当于把检测器的灵敏度焦点对准了你最关心的那个提升幅度,此时检测效率最高。
Q4:h(θ)h(\theta)h(θ)怎么定的?怎么求的?
在 mSPRT 的数学推导中,我们需要对备择假设(H1)设定一个先验分布h(θ)h(\theta)h(θ)。
- 怎么定:在工业界最通用的实践中,我们假设它服从正态分布N(0,τ2)N(0, \tau^2)N(0,τ2)。
- 怎么求:你不需要“求”它,这是人为设定的。
- 当你把τ\tauτ设为 MDE 时,你就已经定义好了这个分布。
- 它的物理含义是:我们假设真实的提升幅度大概率落在 0 附近,且标准差为 MDE。mSPRT 通过这个分布,把所有可能的提升幅度(无论大小)都加权考虑进去了。
总结:
mSPRT 不是黑魔法,它是一套严密的数学记账系统。通过引入**“惩罚项”抵消偷看数据的风险,通过“混合分布”**捕捉任意大小的收益。对于追求敏捷迭代的团队来说,它是替代传统 T 检验的最佳选择。