news 2026/6/26 14:03:32

AB实验的关键认知(二)独立同分布

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
AB实验的关键认知(二)独立同分布

—关注作者,送A/B实验实战工具包


如果说正交与互斥是 AB 实验平台的“骨架”,那么独立同分布 (i.i.d.)就是流淌在其中的“血液”。

很多工程师和分析师在面试时能背出“T 检验要求正态分布”,但当被问到“什么是 i.i.d.?为什么它比正态性更重要?”时,往往一脸茫然。

在工业界实战中,90% 的“实验翻车”事故——比如 A 组策略明明无效却显示显著(假阳性),或者 A 组策略吸干了 B 组的流量(SUTVA 违背)——归根结底都是因为违背了独立同分布假设。

今天我们不掉书袋,用最直觉的逻辑把这个统计学天条掰开了、揉碎了讲清楚。


1. 什么是 i.i.d.?

独立同分布的全称是Independent and Identically Distributed。它包含两个独立的铁律:

  1. 独立性 (Independent)
    • 定义:一个样本的取值,不会影响另一个样本的取值。
    • 人话:A 组用户吃肉,不能让 B 组用户连汤都喝不上。用户之间必须是“老死不相往来”的孤岛。
  2. 同分布 (Identically Distributed)
    • 定义:所有样本都来自同一个概率分布。
    • 人话:A 组和 B 组的用户,必须是从同一个池子里舀出来的水。不能 A 组全是早高峰的上班族,B 组全是半夜的夜猫子。

2. 独立性 (Independent):被忽视的“吸血鬼”

在互联网实验中,独立性最容易被网络效应 (Network Effect)破坏。学术界称之为SUTVA (Stable Unit Treatment Value Assumption)违背。

反例:网约车的“资源抢夺”

假设滴滴要在某城市测试一个“司机端高额补贴”策略。

  • A 组司机:有补贴,接单积极性暴涨。
  • B 组司机:无补贴,正常接单。

实验结果
A 组接单率显著上升,B 组接单率显著下降
计算出的 Lift = A - B,看起来巨大无比。

真相
这是一个封闭的供需市场。订单总量是固定的。A 组司机因为抢单太猛,把本该属于 B 组司机的单子抢走了。
A 组的提升,是靠**“吸血”** B 组得来的,而不是策略真的创造了额外价值。这违背了独立性。

B组司机-无补贴

A组司机-有补贴

有限的订单池

抢单能力强

抢单能力强

抢不过

无单可接

Order1

Order2

Order3

DriverA1

DriverA2

DriverB1

DriverB2

正例:如何修复?
对于这种双边市场(Marketplace)实验,不能按用户/司机 ID分流,而必须按时空分流。

  • 时间片轮转:今天全城 A 策略,明天全城 B 策略(Switchback Experiment)。
  • 地理隔离:北京跑 A 策略,上海跑 B 策略(虽然有城市差异,但保证了独立性)。

3. 同分布 (Identically Distributed):隐形的“时间刺客”

同分布要求实验组和对照组的样本在统计属性上是一致的。这通常由随机化 (Randomization)来保证,但在工程实现上很容易出 Bug。

反例:哈希算法的“时序陷阱”

假设你写了一个简陋的分流服务:

  • 前 50% 进入的用户→ \rightarrowA 组。
  • 后 50% 进入的用户→ \rightarrowB 组。

业务场景
这是一个早报类 App。

  • A 组用户:全是早上 6:00 - 9:00 进来的“早起党”,特征是年龄大、留存高、点击率低。
  • B 组用户:全是 9:00 以后进来的“摸鱼党”,特征是年轻、点击率高。

实验结果
即使 A/B 两组没有任何策略差异,B 组的点击率也会显著高于 A 组。
原因:A 组和 B 组的样本不同分布。你对比的不是策略,而是两群不同的人。

用户池

时间轴

全部进入

全部进入

性质不同

性质不同

6:00-9:00

9:00-12:00

老年/早起用户

A组

年轻/摸鱼用户

B组

结果不可比

正例:如何修复?
必须使用哈希取模hash(uid) % 100)进行实时分流。
无论用户几点来,只要他的 UID 是固定的,他进 A 组的概率永远是 50%。这样 A 组和 B 组里都会均匀混杂“早起党”和“摸鱼党”,实现了同分布。


4. 为什么 i.i.d. 比正态性更重要?

回到那个经典的面试题。

  • 正态性:即使原始数据不正态,只要样本量够大,中心极限定理 (CLT)会帮我们把均值分布“修正”为正态。我们有数学工具(T检验)来兜底。
  • i.i.d.:如果数据不独立(如网约车吸血)或不同分布(如时间片偏差),没有任何数学工具能救你
    • 因为你的对照组 (Baseline)已经失效了。
    • 你以为你在测策略,其实你在测运气,或者在测系统 Bug。

一句话总结
正态性决定了你算 P 值准不准(战术问题),而i.i.d. 决定了你的实验成不成立(战略问题)


如果这篇文章帮你理清了思路,不妨点个关注,我会持续分享 AB 实验干货文章。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/6/15 11:51:21

玩转Synbo|为什么说质押是进入Club的关键动作

各位社区成员大家好,在进入Synbo体系过程中,质押是获取Club门票与绑定身份的关键动作。当你的质押数量达到某个Club设置的阈值,你就会获得这个Club的成员身份,并解锁:融资可见性、参与权限、激励分配关系,本…

作者头像 李华
网站建设 2026/6/18 14:08:03

GC-IP201 驱动

数据手册官网上面 https://amac-chemnitz.com/index.php/en/products/interpolationsschaltkreise/93-gc-ip201b-en STM32F103C8T6翻译后的是通信协议:每个数据传输都通过主机处理器发送一个SPI字来启动。一个SPI字由4位操作码、4位硬件地址和最多8位数据组成。 只有…

作者头像 李华
网站建设 2026/6/15 18:15:13

Eclipse 打开报 `An error has occurred. See the log null` 错误及解决方法

Eclipse 打开报 An error has occurred. See the log null 错误及解决方法 项目场景: 在日常 Java 开发中,Eclipse 是最常用的开发工具之一。我们在 Windows 系统中使用 Eclipse 时,有时会遇到突然无法打开 Eclipse 的情况,报错信…

作者头像 李华
网站建设 2026/6/17 14:32:02

ARM体系结构

一、嵌入式系统的本质与层级嵌入式系统的官方定义是:以应用为中心,以计算机技术为基础,软硬件可剪裁的专用计算机系统。它与通用计算机最大的不同,在于完全围绕具体应用场景设计,可根据需求对功耗、体积、环境适应性、…

作者头像 李华
网站建设 2026/6/21 10:46:16

vivado安装资源推荐:新手自学的最佳路径

Vivado 安装指南:从零开始搭建 FPGA 开发环境 你是不是也曾在搜索“vivado安装”时,被一堆杂乱的教程、失效的链接和复杂的系统要求搞得头大? 明明只是想学点 FPGA 基础逻辑设计,结果第一步—— 装软件 ,就卡了三天…

作者头像 李华
网站建设 2026/6/12 21:53:34

上位机软件开发中串口超时机制的设计实践

串口通信“卡死”怎么办?上位机超时机制的实战设计之道你有没有遇到过这样的场景:上位机软件点击“读取参数”,界面瞬间“假死”,鼠标动不了,任务管理器都救不回来?等了整整30秒,才弹出一个“设…

作者头像 李华