← A/B 测试知识库

A/B 测试实验案例库

A/B 测试 知识库


本文档提供真实场景下的 A/B 测试完整案例,每个案例覆盖:业务背景 实验设计 数据 分析过程 决策 复盘。目标是让读者从"知道理论"到"会做决策"。

目录

  1. 案例一:推荐算法迭代当平均效应掩盖了群体差异
  2. 案例二:定价策略转化率与 GMV 的取舍
  3. 案例三:UI 改版Novelty Effect 的识别与判断
  4. 案例四:推送优化DAU 增长与卸载风险的博弈
  5. 案例五:搜索排序 Interleaving小流量高效对比
  6. 案例六:双边市场溢出效应的识别与修正
  7. 案例七:ToB 小样本样本不足时的实验策略
  8. 案例八:"失败"实验的复盘假设错了还是执行问题?

案例一:推荐算法迭代

业务背景

某短视频平台计划将推荐模型的召回层从协同过滤升级为双塔模型。团队预期新模型能提升用户观看时长。

实验设计

要素 配置
实验单元 用户 ID
对照组 协同过滤召回(老模型)
实验组 双塔模型召回(新模型)
主指标(OEC) 人均观看时长(分钟/天)
护栏指标 人均点赞率、人均评论率、次日留存率、App 崩溃率
样本量 每组 50 万用户
实验时长 14 天(含 3 天模型预热期)
分流比例 Control 10% / Treatment 10%

分析过程

Step 1:SRM 检验

Control 502,134 人,Treatment 501,872 人。 = 0.07,p = 0.79。通过。

Step 2:整体效应(CUPED 修正后)

指标 Control Treatment 效应量 相对变化 95% CI p-value
人均观看时长 32.5 min 32.9 min +0.4 min +1.23% [-0.1, +0.9] p = 0.11
人均点赞率 4.20% 4.18% -0.02pp -0.48% [-0.15, +0.11] p = 0.72
次日留存 58.3% 58.4% +0.1pp +0.17% [-0.2, +0.4] p = 0.51

整体结论:不显著。 新模型在平均意义上并未带来显著提升。

Step 3:HTE 分析(按用户活跃度分组)

直觉告诉我们不能就此放弃新模型可能对不同用户群体产生不同的效果。我们按实验前 30 天的活跃天数将用户分为三组:

用户分层 Control 时长 Treatment 时长 效应量 p-value
低活(< 5 天) 8.2 min 9.1 min +0.9 min (+10.9%) p = 0.003
中活(5-15 天) 28.4 min 28.7 min +0.3 min (+1.1%) p = 0.28
高活(> 15 天) 52.1 min 51.0 min -1.1 min (-2.1%) p = 0.02

多重检验校正(Bonferroni,m=3 _adjusted = 0.017):

发现:新模型在低活用户上有显著正向效果,但对高活用户可能有微弱的负面影响。

Step 4:护栏指标分组检查

分组 点赞率变化 次日留存变化 方向
低活 +0.5pp (显著) +0.8pp (显著) 正向
高活 -0.3pp (不显著) -0.2pp (不显著) 无显著变化

决策

最终决策:分层上线低活用户用新模型,高活用户保留老模型。

理由:

  1. 低活用户群体效应量 +10.9%,统计显著且护栏指标健康
  2. 高活用户虽有微弱负面信号,但校正后不显著,保留老模型不引入风险
  3. 整体不显著是因为高活用户量大(占 60%+)+ 负面效应抵消了低活用户的正向效应

关键启示

  1. 平均效应的欺骗性:整体不显著不代表策略无效,可能是正负效应相互抵消
  2. HTE 不是炫技而是刚需:如果不做分组分析,这个 +10.9% 的提升就被埋没了
  3. 分层上线 > 全量一刀切:好策略应该精准投放到受益群体
  4. 为什么低活用户受益:双塔模型对行为稀疏的用户有更好的泛化能力,协同过滤在冷启动场景下效果差

案例二:定价策略

业务背景

某电商平台测试会员订阅价格调整:月费从 29 元降至 25 元(降幅 13.8%)。预期降低价格能提升订阅转化率,但需要评估整体 GMV 影响。

实验设计

要素 配置
实验单元 用户 ID(仅包含近 30 天未订阅的潜在用户)
对照组 月费 29 元(现价)
实验组 月费 25 元(新价)
主指标(OEC) 人均 GMV(订阅费 + 平台交易佣金)
次级指标 订阅转化率、ARPU
护栏指标 次日留存率、客诉率
样本量 每组 20 万用户
实验时长 21 天
分流比例 Control 50% / Treatment 50%

分析过程

Step 1:SRM 检验

通过。

Step 2:主指标分析

指标 Control Treatment 效应量 相对变化 95% CI p-value
订阅转化率 3.20% 4.15% +0.95pp +29.7% [+0.6, +1.3]pp p < 0.001
ARPU(订阅费) 0.93 元 1.04 元 +0.11 元 +11.8% [+0.05, +0.17] p < 0.001
人均 GMV(含交易佣金) 5.82 元 5.64 元 -0.18 元 -3.1% [-0.42, +0.06] p = 0.14

转化率大幅提升,订阅 ARPU 提升(因为更多人订阅),但人均 GMV 下降且不显著

Step 3:拆解 GMV 下降的原因

人均 GMV = 订阅费收入 + 交易佣金收入

订阅费:
  Control: 0.93 元
  Treatment: 1.04 元 (+11.8%)

交易佣金:
  Control: 4.89 元
  Treatment: 4.60 元 (-5.9%)

订阅费增长了,但交易佣金下降了。为什么?

进一步按用户分层分析发现:降价吸引了大量"边际用户"(原本因为价格未订阅的用户)。这批用户的特征是:订阅意愿强但消费能力弱,订阅后在平台上的交易反而低于平均。

Step 4:ROI 估算

Control 年化 GMV 预估:5.82  12 = 69.84 元
Treatment 年化 GMV 预估:5.64  12 = 67.68 元
单用户 GMV 下降:2.16 元/年

假设 100 万潜在用户:
  总收入损失 = 100 万  2.16 元 = 216 万/年

决策

最终决策:不上线。

理由:

  1. 虽然转化率大幅提升(+29.7%),但整体 GMV 呈下降趋势(-3.1%)
  2. 新增订阅用户的质量(交易活跃度)低于原有用户群
  3. 需要评估"降价是否可能通过长期品牌调性影响高价值用户"本次实验未覆盖此维度

后续行动

关键启示

  1. 转化率不是最终目标:提升了一个指标不代表业务变好了
  2. 混合效应陷阱:降价同时改变了"用户量"和"用户结构",需要拆解分析
  3. ROI 计算要落地:统计显著还不够,必须有商业上的正向回报

案例三:UI 改版

业务背景

某新闻 App 计划重新设计首页的信息流布局:将原本的单列大图改为双列小图 + 标题。预期新布局能提升用户滑动深度和内容点击量。

实验设计

要素 配置
对照组 单列大图布局(老 UI)
实验组 双列小图布局(新 UI)
主指标 人均内容点击次数
护栏指标 人均阅读时长、次日留存率、卸载率
样本量 每组 30 万用户
实验时长 14 天
分流比例 Control 50% / Treatment 50%

分析过程

整体分析

指标 Day 1-3 Day 4-7 Day 8-14
点击次数变化 +12.4% *** +8.1% ** +3.2% (p=0.08)
阅读时长变化 +5.2% * +1.8% -2.1% (p=0.18)
次日留存变化 +0.3pp -0.1pp -0.5pp (p=0.04)

趋势非常明显:效果在随时间衰减。

效应量随时间变化(点击次数):

  +12%  
         
   +8%    
           
   +3%      
             ~~~~(不再显著)
             
   
        D1-3 D4-7 D8-14

决策

最终决策:不上线,但保留洞察。

决策逻辑:

  1. Day 1-3 的高点击是 Novelty Effect(新奇效应)用户因界面变化产生好奇心
  2. 阅读时长到 Day 8-14 开始呈现负面趋势,说明新布局虽然刺激了"点击更多",但每次点击的阅读深度下降
  3. 更致命的是,Day 8-14 的次日留存率已经显著下降(-0.5pp,p=0.04)这是长期伤害的早期信号
  4. 如果再延长实验 1-2 周,负面趋势大概率会更加清晰

有价值的洞察

关键启示

  1. Novelty Effect 是客观存在的,不是玄学本例中效果从 +12% 降到不显著仅用了两周
  2. 两周是最低实验时长如果 7 天就停止,会做出"显著正向、应该上线"的错误决策
  3. 护栏指标是救命稻草留存率的下降远比点击率的短期提升更重要
  4. "失败的实验"也是有价值的发现了用户偏好(信息密度),指导了下一步的迭代方向

案例四:推送优化

业务背景

某电商 App 计划将推送策略从"每天固定 2 次"改为"基于用户活跃时间个性化推送,每天最多 3 次"。预期提升用户打开率和下单转化。

实验设计

要素 配置
对照组 固定时间推送,每天 2 次(早 10 点、晚 8 点)
实验组 个性化时间推送,每天最多 3 次
主指标 人均 GMV
护栏指标 推送打开率、卸载率、推送关闭率(用户在系统设置中关闭通知)
样本量 每组 40 万用户
实验时长 28 天(需要足够长时间观察卸载行为)
分流比例 Control 50% / Treatment 50%

分析过程

Step 1:整体指标

指标 Control Treatment 效应量 p-value
人均 GMV 12.40 元 13.15 元 +0.75 元 (+6.0%) p = 0.02
推送打开率 8.2% 7.1% -1.1pp (-13.4%) p < 0.001
推送关闭率 2.1% 3.8% +1.7pp (+81%) p < 0.001
卸载率 0.8% 1.2% +0.4pp (+50%) p = 0.01

Signal 矛盾:GMV 显著提升,但三条护栏指标全部恶化。

Step 2:深度拆解

不是所有用户都收到了更多推送只有那些活跃时间不在早 10 点和晚 8 点的用户才会接收到第 3 条推送。

用户群体 平均推送条数 GMV 变化 卸载率变化
原活跃时间匹配(仍 2 条) 2.0 2.1 +3.2% +0.1pp (ns)
原活跃时间不匹配(新增第 3 条) 2.0 2.8 +11.5% ** +1.2pp **

发现:GMV 的增长几乎全部来自"新增推送"的用户群体,但这批用户的卸载率也大幅上升。

Step 3:ROI 估算

受益:GMV +0.75 元/人/28 天  +9.75 元/人/年
损失:卸载率 +0.4pp

假设:
- 总用户 1000 万
- 单用户年 LTV = 150 元
- 卸载用户流失率 80%(假设卸载后 20% 会回来)

年 GMV 增益 = 1000 万  9.75 = 9750 万元
年用户流失损失 = 1000 万  0.4%  150 元  80% = 4800 万元
净收益 = 9750 - 4800 = 4950 万元

决策

最终决策:灰度上线,但缩小触达范围。

  1. ROI 计算显示净收益为正(+4950 万元)
  2. 但卸载率上升是不可忽视的长期风险
  3. 策略调整为:"仅对不匹配时间的用户增加 1 条推送(最多 3 条),而不是所有用户"
  4. 排除此前已关闭推送的用户(这些用户的推送耐受度更低)
  5. 上线后密切监控卸载率 90 天

关键启示

  1. GMV 不是唯一的北极星:增长不能以大量流失用户为代价
  2. 护栏指标必须以"净效果"来决策:有代价的增长需要计算 ROI
  3. 用户分群是决策的关键:知道"谁受益"和"谁受损"才能做出精准调整
  4. 长周期实验的必要性:卸载行为需要更长时间窗口来准确捕捉

案例五:搜索排序 Interleaving

业务背景

搜索团队测试两种排序策略:当前策略(按相关性排序),候选策略(按相关性 点击率排序)。采用 Interleaving(成对比较)方法进行对比。

为什么用 Interleaving 而不是传统 A/B

对比维度 传统 A/B Interleaving
每用户看到 只体验一种排序 两种排序结果混合(穿插展示)
信号来源 组间对比 同一用户的点击偏好
敏感度 基准 通常高 10-100 倍
所需样本量 小(可少至 1/10)

适用条件:两种排序返回的结果集高度重叠,混合展示不影响用户体验。

实验设计

要素 配置
方法 Team-Draft Interleaving(轮流从两组结果中选取,去重后呈现)
度量 Preference Score = (候选策略点击数 - 当前策略点击数) / 总点击数
样本量 5,000 次搜索(传统 A/B 需 50,000+)
实验时长 3 天
H Preference Score = 0(两种排序无差异)

分析过程

指标
总搜索次数 5,127
当前策略被点击数 2,183
候选策略被点击数 2,589
Preference Score +0.079
95% CI(Bootstrap) [+0.042, +0.116]
t 统计量 t = 4.21
p-value p < 0.001

候选策略的点击偏好显著为正(+7.9%),且仅用了 3 天、5,000 次搜索。

佐证指标

指标 当前策略 候选策略 差异
首条 CTR 31.2% 34.8% +3.6pp
平均点击位置 1.82 1.65 更高(结果更靠前)

决策

最终决策:候选策略显著优于当前策略,进入传统 A/B 验证阶段。

注意:Interleaving 告诉你"哪个更好",但不能直接告诉你"好了多少"(因为用户行为在混合展示中与被单独展示时有差异)。所以 Interleaving 通常用于快速筛选候选策略,最终确认效果还需要传统 A/B。

后续传统 A/B(每组 10 万用户,14 天)验证结果:

指标 效应量 p-value
搜索点击率 +5.2% p = 0.003
搜索成交率 +3.8% p = 0.01

传统 A/B 结果与 Interleaving 方向一致,但效应量略小(5.2% vs 7.9%),符合预期。

关键启示

  1. Interleaving 是最被低估的方法之一:在同场景下,所需样本量可以少一个数量级
  2. Interleaving 的局限:只适用于排序类问题(搜索、推荐),且两组结果必须高度重叠
  3. Interleaving A/B 的漏斗:Interleaving 用于快速筛选,传统 A/B 用于最终决策
  4. 效应量差异是正常的:Interleaving 的敏感度高,效应量通常略大于真实效果

案例六:双边市场

业务背景

某网约车平台测试"雨天高峰补贴"策略:在下雨 + 高峰期对司机提供额外的每单补贴(+5 元),以提高供给响应速度。实验在一个大型城市的 8 个区域中进行。

为什么不能用传统用户级 A/B

如果按乘客随机分组:

实验组乘客:看到更多可用车辆(因为司机被补贴吸引)
对照组乘客:可用的车辆减少(司机优先接实验组的单)

 对照组体验被人为"恶化"
 实验组的提升部分来自"抢了对照组的资源"
 策略的真实效果被高估

这叫做溢出效应(Spillover Effect)实验组的行为影响了对照组的结果。

实验设计

要素 配置
实验单元 地理区域(8 个区域中随机选择 4 个区域作为实验组)
对照组 4 个区域:正常计价(无额外补贴)
实验组 4 个区域:雨天高峰每单额外补贴 5 元
主指标 乘客平均等待时长、订单完成率
护栏指标 每单司机收入(不能大幅下降)、安全事故率
实验时长 30 天(覆盖足够的雨天数)
分析方法 集群随机化的 t 检验(自由度 = 区域数 - 2 = 6)

分析过程

集群级分析(每个区域是一个数据点):

区域 分组 平均等待时长(s) 订单完成率
A Control 245 82.3%
B Control 261 80.1%
C Control 238 83.5%
D Control 254 81.2%
E Treatment 187 88.7%
F Treatment 195 87.2%
G Treatment 203 86.9%
H Treatment 178 89.4%

集群级 t 检验(Welch):

指标 Control 均值 Treatment 均值 效应量 p-value
等待时长 249.5s 190.8s -58.7s (-23.5%) p = 0.008
订单完成率 81.8% 88.1% +6.3pp p = 0.015

为什么不用乘客级数据分析

如果用乘客级数据(忽略集群结构),p-value 会被严重低估:

分析方法 等待时长效应量 p-value
乘客级(错误,忽略集群) -58.7s p < 0.00001
集群级(正确) -58.7s p = 0.008

用错误的分析方法会得到极度膨胀的假阳性

经济学分析市场均衡推演

无补贴时:
  司机供给曲线 S
  乘客需求曲线 D
  均衡价格 P,均衡成交量 Q

有补贴时:
  司机供给曲线右移 S  S(更多司机愿意出车)
  乘客需求不变 D
  新均衡价格 P < P(乘客实际支付下降),Q > Q(成交量上升)

全量影响预估:
  如果全量上线,等待时长下降幅度可能略小于实验测量值
  因为当所有区域都有补贴时,司机不再有"被偏爱的区域"
  但仍会整体提高供给意愿

决策

最终决策:全量上线,但调整为每单补贴 3 元(原设计 5 元)。

理由:

  1. 策略效果显著,等待时长下降 23.5%,订单完成率提升 6.3pp
  2. 但实验期 5 元/单的 ROI 测算偏高司机可能会在不同区域之间套利(实验期间此效应有限)
  3. 全量上线调整为 3 元/单,既保留策略方向,又降低风险和成本
  4. 全量后与实验期效果对比(预期等待时长下降 15-18%),持续监控

关键启示

  1. 集群随机化的自由度成本:8 个集群只有 6 个自由度,大幅降低了统计功效
  2. 乘客级分析是错误的:无视集群结构会导致极端的假阳性膨胀
  3. 市场均衡视角:小范围实验的效果可能不等于全量效果
  4. 溢出效应的正面利用:理解了溢出效应后,可以更准确地预估全量效果

案例七:ToB 小样本

业务背景

某 B2B SaaS 公司计划重新设计注册引导流程,预期提升商户的注册完成率。问题:平台只有约 800 个活跃商户,新注册商户每月仅 200 家左右。传统的样本量计算方法给出的数字无法满足。

传统方法碰壁

Power Analysis:
   = 0.05,  = 0.20
  Baseline 注册完成率 = 40%
  MDE = 10pp(从 40%  50%)
   = 0.4  0.6 = 0.24

  n = 2  (1.96 + 0.84)  0.24 / 0.10
    = 2  7.84  0.24 / 0.01
    = 376 人/组

376 人/组  2 组 = 752 人

每月只新增 200 家  需要跑 3.8 个月才能达到样本量
 不现实

调整策略

策略 1:放宽 MDE

MDE 每组所需样本 所需时间
10pp 376 3.8 个月
15pp 167 1.7 个月
20pp 94 1 个月

决策:将 MDE 上调到 15pp。理由:B2B 业务中 15pp 的注册率提升已具有商业价值(月均新增 30 家商户 年化 360 家 按 LTV 计算年收入增量约 72 万)。

策略 2:使用 CUPED 降低方差

用商户注册前的"访问频率"和"功能浏览深度"作为协变量:

$$Y_{cuped} = Y_{注册完成} - \theta \cdot (X_{访问频率} - \mu_X)$$

CUPED 后方差降低约 35%( 0.6)。

$$n_{effective} = n_{original} \times (1 - \rho^2) = 167 \times 0.64 \approx 107$$

所需时间从 1.7 个月进一步缩短到 1.1 个月

策略 3:引入贝叶斯先验

利用上一轮注册流程优化实验的先验信息:

将先验整合到分析中:

先验: ~ Normal(0.08, 0.05)
实验数据:对照组 38/100,实验组 52/107
后验:P( > 0.10 | data) = 89.3%

实验设计(最终版)

要素 配置
对照组 当前注册流程
实验组 新注册引导流程
主指标 注册完成率
MDE 15pp
预计样本量 每组 110 家(CUPED 调整后)
预计时长 35 天
分析方法 贝叶斯 Beta-Binomial(含历史先验)

结果与决策

实验进行 35 天后:
  对照组:105 家注册尝试,42 家完成(40.0%)
  实验组:112 家注册尝试,55 家完成(49.1%)

  效应量:+9.1pp
  95% 贝叶斯可信区间:[+1.2pp, +17.0pp]
  P( > 0) = 98.7%
  P( > 5pp) = 85.4%

决策:上线新注册流程。

虽然效应量未达到 MDE(15pp),但:

  1. 贝叶斯后验概率 P( > 0) = 98.7% > 95%
  2. 效应量 +9.1pp 有实际商业价值(等于每月多 18 家商户)
  3. 策略无成本(仅是流程调整),无下行风险

关键启示

  1. MDE 是指导性的,不是判决性的:最终决策应结合贝叶斯后验概率和商业判断
  2. 小样本场景的工具组合:放宽 MDE + CUPED + 贝叶斯先验,三者叠加可以大幅降低所需样本量
  3. 贝叶斯方法的优势:在样本量有限时,先验信息能提供重要的辅助判断
  4. 不要因为样本量不够就放弃实验:即使做不到理想的 Power,有数据支撑的决策也远好于拍脑袋

案例八:"失败"实验的复盘

业务背景

某内容平台测试"阅读奖励"策略:用户每阅读 3 篇文章,获得小额积分奖励。预期能提升用户的阅读篇数和留存率。

实验设计

要素 配置
对照组 无阅读奖励
实验组 每阅读 3 篇文章奖励 5 积分
主指标 人均日均阅读篇数
护栏指标 次日留存、篇均阅读时长、每日积分消耗
样本量 每组 25 万用户
实验时长 14 天
分流比例 Control 50% / Treatment 50%

实验结果

指标 Control Treatment 效应量 p-value
人均日均阅读篇数 8.3 8.4 +0.1 (+1.2%) p = 0.34
次日留存 42.1% 42.0% -0.1pp p = 0.62
篇均阅读时长 85s 82s -3s (-3.5%) p = 0.08
每日积分消耗 0 5.2 积分 - -

整体结论:策略无效。

复盘框架:假设错了吗?

复盘维度 1:实验执行是否有问题?

检查项 结果
SRM 检验 通过
数据质量 正常
实验时长 足够(14 天)
用户是否真的获得了积分? 是(积分系统数据确认)
用户是否知道积分的存在? 问题发现:调研显示仅 32% 的实验组用户注意到积分奖励

核心发现:不是策略本身无效,而是策略的触达率太低大部分用户根本不知道有积分奖励。

复盘维度 2:假设的哪个环节错了?

原始假设链:

发放积分  用户感知到激励  用户增加阅读  留存提升
                                             

断裂点在第二步"用户感知到激励"没有被充分触发。积分发放是后台静默的,没有在用户阅读第 3 篇文章时弹出明显的奖励反馈。

复盘维度 3:实验设计本身的问题

  1. 缺少"激活"环节:策略假设用户会自发注意到积分累积,但实际需要主动的 UI 提示
  2. 激励太弱:5 积分/3 篇积分商城里一件商品需要 500 积分。需要读 300 篇才能兑换,激励-成本比过低
  3. 反馈延迟:积分在阅读后 24 小时才到账(技术原因),用户无法将"阅读行为"和"获得积分"建立因果关联

复盘结论

问题分类 具体问题 严重程度
策略设计 触达率过低(32%) 致命
策略设计 激励强度不足(需 300 篇才能兑换) 严重
技术实现 积分到账延迟 24 小时 严重
实验假设 原始假设链断裂在"感知"环节 需要修正

后续行动

  1. 修改策略:阅读满 3 篇时即时弹出奖励动画 + 积分立即到账
  2. 调整激励:降低兑换门槛(50 积分起兑)或增加大额奖励
  3. 重新实验:在新一组用户中验证修正后的策略

关键启示

  1. "策略无效"不等于"方向错了":首先检查策略是否真的被用户感知到了
  2. 复盘的标准框架:执行是否到位 假设链哪个环节断裂 实验设计是否有缺陷
  3. 假设链思维:每个实验都应该能画出"策略 中间变量 目标指标"的逻辑链,便于定位断裂点
  4. 定性与定量结合:实验数据说"无效",用户调研说"不知道有这个功能"两者结合才能找到真正原因
  5. "失败实验"的价值:这个实验虽然没有提升指标,但让我们明确了"即时反馈"和"激励强度"两个关键约束后续两轮迭代后的版本最终实现了 +8% 的阅读量提升

附录:案例复盘模板

## 实验复盘:{实验名称}

### 1. 实验原假设
因为 [观察],我们相信 [策略] 会带来 [预期效果]。

### 2. 实际结果
- 主指标:效应量 = ,p-value =
- 护栏指标:正常 / 异常

### 3. 执行诊断
- [ ] SRM 检验通过?
- [ ] 数据质量正常?
- [ ] 实验时长足够?
- [ ] 用户是否真的接触到了策略?
- [ ] 技术实现是否正确?

### 4. 假设链断点分析
策略  [中间变量 1]  [中间变量 2]  目标指标
  /       /            /          /

### 5. 根因分类
- [ ] 假设本身错误(策略方向有问题)
- [ ] 执行不到位(触达率/技术问题)
- [ ] 激励/干预强度不足
- [ ] 实验设计缺陷(样本量/时长/指标)

### 6. 经验沉淀
- 学到了什么:
- 如果重来会怎么做:
- 对后续实验的指导: