测试设计
如何设计隔离单一变更效应的实—假设、指标、分配、时—在任何流量之前
为什么
A/B 测试是向用户问的问题,设计是问题的措辞。设计差的测试问混乱的问题得不可解的答。三种最常见设计失败:同时测两个变更(无法把提升归于任一)、测不受变更影响的指标(看到噪声并断"无效—)、结果好看时早停(膨胀假阳性并上线噪声)。设计好的测试述可证伪假设("—CTA 颜色从灰改蓝将使点击率至少提 5%")、定一个预期被移动的主指标—0/50 分配以消分配偏、预承诺样本量和时长使决策规则在有可诱结果前已定。此纪律使测试的答可信
何时使用
当你有具体变更、关于其效应的假设、且足够流量达所需样本量。非"想试点什—时
如何做
1. 假设述为可证伪陈述:"—X —A —B 将使[主指标]至少—[MDE]— —若不能如此精确述你还没准备好—2. 定一个主指标 —变更设计要移动的指标。若说不出名变更不够具体不可—3. —2-5 护栏指标 —变更不可损的指标(如页加载时间、错误率、收入)。此—勿害"检—4. 由基线指标率、MDE、alpha—.05)、power—.80)算所需样本—用在线计算器或统计库 5. 算所需时长:样本量 / 日流量。若时长 > 4 周要么提 MDE、减变体数、要么别跑(流量太低—6. —user_id 的一致哈—50/50(或均分变体)分流量 —绝不用基于时间的分(—后)因它把变更与时间混淆 7. 在实验登记预承诺设计:假设、主指标、护栏、样本量、时长、决策规—在任何流量暴露前 8. 定决策规则:"上线若主指标提升 >= MDE —p<0.05 且无护栏退 > X%— —规则在有结果前已定
示例
# 实验:CTA 颜色 —-> —登记—026-09-20 负责人:@pm-checkout
假设:把结账 CTA 从灰—6b7280)改蓝(#2563eb)将使点击率相对至少—5%—
主指标:CTA 点击率(点击 / 展示— 基线—2.4% MDE—% 相对— 0.62pp 绝对—
护栏指标— - 页加载时间(不可—> 100ms— - 结账错误率(不可—> 0.5pp— - 总转化(不可—> 1%—
样本量:每臂 38,400 展示(双比例 z 检验,alpha=0.05,power=0.80—基线=0.124,MDE=0.0062—时长—8400 / 12000 日展—= 3.2 —-> 取整 4 —分配:经 hash(user_id) % 2 50/50,按用户—
决策规则— 上线—CTR 提升 >= 5% 相对 —p < 0.05
且页加载—< 100ms
且错误率—< 0.5pp
且总转化减 < 1%
砍若任一护栏—CTR 提升 < 0(显著减—
预承诺于实验登记 #447。第 4 天前不偷看。常见问题
- ⚠一变体测多变更 —"重设计结账页"—15 变更—0% 提升无法归于任一,故无法迭代;要么全上要么不上,学为零
- ⚠用前/后(基于时间)比较而非并发 A/B —周二到周三间任何变的(假日、竞品宕机、营销邮件)与你的变混淆,无法分离
- ⚠不预承诺决策规则 —无固定规则团队看结果后决"上线",阈值静移到使偏好结果显著处(直—p-hacking)
- ⚠看结果后—MDE —"提升 3%,那就把 3% —MDE 并声明显—是循环推理,把每个测试变赢无论底层真相
最佳实践
- ✓一次测一变更 —若有 15 变更—15 顺序测试或多臂老虎机;绝勿捆一变体,因学是目的而捆教你无物
- ✓用并发分配(基于哈希、按用户粘)绝不用基于时—并发消时间混淆;—后含期内变的的每其他物
- ✓暴露前在登记预承诺全设计(假设、指标、MDE、样本量、决策规则)—此使 p-hacking 不可能,因规则在有结果前已定
- ✓MDE 基于业务价值非统计方便 —"什么提升值得上?"是对问题—3 天能检什么提升?"是错问题,导致上微小效应