A/B 测试流量分割:小流量网站的统计正确性
摘要:小流量站点卡住的不是访客量,而是你在监控过程中愿意接受的假阳性率。先把分流做对,再把可检测效应当预算算清楚,最后选一个不怕被看的方法。
关键要点
- 边跑边看,5% 会变成 30%。 用固定样本方法做连续监控,假阳性率最高放大六倍。
- 每臂 50 个访客是地板,不是目标。 低于这个量,"赢家"多半是头两天的噪音。
- 最小可检测效应要在开测前算,不是事后发现。 小站现实可检测的相对提升是 20% 到 30%,再小就得换工具。
- 按用户分,不按会话分。 会话级分流会把同一个人漏进两组,把效应悄悄抵消掉。
- 同一份数据,两种结论。 p 值 0.061 和贝叶斯 96.9% 可以描述同一场 8,000 访客的测试。
一、真正的约束是假阳性率
小流量团队通常把问题描述成"我们访客不够"。这个描述会导出错误的解法——把测试拖得更长,或者更糟,等一个永远不会来的 p 值。真正卡住你的是测试在跑的那段时间里,你愿意承受的误差率。
固定样本方法里,5% 的 alpha 只有在"你只看一次、且样本量就是规划的那个数"时才成立。每天早上去看面板、看着好了就停,有效假阳性率会往 30% 爬。针对这种连续监控的研究给出的就是这个结论:名义 5%,在每天看、显著就停的操作下最高到 30%。也就是说,近三分之一的"赢家"是假阳性。
对一个每月 200 次转化的站,这个算术是致命的。一季度三个假赢家,意味着路线图被噪音牵着走;损失不只在统计上——是那个季度被用来做错的东西,以及本来该上线真改进却没上线的复利损失。
更远一层的影响很少被计价:一个假赢家烧掉的不只是它自己的开发时间。它会变成新基线,下一场测试继承了一个从来没起作用的改动,损失在一个季度里悄悄叠加。这就是误差率比样本量更要紧的原因——一个坏决定污染整条序列,而慢一点但诚实的测试只花时间。
二、分流做对,有效性就赢了一半
在任何统计选择之前,分配机制本身必须站得住。小流量测试失效,绝大多数来自四种分流问题:
| 分流设计 | 坏了什么 | 修法 |
|---|---|---|
| 按会话随机 | 同一个人在手机和电脑上被分到两组 | 按用户或账号 id 哈希 |
| 按时间顺序(先 A 两周再 B) | 季节性、促销、发薪日周期混进来 | 并行跑,或按天做区块 |
| 抽样导致桶不平衡 | 52/48 的偏差被读成真实提升 | 读结果前先验分流比例 |
| 开测后剔除登录用户 | 分析人群中途变形 | 开测即冻结分析人群 |
会话级分流最常见、也最少被讨论。一个访客在手机上看到 A、在电脑上看到 B,他的行为是两种体验的平均,测出来的提升自然被拉向零。团队于是得出"这个改动没用",而实验其实从来没有把它隔离出来。
有一个很便宜的事前检查:开测前先记 1,000 个访客的分配,验两件事——比例是否在目标值两分以内,以及每个 id 是否只出现一次。两个 bug(不平衡、重复分配)都能在一小时内查出来,而上线之后就完全隐形。
还有一项经常缺的输入:主指标该用"每访客收入",而不是转化率。两个版本转化率相同,但客单价移动 20% 时收入差得很远,而只按转化率做的功效计算看不到这一点。在小站上,每访客收入是更好的主指标——它把客单价折进一个数字,分开两组需要的样本也更少。
分流还有一件容易被当成技术细节、其实决定实验能不能读懂的事:同一批人反复进同一个实验。用 cookie 哈希分流时,清缓存、换设备、用隐身模式的访客会被重新分配到另一组,这类人在两组之间的漂移会把长期效应和短期效应混在一起。按账号分流能解决已登录人群,剩下的匿名人群就只能接受这部分噪声,并在报告里把它写出来——承认噪声比假装没有噪声更有价值。
三、可检测效应是算术,不是观点
最小可检测效应是你这场测试能分辨的最小提升。它由流量、基线率和你能接受的 alpha/功效决定,应该在开测前算出来,而不是事后发现。
举个例子:一个页面每月 4,000 访客、转化率 4%,一个月 160 次转化;均分后每臂每月 80 次。按常规 80% 功效、5% alpha,要检测 20% 的相对提升——从 4% 到 4.8%——大致需要每臂 8,000 访客,在这个流量下就是约 100 周。这个数字就是"我们的测试为什么永远跑不完"的答案,而它用样本量计算器五分钟就能算出来。
由此只有两个诚实的选择。要么把你承诺要测的效应放大——改版、改定价,而不是按钮颜色;要么就别叫它实验,凭判断上线,然后做前后对比。给一个 4,000 访客的页面定 10% 相对提升的目标,那不是测试,那是排队。
小站一条可用的规则:只测你预期能带来 20% 到 30% 相对提升的改动。低于这个量级,换工具——看会话回放、看漏斗流失、做定性判断——因为这场测试看不见你要追的那个效应。
四、选一个经得起被看的方法
如果你会每天看面板(你会的),方法就必须容忍"被看"这件事。诚实的选项有三个:
- 任意时刻有效的置信序列。 这一类序贯方法的设计前提就是连续监控不会放大误差。Adobe 在其实验平台上部署的正是这套,报告在连续监控下第一类错误仍低于 5% 阈值——而被反复偷看的固定样本测试会往 1 漂。
- 贝叶斯加预先登记的决策规则。 当"最优概率"跨过阈值就停,同时对每臂样本设硬地板——50 个访客是绝对底线,不是目标。后验持续更新,不像 p 值那样惩罚偷看。
- 成组序贯设计。 开测前规划好少数几次中期查看,配一个 alpha 消耗函数。查看次数少,但每一次都合法。
同一份数据给出相反结论这件事,值得亲眼见一次。一场跑到每臂 8,000 访客的测试收在对照组 320 次转化、实验组 368 次——相对提升 15%。频率派读出 p 值 0.061、置信区间跨零:不显著。贝叶斯用均匀先验读出实验组更优的概率 96.9%。两个都没错,它们回答的是不同问题;而决策规则必须事先选好,否则就是数字在事后替你挑故事。
比框架更要紧的是这个纪律:把停止规则、最小可检测效应、主指标写进测试文档,开测前定死。看完数据再换框架的团队,买到的不是统计严谨,买到的是一套合理化说辞。
五、边界:什么时候不该测
有三种情况,统计上正确的答案是"不要测":
- 测试页月访客低于大约 5,000,多数转化测试分辨不出任何值得上线的东西。 例外是结构性大改,那种改动有 30% 相对效应才说得过去。
- 基线转化率低于 1%,先修漏斗。 在这个水平上,方差被少数边缘场景主导——支付失败、移动端流程断裂——这些要靠读日志找出来,不是靠随机分组。
- 如果站内其他东西稳不住,你测的就是自己引入的噪音。 同期改定价、同期投campaign,两组就不可比了,任何方法都修不回来。
还有一条边界值得提前说:统计显著和业务显著是两个问题。一个每月只产生 40 次转化的页面,2% 的相对提升只要有耐心就能测出来,而它值多少钱大概接近零。开测前先问:最小可接受的那个效应,一年对应多少收入?对很多小站答案就是"比这场测试的成本还低"——这完全是一个跳过测试的正当理由。
时长这件事也要说清楚,因为"再跑久一点"是默认建议,而它并不总对。时间混杂会随时长累积:两周的测试可能横跨发薪日和一个活动,跑得越久,新的流量来源接进来导致人群变形的概率也越大。如果受众中途换了一半,六周并不会把确定性翻四倍,它只是把一群更新、更不一样的人,加进一个本来围绕旧人群设计的对照里。
常见问题
问: 每个版本需要多少访客?
A: 50 是底线不是目标。4% 基线、想测 20% 提升,每臂大约要 8,000。
问: 为什么每天看结果是个问题?
A: 固定样本方法下,假阳性率会从 5% 被放大到接近 30%;要看就得换序贯或贝叶斯方法。
问: 按会话分还是按用户分?
A: 按用户或账号分。会话分流会让同一个人进两组,把测出的效应压小。
问: 贝叶斯和频率派结论不一致时信哪个?
A: 开测前就定规则。同样 8,000 访客的测试,两者可以同时给出 0.061 和 96.9%。
问: 2% 的提升值得测吗?
A: 小流量上通常不值得。测预期能带 20% 到 30% 相对提升的改动,否则改用漏斗分析。
关于通智云
通智睿见按用户身份分流、在开测时冻结分析人群,并在报出提升时同时给出不确定性——让小站能分清一个真实效应和一个周一。
相关阅读
数据来源
- A/B 测试的统计显著性:什么时候可以下结论——固定样本方法做连续监控,假阳性率从名义 5% 放大到最高 30%;最小可检测效应是最常被忽略的输入;统计显著与业务显著是两个问题。
- 小电商的 A/B 测试实践——测试页月访客不足约 5,000 时,结果要等数月且不可靠;最小可检测效应设在 20% 到 30% 相对提升;优先并行而非顺序,以避开季节性混杂;偷看会放大误差率。
- 同一份数据,两种结论——每臂 8,000 访客、320 对 368 次转化、相对提升 15%;频率派 p 值 0.061,置信区间跨零;贝叶斯最优概率 96.9%。