想象你是奶茶店老板小美,研发了一款燕麦奶新配方。你想知道:顾客真的更喜欢新配方,还是只是你自我感觉良好?于是你做了个小实验——一半顾客喝旧配方,一半顾客喝新配方,然后记录他们的满意度和复购行为。但问题来了:就算新配方真的更好,你也不可能让所有顾客都喜欢;哪怕两个配方完全一样,随机抽到的顾客也可能让其中一组评分略高。你凭什么判定“这个差异是真的,不是碰巧”? 这就是 A/B 测试与统计显著性判断要回答的问题。在 LLM 运维场景里,我们每天都要做类似的判断:新模型比旧模型回答质量更高吗?换了个 prompt 模板,用户满意度真的提升了吗?如果仅仅因为某一周的指标涨了 2% 就宣布胜利,很可能是把随机波动误当成了真实提升。本文将带你用统计学这面“照妖镜”,学会在 LLM 评估中正确设计实验、计算显著性、避开陷阱,最终做出靠谱的上线决策——故事,就从这家小小的奶茶店开始。

岗位关联

对 AI 从业者而言,掌握 A/B 测试与统计显著性判断,意味着你能用数据而非直觉驱动模型迭代决策,避免把运气当实力、把噪声当信号——这是 LLM 工程化落地中区分专业与业余的核心能力之一。

目录
  1. 可视化演示
  2. 实验设计基础:把“碰运气”变成“做实验”
  3. 指标定义选择:用哪把尺子量“更好”
  4. 假设检验原理:先假设“没有差别”
  5. 显著性计算:把差异放到同一把尺子上
  6. 常见统计陷阱:奶茶店前辈的血泪教训
  7. 结果解读决策:显著了,然后呢?
  8. 评估流程建设:把实验变成习惯
  9. AI 应用场景
  10. Python 演示
  11. 常见误区
  12. 面试题

可视化演示

展示A/B实验用户随机分组、p值统计显著性检验与零假设分布,以及多重比较假阳性率膨胀与Bonferroni校正方法。

本节配有交互动效(进入视口后自动加载,约 3KB)。

A/B实验:用户随机分流至对照组与实验组 CTRL(A)=对照组使用旧版本 TEST(B)=实验组使用新版本 p=0.5随机分流,对比核心指标M_A vs M_B delta = M_B - M_A,检验是否显著

实验设计基础:把“碰运气”变成“做实验”

小美在市中心开了家奶茶店,研发了一款燕麦奶新配方。她想知道新配方是否真的更受欢迎,于是决定做一次“同店测试”:接下来两周,每天前 100 位顾客按进店顺序编号,偶数号尝新配方,奇数号尝老配方,打烊后统计两组的满意率和复购率。这个看似简单的设计,其实包含了 A/B 测试最基本的四个要素:随机分配、对照组、样本量和实验周期。

先看随机分配。如果小美让顾客自己选配方,喜欢尝鲜的年轻人会涌向新配方,偏好经典口味的老顾客留在老配方——两组人群在年龄、口味偏好上天然不同,哪怕配方完全一样,满意度也会出现差异。随机分配的价值,就是让两组在“人”的维度上尽量相似,从而把后续观察到的任何差异,都归因于“配方”本身,而不是“谁喝了它”。对照组则提供了“什么都不变时”的基准线,没有对照组,实验组数据就成了无锚点的孤岛。

有了随机分配和对照组,还需要回答“每组多少人”。样本太少,实验像用一把钝尺子量头发丝,新配方明明更好也测不出来;样本太多,实验周期拖长,浪费流量和机会成本。这时需要用样本量公式做好预算:

小美把公式代入后算出需要约 600 人,于是她决定把实验跑满两周而非三天——因为她知道,样本量不够时得出的“新配方更好”,很可能只是“这批顾客刚好偏爱燕麦奶”的偶然。在 LLM 评估中同理:新模型对比旧模型,至少要让每组积累到预设的对话样本量,再谈结论。

n=(Z1−α/2+Z1−β)2×2σ2δ2n = \frac{\left(Z_{1-\alpha/2} + Z_{1-\beta}\right)^2 \times 2\sigma^2}{\delta^2}
这个公式告诉你:为了让实验有足够“灵敏度”,每组至少需要多少样本。α 越小、功效要求越高、波动越大、想检测的差异越小,需要的样本就越多。
  1. Z_{1−α/2}(显著性水平对应的 Z 值)α 通常取 0.05,查标准正态分布表得 1.96,对应“愿意承担 5% 假阳性风险”,即允许把没差别误判为有差别的概率。
    Z1−α/2=1.96Z_{1-\alpha/2} = 1.96
  2. Z_{1−β}(检验功效对应的 Z 值)β 是假阴性风险,1−β 通常取 0.8,对应 Z 值约 0.84,代表“真实差异存在时有 80% 把握检测出来”。
    Z1−β≈0.84Z_{1-\beta} \approx 0.84
  3. 2σ²(两组合并的方差)σ 是指标的标准差,衡量数据本身的波动幅度。顾客评分忽高忽低(σ 大)时,需要更多样本才能看清真实差异。
    2σ22\sigma^2
  4. δ²(最小可检测效应的平方)δ 是你关心的最小差异,比如满意率提升 3%。δ 定得越小,实验越“精细”,所需样本量就越大。
    δ2\delta^2
  5. n(每组样本量)整个公式的输出——在给定上述参数后,每组至少需要的样本数。记住:这是“每组”的数量,而非两组合计。
    n=(Z1−α/2+Z1−β)2×2σ2δ2n = \frac{\left(Z_{1-\alpha/2} + Z_{1-\beta}\right)^2 \times 2\sigma^2}{\delta^2}

指标定义选择:用哪把尺子量“更好”

要判断新配方好不好,小美可以看“当场满意度评分”,也可以看“一个月内回头购买率”。当场评分容易受当天顾客心情影响,复购率更能反映真实喜爱,但要等一个月才有结果。不同尺子量出不同结论,这就是指标选择的重要性。

在统计实验里,指标分三类角色。核心指标是实验前预先指定的首要决策依据,通常只有一个,比如“四周内复购率”或 LLM 评估中的“任务完成率”。代理指标是能间接反映核心目标、但更易快速获取的度量,比如“首 token 延迟”——延迟越低用户越不耐烦,它与满意度相关但并非目标本身。护栏指标用来发现“副作用”:新配方满意度高了,但投诉率也飙升,这种实验不能上线;对应 LLM 场景就是“有害内容率”“PII 泄露次数”这类必须守住的底线。

指标选好后还要统一口径。“满意率”是指“评分 ≥ 4 星的对话数 ÷ 总对话数”,还是“评分 ≥ 4 星的用户数 ÷ 总用户数”?分子分母差一个字,结果可能天差地别。口径不预先锁定,实验结束后再挑对自己有利的算法,本质上就是在操纵结论。

小美最终把“四周内复购率”定为核心指标,“当场甜度评分”作为代理指标,“投诉率”作为护栏指标,并提前写清了复购率的计算口径——连续四周内再次购买的人数占初始购买人数的比例。这样一来,实验结束前没有人能“灵活解释”数据,结论才经得起推敲。

假设检验原理:先假设“没有差别”

小美把数据拿给学统计的朋友看,朋友说:我们不妨先假设“新旧配方没有差别”,然后看数据——如果在“没有差别”的世界里,观察到当前这么大差异的概率非常低,就说明这个假设很可能不成立,差异是真实的。这就是假设检验的“反证法”逻辑。

零假设(H₀)通常表述为“两组无差异”,对应 LLM 场景就是“新模型与旧模型的效果一样”。备择假设(H₁)是“确实存在差异”。我们不会直接证明 H₁ 为真,而是尝试用数据推翻 H₀——这种“先假设无辜”的思路,像极了法庭上的无罪推定:证据不足时,被告(新模型)不能被判有罪(不能宣布显著提升)。

要量化“证据有多强”,统计学定义了 P 值:

显著性水平 α 是预先划定的“惊讶阈值”,通常取 0.05:当 P < α 时,我们说“结果在统计上显著”,拒绝零假设;否则“不显著”,保留零假设。两类错误随之而来:第一类错误(假阳性)是把没差别说成有差别,犯错的概率就是 α;第二类错误(假阴性)是把有差别说成没差别,概率是 β。α 和 β 此消彼长,就像你要在“误伤无辜”和“放过真凶”之间做权衡——这正是前面样本量公式中同时出现 Z_{1−α/2} 与 Z_{1−β} 的原因。

小美恍然大悟:P 值是“巧合的程度”,而不是“新配方比旧配方好的概率”。朋友见她听得认真,又提醒了一句:“别忘了,P 值小于 0.05 只说明差异不像随机波动,它可没说差异有多大。”

P=P(T≥tobs∣H0)P = P\left(T \geq t_{\text{obs}} \mid H_0\right)
P 值的通俗含义:假设两组真的没有差别,单靠随机波动,看到当前这么大(或更极端)差异的概率。P 越小,说明“纯靠运气解释差异”越牵强。
  1. P(· | H₀)整个表达式是在“零假设成立”的虚拟世界里计算概率,竖线表示“在……条件之下”。
    P(⋅∣H0)P(\cdot \mid H_0)
  2. T ≥ t_obsT 是检验统计量(比如两组均值差标准化后的值),t_obs 是实验实际算出的观测值。这个事件代表“观测到与当前一样极端或更极端的差异”。
    T≥tobsT \geq t_{\text{obs}}
  3. P 值的意义如果零假设为真,随机波动产生如此极端结果的概率就是 P 值。P = 0.03 意味着:在“新旧配方没差别”的世界里,每 100 次类似实验,约有 3 次会碰巧出现这么大差异。
    P=P(T≥tobs∣H0)P = P\left(T \geq t_{\text{obs}} \mid H_0\right)

显著性计算:把差异放到同一把尺子上

两组顾客满意率分别是 62% 和 65%,相差 3%。这 3% 是大是小?取决于波动性。如果每组的评分像天气一样阴晴不定,3% 的差异可能就是噪声;如果评分非常稳定,3% 就可能是真实信号。统计学要做的事,就是把“差异的大小”和“波动的大小”放到同一把尺子上比较。

这把尺子就是 Z 统计量:分子是两组均值差,分母是两组均值差的标准误(波动刻度的度量)。公式如下:

在实际应用中,样本量不大或总体方差未知时,常用 T 检验替代 Z 检验——原理相同,只是用 t 分布替代正态分布,阈值略大于 1.96。LLM 评估中,scipy.stats.ttest_ind 一行即可完成计算。

除假设检验外,置信区间是更有信息量的工具:95% 置信区间是“重复抽样 100 次,约 95 次的区间会包含真实差异”。区间不包含 0,等价于 P < 0.05;而区间宽度还能告诉你估计的精度。最后,效应量(如 Cohen's d)回答“差异到底有多大”——P 值管“是否可信”,效应量管“值不值得关心”。

小美现在明白:3% 的差异在大样本下可以非常“显著”,但效应量可能很小,小到不值得为此更换配方。“显著”和“重要”,从来不是一回事。

Z=xˉA−xˉBσA2nA+σB2nBZ = \frac{\bar{x}_A - \bar{x}_B}{\sqrt{\dfrac{\sigma_A^2}{n_A} + \dfrac{\sigma_B^2}{n_B}}}
Z 值回答:“差异比随机波动大多少倍?” 当 |Z| > 1.96 时,对应 P < 0.05,两组差异达到统计显著。
  1. x̄_A − x̄_B(两组均值差)这是“信号”,比如实验组满意率 65% 减去对照组 62%,得到 3 个百分点。
    xˉA−xˉB\bar{x}_A - \bar{x}_B
  2. σ²_A / n_A(A 组均值的方差)样本均值本身也是随机的,样本量越大,均值估计越精确,这一项越小——这就是为什么样本量不足时检验“看不见”真实差异。
    σA2nA\frac{\sigma_A^2}{n_A}
  3. 分母(标准误)把两组均值估计的不确定性合并,得到“差异的波动刻度”。它刻画了:即使真实差异为 0,重复实验时均值差也会围绕 0 上下波动,波动范围就由它决定。
    σA2nA+σB2nB\sqrt{\frac{\sigma_A^2}{n_A} + \frac{\sigma_B^2}{n_B}}
  4. Z 值信号除以噪声。|Z| 越大,信号相对噪声越强。|Z| > 1.96 时 P < 0.05,这是“差异显著”的经典判据。
    Z=xˉA−xˉBσA2nA+σB2nBZ = \frac{\bar{x}_A - \bar{x}_B}{\sqrt{\dfrac{\sigma_A^2}{n_A} + \dfrac{\sigma_B^2}{n_B}}}

常见统计陷阱:奶茶店前辈的血泪教训

小美在社群分享实验结果,一位开过三家店的前辈提醒她:你盯着 20 个指标看,每个都有 5% 的概率“假显著”,20 个里面至少冒出一个显著的概率超过 64%——你以为挖到了金矿,其实是随机噪声在刷存在感。这就是 LLM 评估中最常见的陷阱。

多重比较:比较的指标或分组越多,纯靠随机得到显著结果的概率越大。如果你同时看“回答质量、延迟、点赞率、转人工率、PII 泄露、幻觉率……”20 个指标,其中某个指标 P < 0.05 根本不足为奇。对策:预先指定唯一核心指标;若必须看多个指标,用 Bonferroni 校正(把显著性阈值除以比较次数,比如 20 个指标时阈值降为 0.05/20 = 0.0025)。

选择性偏倚:实验结束后只挑显著的结果汇报,把不显著的指标悄悄藏起来。这种“先打靶后画圈”的做法,让结论带上强烈的自我安慰色彩。对策:像小美一样,实验启动前就写好分析计划,锁死核心指标和判定规则。

提前停止:实验没到预定样本量就每天盯 P 值,一旦 < 0.05 就欢呼下线。频繁查看会大幅膨胀第一类错误——因为“总有一次会碰巧显著”。有模拟研究表明,中途多次查看会让实际假阳性率从 5% 飙升到 20% 以上。对策:样本量和截止时间提前定死,实验期间不看 P 值。

幸存者偏差:只看到成功上线的实验,看不到因失败未归档的实验。如果团队只汇报“提升显著的 3 个实验”,而忽略了另外 7 个“没有显著提升”的实验,管理者会严重高估新方案的成功率。对策:建立实验登记制度,成功失败一律归档,定期复盘“失败实验”。

前辈最后说:“统计陷阱不可怕,可怕的是你相信自己不会掉进去。”小美把这条经验写进了门店手册:核心指标只有一个,样本量提前算好,实验期间不看 P 值,实验结束一次性分析。

结果解读决策:显著了,然后呢?

假设实验结果显示新配方满意度显著提升 1%,但新配方成本比老配方高 30%。小美该上新吗?统计判断只是第一步,业务决策才是终点。这个场景在 LLM 评估中每天都在发生:新模型在离线测试中 P 值显著,但推理成本翻倍、延迟增加 200 毫秒——上不上?

首先要区分统计显著与实际显著。P < 0.05 只说明差异“不太可能是偶然”,不说明差异“有商业价值”。一个由几万样本测出的 0.1% 提升,在统计上可能显著,在业务上却毫无意义。实际显著性要看效应量和置信区间下限:如果 95% 置信区间是 [+0.1%, +0.3%],那最优情况下也只提升 0.3%,不值得为此承担成本风险。

其次是业务可行性:新增成本、运维复杂度、用户体验的长期影响、以及“护栏指标有没有悄悄变差”。LLM 场景中尤其要算清楚账——更强的模型往往更贵、更慢;如果用户感知不到质量差异,那这个模型升级就是负收益。

综合起来是一个决策框架:第一关,统计显著(可信度达标);第二关,效应量足够(提升值得在意);第三关,业务成本可接受(资源与风险可控);第四关,护栏指标无恶化(没有牺牲安全与体验)。四关都过才上线。

小美算了一笔账:1% 的复购提升带来的毛利增长,覆盖不了燕麦奶原料上涨的成本,于是她选择不全面替换老配方,而是把新配方作为“限定款”小范围售卖,用真实市场反应继续积累数据——这本身就是新一轮实验的开始。

评估流程建设:把实验变成习惯

经历了这次实验,小美学到一个道理:单次实验可以靠运气,长期可靠的结论需要制度。她开始把实验方法固化成门店的标准流程——这正是一个成熟的 LLM 运维团队要做的事。

实验平台是基础设施。在 LLM 运维中,平台需要支持按请求粒度随机分流:比如将 10% 的线上对话请求标记为实验组,余下 90% 为对照组,同时保证同一个用户在不同会话中可能进入不同组别也完全合理。平台还要记录每个请求的实验标识、模型版本号、prompt 版本号,方便事后追溯——没有实验标识的数据,再好看也无法归因。

监控告警保障实验不失控。实验期间的护栏指标(有害内容率、PII 泄露、服务错误率)要实时监控,一旦超阈值立即熔断,宁可牺牲实验也要保护用户体验。这就像奶茶店如果发现新配方导致投诉暴增,必须先停售,而不是“等实验跑完再说”。

复盘机制沉淀团队经验。每次实验结束后输出标准报告:假设是什么、样本量多少、P 值若干、效应量多大、结论如何、后续 Action 是什么。重要的是,无论成功失败都要归档——失败实验的复盘往往比成功实验更有价值。

持续迭代是最终目标。A/B 测试不是一次性工作,而是“实验 → 分析 → 决策 → 上线 → 再实验”的持续循环。第二家奶茶店开业时,小美已经把“先实验、后上线”印成了门店手册——她知道,制度和统计直觉,才是她这家小公司真正的护城河。

AI 应用场景

LLM 版本升级评估

阶段:模型评估与迭代决策

解决的问题:每次升级 LLM 版本时,仅凭离线评测指标决定上线,很容易在真实流量下“翻车”(真实用户请求分布与评测集差异大)。传统做法是人工抽检几十条样本,既慢又不可靠。A/B 测试把新老模型同时暴露在真实流量下,用统计显著性判断新模型是否真的更好,让“升级”这个决定有数据背书。

具体案例:某智能客服团队将 10% 的线上流量切到新模型版本,对照组与实验组各 5%,以“问题解决率”为核心指标,以“转人工率”和“PII 泄露次数”为护栏指标,运行 14 天后对两组数据做双样本 t 检验。结果显示 P = 0.031,差异显著,但效应量只有 0.12,且推理成本增加 40%,最终团队决定暂缓全量上线,先优化成本再迭代。

Prompt 模板优化验证

阶段:Prompt 迭代验证

解决的问题:Prompt 模板的微小改动可能带来质量波动,人工评估成本高、主观性强。通过 A/B 分流对比两个 Prompt 模板的真实用户反馈,用统计方法判断新模板是否稳定提升效果,避免“昨天试了一下感觉不错”式的拍脑袋决策。

具体案例:某电商导购助手团队对两个客服 Prompt 模板做 50/50 分流,核心指标是“用户点赞率”,护栏指标是“会话放弃率”。实验前用样本量公式算出每组至少需要 8000 次会话,于是设定 7 天实验周期。最终新模板点赞率提升 2.1%,P = 0.008 显著,但护栏指标“会话放弃率”也上升了 1.5%,团队据此发现新模板回复太长,优化后二次实验通过。

Python 演示

python36 行
import numpy as npfrom scipy import stats def simulate_llm_ab_test(visits_per_day=500, days=14,                         old_success=0.62, lift=0.03):    """模拟 LLM 应用两个版本的用户满意率 A/B 实验。     每天两组各接收 visits_per_day 次会话请求,    old_success 是旧模型满意率,lift 是新模型相对旧模型的提升。    """    np.random.seed(42)    old_scores, new_scores = [], []    for _ in range(days):        old_scores.extend(            np.random.binomial(1, old_success, visits_per_day))        new_scores.extend(            np.random.binomial(1, old_success + lift, visits_per_day))    return np.array(old_scores), np.array(new_scores) def analyze_and_decide(old, new, alpha=0.05):    """计算统计显著性并给出上线建议。"""    t_stat, p_value = stats.ttest_ind(new, old)    old_rate, new_rate = old.mean(), new.mean()    diff = new_rate - old_rate    print(f"旧版本满意率: {old_rate:.3f} ({len(old)} 个样本)")    print(f"新版本满意率: {new_rate:.3f} ({len(new)} 个样本)")    print(f"提升幅度: {diff:+.3f}")    print(f"t 统计量: {t_stat:.3f}, P 值: {p_value:.4f}")    if p_value < alpha:        print(f"结论: P 值 {p_value:.4f} < {alpha},差异显著,可考虑上线")    else:        print(f"结论: P 值 {p_value:.4f} >= {alpha},差异不显著,继续实验") if __name__ == "__main__":    old, new = simulate_llm_ab_test()    analyze_and_decide(old, new)
目的:模拟一次完整的 LLM A/B 测试——生成两组用户满意率数据,用独立样本 t 检验计算 P 值,并按 α=0.05 给出是否上线建议。
  1. np.random.binomial(1, old_success, visits_per_day)模拟每个用户的“成功/失败”结果(1 表示满意),这是实验中最基本的伯努利试验。
  2. old_scores.extend(...)把每天的模拟结果累积成完整样本,对应真实场景中“实验期间持续采集数据”。
  3. stats.ttest_ind(new, old)对两组做独立样本 t 检验,返回 t 统计量和 P 值;这是显著性判断的核心一步。
  4. p_value < alpha将 P 值与预先设定的显著性水平 α 比较,决定是否拒绝零假设(新模型无提升)。

常见误区

误区这次实验 P 值只有 0.001,说明新模型效果提升大得惊人!P 值越小越兴奋,在汇报里把它当作“效果强度”的证据。

正解P 值衡量的是“证据的可信度”,不是“效果的大小”。P = 0.001 只说明差异不太可能是随机波动,但差异本身可能只有 0.1%。想知道效果有多大,要看效应量(如 Cohen's d)或置信区间。大样本下,微小到没有业务意义的差异也能得到极小的 P 值。

为何常见:人们习惯把“更小”和“更强”直接挂钩,而且小 P 值带来的成就感会强化这个误解——“显著”这个译名本身也有误导性。

误区实验跑完,P = 0.06,结论是“新模型和老模型完全一样”,于是放弃新方案。把“不显著”直接等同于“没差别”。

正解P 值大于 0.05 只说明“数据不足以拒绝零假设”,并不等于“证明零假设为真”。可能的原因包括:样本量不足(功效太低)、指标波动太大、真实差异确实微小但存在。这就像法庭“证据不足”不等于“被告无罪”,只能叫“未证实有罪”。

为何常见:显著性检验的“二元判决”思维让人容易忽略“证据不足”这种中间状态,而把“不显著”错误翻译成“没有用”。

误区新模型在 20 个评估指标中有 1 个 P < 0.05,于是兴奋地宣布“新模型全面超越旧模型”,四处汇报。

正解这是教科书级的“多重比较”错误。每个指标犯假阳性(其实没差别却显示显著)的概率是 5%,20 个独立比较中至少出现一个显著结果的概率约 1 − (0.95)²⁰ ≈ 64%。也就是说,光靠随机波动就有六成把握“钓到”一个虚假显著。正确做法是预先指定唯一核心指标,或对多个比较做 Bonferroni 校正(阈值除以比较次数)。

为何常见:人天生倾向于寻找支持自己观点的证据,20 个指标里总能找到一个“顺眼”的;加上汇报文化鼓励“报喜不报忧”,这个陷阱格外常见。

误区听到“样本量要足够大”,就定下“每组 1000”,不管指标是什么、差异预期是多少。实验结束发现不显著,还怪“样本已经够多了”。

正解所需样本量取决于三个因素:指标的固有波动(σ)、你想检测的最小差异(δ)、以及设定的 α 与功效(1−β)。指标越稳、想检测的差异越大,所需样本越少;反之可能需要数万甚至数十万样本。1000 个样本在“点赞率”这样的低波动指标上可能够了,在“复购金额”这种高波动指标上远远不够。

为何常见:网上流传的各种“经验法则”以讹传讹,让人们绕过了样本量公式,凭感觉定人数。真实流量场景中,样本量不达标是“不显著结果”最常见的隐性原因。

误区P = 0.01,效果为正向,立即通知全量发布。结果上线后推理成本暴涨、用户体验反而下降。

正解统计显著只解决“差异可信吗”的问题,不解决“差异值得吗”的问题。上线决策至少还要过三关:效应量是否足够大(实际显著)、业务成本是否可接受(算经济账)、护栏指标有没有恶化(没牺牲安全与体验)。四关全过才发布,这是小美在奶茶店学到的教训,也是 LLM 工程化落地的基本素养。

为何常见:把“统计显著”和“业务成功”画等号,本质上是把决策责任外包给了 P 值——这也是为什么统计工具越强大,越需要清醒的业务判断护航。

面试题

Q1. A/B 测试中“对照组”的核心作用是什么?

单选题 · easy

  • A.提供基准以对比实验组效果← 正确答案
  • B.扩大样本量提升检验功效
  • C.用于训练模型的超参数
  • D.替代实验组完成统计分析

答案:A。对照组是“什么都不变”的基准线。没有对照组,实验组的数据就失去了比较锚点,无法判断改善来自模型本身还是来自环境变化。选项 B 是实验设计的附带好处而非核心作用;C、D 明显错误。

Q2. 某 A/B 实验得到 P=0.03(α=0.05),正确解读是?

单选题 · mid

  • A.实验组比对照组好 3%
  • B.零假设为真概率为 3%
  • C.差异具有统计显著性← 正确答案
  • D.实验流程出错率 3%

答案:C。P=0.03 < 0.05,说明在零假设(两组无差异)成立的条件下,观测到当前差异的概率仅 3%,数据与零假设不一致,因此拒绝零假设,差异统计显著。P 值不是“零假设为真的概率”,也不是“效果大小”或“出错率”——这就像小美看到的“巧合程度”,而不是“配方更好的概率”。

Q3. 以下哪些属于 A/B 测试常见统计陷阱?

多选题 · mid

  • A.观察 20 个指标取显著者← 正确答案
  • B.频繁查看 P 值提前停止← 正确答案
  • C.只报告成功实验忽略失败← 正确答案
  • D.预先注册核心指标与样本量

答案:ABC。A 是多重比较问题(比较越多假阳性越容易);B 是提前停止问题(多次查看膨胀第一类错误);C 是幸存者偏差(只报成功会高估成功率)。D 恰恰是避免陷阱的正确做法——预先注册实验方案,就像小美在开店前写好实验手册。

Q4. 缓解多重比较问题最稳妥的做法是?

单选题 · mid

  • A.提高显著性水平到 0.1
  • B.删除所有不显著指标
  • C.预先指定核心指标并校正← 正确答案
  • D.增加实验组数量到 4 个

答案:C。最稳妥的做法是实验前就指定唯一核心指标;若必须看多个指标,则使用 Bonferroni 等校正方法降低单次检验的阈值。提高 α 会加重假阳性;删除不显著指标是“事后挑选”,属于选择性偏倚;增加实验组数量只会让多重比较问题更严重。

Q5. 估算样本量时不需要哪个参数?

单选题 · easy

  • A.预期效应量大小
  • B.显著性水平 α
  • C.期望检验功效
  • D.用户画像标签体系← 正确答案

答案:D。样本量公式 n = (Z_{1−α/2} + Z_{1−β})² × 2σ² / δ² 中,需要效应量 δ、显著性水平 α、功效 1−β,以及指标波动 σ。用户画像标签体系与样本量计算无关——样本量只取决于统计参数和数据本身的波动性。

Q6. 关于 P 值与效应量,下列说法正确的是?

多选题 · hard

  • A.大样本下微小差异也能显著← 正确答案
  • B.P 值小不代表效应量大← 正确答案
  • C.效应量便于跨实验比较← 正确答案
  • D.P 值越大效应量越大

答案:ABC。样本量极大时,标准误趋近于 0,哪怕是 0.1% 的差异也能得到 P < 0.05,所以 A 正确;P 值衡量证据强度,效应量衡量差异大小,两者独立,B 正确;效应量是标准化度量(如 Cohen's d),可跨实验比较,C 正确。D 恰恰相反——P 值与效应量没有单调关系。

Q7. 关于 95% 置信区间,正确理解是?

单选题 · mid

  • A.真值有 95% 概率在区间内
  • B.重复抽样约 95% 区间含真值← 正确答案
  • C.实验组 95% 概率优于对照组
  • D.P 值小于 0.05 的区间是 95%

答案:B。频率学派的正确解读是:若反复抽样并每次构造 95% 置信区间,约 95% 的区间会包含真实参数。真值本身不是随机变量(它是固定的),所以不能说“真值有 95% 概率落在区间内”。区间不包含 0 等价于 P<0.05,但这是判断“是否显著”而非“概率大小”。

Q8. 实验第 3 天看到 P=0.04 就提前结束并宣布成功,主要问题是什么?

单选题 · hard

  • A.没有计算效应量和置信区间
  • B.违反随机分配的基本原则
  • C.多次查看导致第一类错误膨胀← 正确答案
  • D.实验数据不足以计算 P 值

答案:C。提前停止的核心问题在于:实验者通常不会只看一次 P 值,而是每天都在看,直到某次 P<0.05 才停。这种“边看边停”的 Sequential Testing 会大幅膨胀第一类错误——就像反复掷硬币直到出现连续正面就宣布“硬币有偏”,假阳性率远超 5%。正确做法是预定样本量和截止时间,中途不看 P 值。

Q9. 设计 LLM A/B 实验时,下列哪些是合理做法?

多选题 · mid

  • A.预先明确核心与护栏指标← 正确答案
  • B.对请求做用户级随机分流← 正确答案
  • C.实验后挑选显著指标汇报
  • D.设定最小样本和截止时间← 正确答案

答案:ABD。预先明确核心指标和护栏指标是避免多重比较与选择性偏倚的关键;对请求做随机分流保证对照组与实验组可比;设定最小样本和截止时间防止提前停止带来的假阳性膨胀。C 是典型的“先打靶后画圈”,属于选择性偏倚,应严格禁止。

Q10. “统计显著但业务收益很小”时,正确做法是?

单选题 · easy

  • A.直接判定实验失败放弃
  • B.结合效应量与成本决策← 正确答案
  • C.增加样本量直到不显著
  • D.提高显著性水平再检验

答案:B。统计显著只说明差异可信,是否上线还要看效应量大小、业务成本、护栏指标。如果收益 0.1% 而成本增加 40%,哪怕 P=0.001 也不该上线;反之若成本可忽略,即便收益小也值得发布。增加样本量或调高 α 都是在操纵结论,不是理性决策。