---关注作者,送A/B实验实战工具包
在构建自研AB实验平台或手写SQL计算显著性时,工程师往往会在"方差计算"这一步卡壳。
通常会遇到两个灵魂拷问:
- 计算样本方差时,分母到底是 nnn 还是 n−1n-1n−1?
- 对于点击率(CTR = Clicks/Views)这种由两个指标相除得到的比率指标 (Ratio Metric) ,它的方差怎么算?能不能直接用伯努利分布公式 p(1−p)p(1-p)p(1−p)?
这两个问题如果处理不好,会导致置信区间计算错误,进而产生错误的实验结论(Type I/II Error)。今天我们深入统计学底层,把这两个"方差陷阱"填平。
1. 贝塞尔校正:为什么分母是 n-1?
1.1 核心困惑
在统计学教科书中,你会看到两个方差公式:
- 总体方差 (σ2\sigma^2σ2) :分母是 NNN。
- 样本方差 (S2S^2S2) :分母是 n−1n-1n−1。
在AB实验中,我们拿到的流量(样本)只是全量用户(总体)的一小部分,我们的目的是用样本去估计总体。
1.2 直觉解释(Intuition)
为什么要减 1?这被称为贝塞尔校正 (Bessel's Correction)。
我们可以这样理解:
方差本质上是在衡量数据点距离"中心"的平均距离。
- 当我们计算总体方差 时,我们知道真实的中心(总体均值 μ\muμ)。
- 当我们计算样本方差 时,我们不知道 μ\muμ,只能用样本均值 (xˉ\bar{x}xˉ) 来代替。
问题出现了 :样本均值 xˉ\bar{x}xˉ 是完全由这组样本数据计算出来的。它天然地处于这组数据的"重心"位置。这意味着,数据点到 xˉ\bar{x}xˉ 的距离之和,一定小于或等于 数据点到真实均值 μ\muμ 的距离之和。
换句话说,样本数据跟自己的均值"太亲近"了 。如果我们直接除以 nnn,算出来的方差会比真实的总体方差偏小(有偏估计)。
为了抵消这种"偏小"的倾向,我们在分母上减去 1,让分母变小,从而把计算出的方差值"拉大"一点,使其成为总体方差的无偏估计 (Unbiased Estimator)。
1.3 数学定义
S2=∑i=1n(xi−xˉ)2n−1 S^2 = \frac{\sum_{i=1}^{n} (x_i - \bar{x})^2}{n - 1} S2=n−1∑i=1n(xi−xˉ)2
- nnn:样本量。
- n−1n-1n−1:自由度 (Degrees of Freedom) 。因为在计算方差前,我们已经用掉了一个信息量去计算 xˉ\bar{x}xˉ,所以剩下的自由变动的维度只剩 n−1n-1n−1 个。
AB实验中的应用 :
虽然在 AB 实验动辄百万级的样本量下,nnn 和 n−1n-1n−1 的区别微乎其微,但在写代码实现通用的统计计算库时,必须严格使用 n−1n-1n−1 以保证数学上的严谨性。
2. Delta Method:比率指标的方差难题
2.1 核心痛点
AB实验中充斥着大量的比率指标 (Ratio Metrics),例如:
- 点击率 CTR = ∑Clicks∑Views\frac{\sum Clicks}{\sum Views}∑Views∑Clicks
- 转化率 CVR = ∑Orders∑Clicks\frac{\sum Orders}{\sum Clicks}∑Clicks∑Orders
- 人均时长 = ∑Duration∑Users\frac{\sum Duration}{\sum Users}∑Users∑Duration
陷阱 :很多新人会直接套用简单的方差公式,或者错误地认为 Var(YX)=Var(Y)Var(X)Var(\frac{Y}{X}) = \frac{Var(Y)}{Var(X)}Var(XY)=Var(X)Var(Y)。
更常见的错误是把 CTR 当作简单的伯努利分布(0/1分布),直接用 p(1−p)n\frac{p(1-p)}{n}np(1−p) 计算方差。这是错误的,因为分母(Views)通常不是实验的随机单元(Randomization Unit,通常是User)。同一个用户的多次 View 之间存在相关性,不满足独立同分布(i.i.d)假设。
2.2 解决方案:Delta Method
当我们需要计算两个随机变量之比(Y/XY/XY/X)的方差时,我们需要用到Delta Method(得塔法)。
它的核心思想是:泰勒展开 (Taylor Expansion) 。
将非线性的函数(两个变量相除)在均值附近进行线性化近似 ,从而利用 XXX 和 YYY 的方差及协方差来估算整体方差。
2.3 核心公式
假设 R=YXR = \frac{Y}{X}R=XY,其中 XXX 和 YYY 是随机变量(例如 XXX 是总曝光,YYY 是总点击)。
RRR 的方差近似公式为:
Var(R)≈1μX2Var(Y)+μY2μX4Var(X)−2μYμX3Cov(X,Y) Var(R) \approx \frac{1}{\mu_X^2} Var(Y) + \frac{\mu_Y^2}{\mu_X^4} Var(X) - 2 \frac{\mu_Y}{\mu_X^3} Cov(X, Y) Var(R)≈μX21Var(Y)+μX4μY2Var(X)−2μX3μYCov(X,Y)
或者写成更易于记忆的相对形式:
Var(R)R2≈Var(Y)μY2+Var(X)μX2−2Cov(X,Y)μXμY \frac{Var(R)}{R^2} \approx \frac{Var(Y)}{\mu_Y^2} + \frac{Var(X)}{\mu_X^2} - 2 \frac{Cov(X, Y)}{\mu_X \mu_Y} R2Var(R)≈μY2Var(Y)+μX2Var(X)−2μXμYCov(X,Y)
- μX,μY\mu_X, \mu_YμX,μY:分别为分母和分子的均值。
- Var(X),Var(Y)Var(X), Var(Y)Var(X),Var(Y):分别为分母和分子的方差。
- Cov(X,Y)Cov(X, Y)Cov(X,Y):分子和分母的协方差。这非常重要,因为点击和曝光通常是正相关的(曝光越多,点击通常越多),忽略协方差会导致方差估计严重虚高。
2.4 变量交互逻辑
- 方差项 :分子(YYY)波动越大,或者分母(XXX)波动越大,都会导致比率(RRR)的波动增加。
- 协方差项 :注意公式中的减号 。如果 XXX 和 YYY 高度正相关(Cov>0Cov > 0Cov>0),这一项会减小整体方差。
- 直觉理解 :如果分母变大时,分子也跟着变大,那么它们的比值 Y/XY/XY/X 反而会保持相对稳定。这就是为什么我们需要计算协方差来"纠偏"。
3. 总结:两者的区别与联系
| 维度 | 贝塞尔校正 (n−1n-1n−1) | Delta Method |
|---|---|---|
| 解决什么问题? | 估计偏差:样本均值导致的方差低估。 | 结构复杂性:非线性复合指标(比率)的方差估算。 |
| 应用场景 | 所有的绝对值指标(如人均收入、人均订单)。 | 所有的比率指标(如CTR、CVR、ROI)。 |
| 数学工具 | 自由度理论。 | 泰勒级数展开(线性近似)。 |
| AB实验实战 | 基础配置,代码库默认开启。 | 进阶配置,处理 CTR/CVR 等核心指标必用。 |
一句话总结 :
用 n−1n-1n−1 是为了对得起数学老师,保证估计是无偏的;用 Delta Method 是为了对得起业务场景,解决 User 级别随机化与 Event 级别指标计算之间的矛盾。
如果这篇文章帮你理清了思路,不妨点个关注。我会持续分享 AB 实验专题文章。
