想象你是一家罐头厂的质检员,面前摆着两筐苹果。有人说:“左边这筐更新鲜。” 你的任务是通过品尝几个苹果来验证这个说法。问题来了:两个苹果够吗?尝到第几个才能确信差异是真的,而不是运气?如果只尝两个,一个酸一个甜,你根本无法下结论;尝一百个,准确了,但等你尝完,苹果都烂了。样本量计算就是帮你回答“该尝几个”的科学方法,而功效分析则是告诉你“这样尝,有多大把握能尝出真差异”。本篇文章将带你从质检员的视角出发,理解统计功效、效应量与样本量计算这三个实验设计的核心拼图,并落地到 A/B 测试的真实战场上。
对 AI 从业者而言,掌握样本量与功效分析,意味着你设计的每个实验都“心中有数”:开工前就能预判实验是否值得做、需要跑多久、结论是否可信,避免把宝贵的用户流量和时间浪费在注定无效的测试上。
可视化演示
展示统计功效如何随样本量增长、效应量大小的关系,以及第一类与第二类错误的权衡决策。
本节配有交互动效(进入视口后自动加载,约 3KB)。
功效曲线与样本量关系 大效应量:所需样本量少,功效快速达到0.8 中效应量:需要适中样本量,曲线平稳上升 小效应量:需要大量样本,功效增长缓慢 功效 = 1 - beta = P(拒绝H0|H1为真) 样本量越大功效越高但边际递减
统计功效概念
质检员小王面对两筐苹果,她拟定了抽查方案:随机挑 30 个苹果尝。但她心里打鼓:“如果右边那筐真的更甜,我这 30 个苹果的方案,到底能不能把这个差异尝出来?” 这种“方案查出真相的能力”在统计学中有一个响亮的名字——统计功效(Statistical Power)。功效不是玄学,而是一个可以计算、可以设定的硬指标,它决定了你的实验是“睁眼瞎”还是“火眼金睛”。
统计功效建立在假设检验的语境之上。实验前我们提出两个假设:原假设 $H_0$ 声称“两组没有差异”,备择假设 $H_1$ 声称“两组有差异”。判断过程可能犯两类错误:第一类错误是“冤枉好人”,两组明明没差异,你却宣称有差异,记为 $\alpha$;第二类错误是“放走坏人”,两组确实有差异,你却宣称没差异,记为 $\beta$。统计功效,正是“不放过坏人”的概率:
回到苹果场景:如果小王的抽查方案只有 0.3 的功效,意味着两筐苹果明明甜度不同,她有七成概率会给出“没区别”的错误结论,这样的实验做了等于白做。功效 0.8 是一道分水岭:低于它,实验结论像靠抛硬币;达到它,才算一份拿得出手的证据。
- $\text{Power}$(功效)实验设计期望达到的“侦查能力”指标。行业默认目标是 0.8,即真实效应存在时,有 80% 的把握检出差异。
- $\beta$(第二类错误率)漏检概率。它表示“有差异却没检出来”的可能性,与功效成反方向变化。
- $1 - \beta$(补事件)用 1 减去漏检率,剩下的就是“正确拒绝 $H_0$”的概率——也就是我们关心的功效本身。
效应量计算
小王现在知道自己的方案需要 0.8 的功效,但她很快发现一个更基本的问题:两筐苹果到底“差多少”?如果左边是甜橙味,右边是酸柠檬味,尝一个就能分辨;如果只是甜度差 0.1 个单位,可能要尝几百个才有把握。这个“差异的大小程度”,就是效应量(Effect Size)。统计学将它与数据的波动性放在一起比,得出了一个无量纲的标准化指标——Cohen's d。
效应量把“均值差”换算成“标准差的倍数”,公式如下:
其中 $\mu_1 - \mu_2$ 是两组均值之差,$\sigma$ 是总体的标准差(实践中用合并标准差 $s_{pooled}$ 估计)。
Cohens 的直觉标准是:$d=0.2$ 为小效应(苹果甜度几乎无法靠舌头分辨),$d=0.5$ 为中等效应(能尝出“这个更甜”,但不强烈),$d=0.8$ 为大效应(清爽的酸甜对比,一口便知)。在 A/B 测试中,点击率提升 0.5% 常被当作小效应,而教育干预使考试分数提升 0.5 个标准差则是中等效应。效应量不是冰冷的数学,而是你手里那颗苹果“差异的浓度”。
- 分子 $\mu_1 - \mu_2$两组均值的差,反映实际效应的大小。例如苹果甜度分数:第一组 7.0,第二组 7.4,分子就是 0.4。
- 分母 $\sigma$总体标准差,衡量组内个体的波动程度。苹果的甜度参差不齐,$\sigma$ 就大;高度一致,$\sigma$ 就小。
- 整体 $d$用一个统一的“标准差单位”来表达差异,排除了单位影响(甜度分、点击率、收入元都能比较)。
样本量公式
小王此刻手握三张牌:功效 0.8、显著性水平 $\alpha=0.05$、以及预估的效应量。她终于要回答最初那个问题——“到底该尝多少个苹果?” 统计学家帮她把答案直接写成了解析公式。对于两组均值比较实验,每组所需样本量 $n$ 为:
其中 $\delta = \mu_1 - \mu_2$ 是两组均值差,$\sigma^2$ 是组内方差,$Z$ 是对应分位点的标准正态临界值。
代入数值体验一下:设 $\sigma=1$、$\delta=0.4$、$\alpha=0.05$、功效 0.8,则每组约需 $2 \times (1.96+0.84)^2 / 0.16 \approx 98$ 个样本。如果把效应量降到 0.2,样本量会飙升到近 400——差异越微弱,需要的证据越多。这就是为什么成熟的实验团队从不拍脑袋定样本量,而是先用公式算清楚。
- 分子中的 $2\sigma^2$两组样本各自贡献一份方差,因此要乘以 2。苹果甜度本身波动越大,就需要更多样本抵消噪声。
- $Z_{1-\alpha/2}$由显著性水平决定的标准正态 Z 值。$\alpha=0.05$ 做双侧检验时,取 $Z_{0.975}=1.96$。它控制“冤枉好人”的概率。
- $Z_{1-\beta}$由目标功效决定的 Z 值。功效 0.8 时,$Z_{0.8}=0.84$。它控制“放走坏人”的概率。
- 分母 $\delta^2$真实效应量的平方。效应越大,分母越大,所需样本越小。苹果差异明显到尝一口就能分辨时,确实无需尝太多。
错误控制
把显著性水平定成多少,相当于给质检流程设定了“误杀红线”。小王如果规定“只要有一丝酸味嫌疑就判不合格”,那么 $\alpha$ 会很高,好苹果大量被冤枉;如果规定“必须铁证如山才能判定”,$\alpha$ 很低,但坏苹果也容易漏网。这就是 $\alpha$ 与 $\beta$ 之间的拉扯。统计学中,检验的严肃性由 $\alpha$ 把关,检测的灵敏度由 $1-\beta$ 守护。
另一个隐蔽但关键的决策是单侧与双侧检验。如果我们只关心“新方案是否更好”,用单侧检验,$\alpha$ 集中在尾巴一侧,$Z$ 临界值从 1.96 变为 1.645,样本量随之变小;如果我们只想证明“有差异,不论方向”,就用双侧检验,$\alpha$ 平分到左右两个尾巴。注意,单侧必须在实验开始前锁定,看到数据再改方向,相当于替自己开后门,会让第一类错误率膨胀。
- 原假设 $H_0$默认状态是“两组苹果无差异”。没有充分证据之前,不能推翻它。这是统计学的“无罪推定”。
- 备择假设 $H_1$我们希望证明的结论——“两组苹果确实有差异”。实验的目标就是收集证据来拒绝 $H_0$。
- 条件概率 $\alpha$ 与 $\beta$$\alpha$ 是在“无差异为真”的背景下判有差异的错误率;$\beta$ 是在“有差异为真”的背景下判无差异的错误率。二者一阴一阳,此消彼长。
参数权衡
小王算完样本量后犯难了:98 个苹果?车间一天的产量才 50 个,实验要跑两天,可批发商明天就来收货。“预算约束”逼着她重新审视四个参数——显著性 $\alpha$、功效 $1-\beta$、效应量 $d$、样本量 $n$——它们就像跷跷板的两端,压低一端必然抬高另一端。降低 $\alpha$ 会让 $n$ 变大;降低功效目标会让 $n$ 变小;效应量记得不准,整个计算都会偏。
遇到预算卡壳时有几条务实的退路:一是用前期数据或行业基准更精准地估计效应量,减少浪费;二是接受稍高的 $\alpha$(比如 0.1)换取可行性;三是把功效从 0.8 降到 0.7,明确告知利益相关方“检出能力打了个折扣”。还有一类更常见的场景——比例估计(如调查用户满意度),对应的样本量公式为:
其中 $p$ 是预估的总体比例,$E$ 是允许的误差范围(精度)。
这节的核心心法是:样本量的尽头不是精确的数学,而是资源的艺术。优秀实验设计者会像老练的采购员一样,在“科学严谨”与“成本可行”之间找到一个让各方都接受的平衡点。
- $p(1-p)$(比例方差项)衡量比例本身的不确定度。$p=0.5$ 时 $0.5 \times 0.5=0.25$ 达到最大;$p=0.9$ 时 $0.9 \times 0.1=0.09$ 小很多。
- $E$(允许误差)调查结果允许偏离真实值多少。比如“满意度估计误差不超过 ±3%”,$E=0.03$。要求越精细,$E$ 越小,样本量越大。
- 整体结构$Z_{1-\alpha/2}^2$ 是显著性要求的平方项,把置信度换算成倍数;它与 $p(1-p)$ 相乘后除以 $E^2$,即“精度越苛刻、方差越大 → 样本越多”。
A/B测试实战
让我们把质检场景搬进互联网。产品经理小林想验证“新版首页是否提升注册转化率”。他的苹果变成了用户流量,他的舌头变成了统计检验。按照学过的流程,他先确定核心指标——注册转化率从 3.0% 提升到 3.3%,这是 0.3% 的提升,折合效应量 $d \approx 0.1$ 的小效应;然后设定 $\alpha=0.05$、功效 $0.8$,代入公式算得每组需要约 1.6 万用户;最后他需要确认一个工程问题——实验要跑多少天?
流量分配与运行时长是 A/B 测试落地时绕不开的计算。设网站每日访问量为 $V$,实验流量占比为 $r$(例如 50% 用户进入实验),则每天每组能分到 $V \times r / 2$ 个用户,达到每组样本量 $n$ 所需的天数为:
林经理代入数字:$n=16000$、$V=100000$、$r=0.5$,得到 $T = 32000 / 50000 = 0.64$ 天。但别急着开香槟——这个数字建立在完美随机分流的理想假设上,真实世界还要考虑周末流量波动、新老用户差异、学习效应等因素。稳妥的做法是预留 20% 冗余时间,并在实验上线后第 3 天做一次"基线检查:两个组的流量是否均衡、指标是否异常。至此,从统计功效到效应量,从公式推演到流量预算,一条完整的实验设计链路就此打通。
- 分子 $2n$实验总共需要的用户数。每组 $n$ 个用户,对照组 + 实验组共 $2n$ 个。
- 分母 $V \cdot r$每天实际进入实验的用户总数。日活 10 万、实验占比 30%,则每天有 3 万用户被分流参与实验。
- 整体 $T$两者相除即是所需天数。特别提醒:如果算法工程师中途发现“新版本明显更差”想提前终止实验,必须用序贯检验等专门方法来控制错误率,否则反复窥看结果会令假阳性率大幅膨胀。
## AI应用场景 ### 产品A/B测试排期 - **AI流程阶段**:实验设计(Experiment Design)- **解决的问题**:以往产品经理常常"上线跑两周看结果",导致样本严重过剩或不足——样本过剩浪费流量红利,不足则结论不可靠。利用样本量计算,在改动上线前就能根据预估效应量算出最小样本量与运行天数,让每一次产品迭代都有明确的实验周期和统计底气。- **具体案例**:某内容 App 想验证"推荐算法 v2 是否提升人均时长"。历史数据显示人均时长均值 12 分钟、标准差 4 分钟,预期提升 3% 即 0.36 分钟,得效应量 $d=0.09$。设定 $\alpha=0.05$、功效 0.8,算得每组约需 7700 用户;按日活 50 万、50% 流量进入实验计算,$T \approx 0.06$ 天,但考虑新老用户分层,最终排期 3 天完成实验。- **相关职业角色**:数据科学家、算法工程师、增长产品经理 ### 临床试验患者入组规划 - **AI流程阶段**:研究方案设计(Study Planning)- **解决的问题**:临床研究招募患者成本极高、周期极长。若入组人数不够,可能等了一年却得到"无统计学差异"的无效结论;若入组过多,则浪费大量受试者暴露在试验风险中。功效分析在方案阶段就精准规划入组人数,同时保护受试者权益。- **具体案例**:某药物二期试验,对照安慰剂,预期血压下降幅度差为 8 mmHg,标准差 15 mmHg,即 $d=0.53$。在 $\alpha=0.05$、功效 0.8 下,算得每组 56 人,共需 112 名患者。申办方据此申请伦理审批、评估招募中心数量,将试验周期控制在 9 个月内。- **相关职业角色**:生物统计师、临床研究科学家、医学总监 ### 用户满意度调研 - **AI流程阶段**:数据采集(Sampling)- **解决的问题**:发问卷时"发得越多越放心"是常见误区。用比例估计样本量公式,可以在调研启动前确定最小回收量,兼顾成本与精度,避免无效的过度发放。- **具体案例**:某电商平台想调查"物流满意度比例",预估满意率为 85%,希望 95% 置信度、误差 ±2%。代入公式 $n = 1.96^2 \times 0.85 \times 0.15 / 0.02^2 \approx 1224$ 份问卷。因此在短信推送 1800 份(考虑 70% 答复率)即可达成目标,比"群发 1 万份"节约了 5 倍推送成本。- **相关职业角色**:用户研究工程师、数据分析师、市场调研专员
Python 演示
import mathimport numpy as npfrom scipy import stats def sample_size_mean(delta, sigma=1.0, alpha=0.05, power=0.8): z_alpha = stats.norm.ppf(1 - alpha / 2) z_beta = stats.norm.ppf(power) n = 2 * (z_alpha + z_beta) ** 2 * sigma ** 2 / delta ** 2 return math.ceil(n) def verify_power(n, delta, sigma=1.0, alpha=0.05, trials=2000): hits = 0 rng = np.random.default_rng(42) for _ in range(trials): ctrl = rng.normal(0, sigma, n) trt = rng.normal(delta, sigma, n) t_stat, p_val = stats.ttest_ind(ctrl, trt) if p_val < alpha: hits += 1 return hits / trials if __name__ == "__main__": d = 0.4 n = sample_size_mean(d) emp_power = verify_power(n, d) print(f"每组所需样本量: {n}") print(f"蒙特卡洛实测功效: {emp_power:.3f}")
z_alpha = stats.norm.ppf(1 - alpha / 2)把显著性水平 α=0.05 换算成 Z 临界值 1.96,对应公式中的 $Z_{1-\alpha/2}$。z_beta = stats.norm.ppf(power)把目标功效 0.8 换算成 Z 值 0.84,对应 $Z_{1-\beta}$。n = 2 * (z_alpha + z_beta) ** 2 * sigma ** 2 / delta ** 2原样套用两样本均值比较的样本量公式。rng.normal(delta, sigma, n)生成效应量为 delta 的实验组数据,模拟“真实存在差异”的世界。stats.ttest_ind(ctrl, trt)对两组数据做独立样本 t 检验,返回 p 值。if p_val < alpha: hits += 1计数“成功拒绝原假设”的次数,最终比例就是实测功效。
常见误区
误区反正样本越多越精确,预算允许就多拉点用户、多发点问卷,功效肯定没问题,多做无害。
正解样本量增大确实会提升功效,但边际收益递减:功效从 0.8 提到 0.9 所需的样本增量,可能比从 0.6 提到 0.8 还大。而且样品成本、流量机会成本和时间成本都在上升。科学的做法是“恰好达到目标功效的最小样本量”,而不是盲目堆量。
为何常见:人们习惯用“多多益善”解决不确定性问题,忽略了实验成本与统计收益之间的非线性关系。
误区p<0.05 说明实验有效,那 p 值越小不是代表功效越高吗?
正解p 值回答的是“假设没有效应,看到当前数据的概率”,它是在实验结束后衡量证据强度;功效回答的是“假设效应存在,实验能查出它的概率”,它是在实验开始前衡量检测能力。一个样本量极小的实验也可能 p<0.05,但它的功效可能只有 0.2——碰巧撞上的显著结果,可复现性极低。
为何常见:两都都涉及“概率”和“显著性”,初学者容易将“观察结果的小概率”与“方法的检出能力”混为一谈。
误区实验跑了一周,看数据已经显著了,直接停止发布,省时间;再过一周发现不显著,就继续跑。
正解样本量、显著性水平和功效是在实验前基于数学推导锁定的,中途反复“窥看”数据并决定停止/继续,等于在反复做多重检验,会让实际的第一类错误率 $\alpha$ 远高于名义的 0.05。正确做法是预先定好样本量和终止规则;如需提前停止,应使用序贯检验或 O'Brien-Fleming 边界等专门方法。
为何常见:互联网节奏快,运营希望尽快出结论,而“窥看”的统计代价是隐蔽的,短期内很难被察觉。
误区效应量才 0.1,这么小的差异,实验做了也没价值,放弃吧。
正解效应量的“大小”要与业务语境挂钩。A/B 测试中转化率从 3.0% 提到 3.3%,效应量只有约 0.1,但对一个年流水百亿的平台,0.3% 的提升意味着千万级收入。效应量小只是提示“需要更大的样本量才能可靠检出”,而非“不值得做”。
为何常见:固定套用 Cohen 的 0.2/0.5/0.8 经验标签,却忽略了这些标签最初是基于社会科学研究的粗糙约定,并不适用于所有高精度业务场景。
误区我们有全量用户日志,每天上亿数据,还计算什么样本量?直接全量上线看效果不就行了。
正解全量分析面临混杂因素(时间效应、人群迁移、运营干扰)的严重威胁,没有随机对照就分不清因果。即使数据量巨大,为了让两组用户在可比的条件下比较,依然需要设计实验并控制样本规模;在特定分层(如新用户、特定城市)下,样本量公式仍然指导着需要多少受试者才能得出可靠结论。
为何常见:混淆了“存量数据规模”与“实验随机对照”的关系,低估了非实验数据的偏差风险。
面试题
Q1. 统计功效最准确的含义是?
- A.检测出真实效应的概率← 正确答案
- B.出现显著结果的概率
- C.样本量占总体的比例
- D.效应量大小的度量值
答案:A。功效定义为 $1-\beta$,即真实效应存在时实验能正确检出它的概率。B 错在没区分“真效应”与“假阳性”;C 是抽样比,与功效无关;D 是效应量,描述差异大小。就好比质检员“查出真实差异的能力”才是功效。
Q2. 功效 Power 与第二类错误率 β 的关系是?
- A.Power 等于 β
- B.Power 等于 1/β
- C.Power 等于 1-β← 正确答案
- D.Power 等于 β/2
答案:C。第二类错误是漏检(有差异没查出),功效是不漏检的能力,二者是互补事件,所以 Power = 1 - β。质检员的“火眼金睛率”等于 100% 减去“漏网率”。
Q3. 效应量 d=0.5 通常被认为属于?
- A.极小效应
- B.小效应
- C.中等效应← 正确答案
- D.大效应
答案:C。Cohen 提出的经验标准是 d=0.2 小、0.5 中、0.8 大。0.5 相当于两组分布重叠约 67%,像“能尝出右边苹果更甜,但不强烈”的差异程度。
Q4. 其他条件不变,将显著性水平 α 从 0.05 降到 0.01,所需样本量会?
- A.样本量变小
- B.样本量不变
- C.样本量变大← 正确答案
- D.变化方向随机
答案:C。α 从 0.05 降到 0.01,$Z_{1-\alpha/2}$ 从 1.96 升到 2.576,公式分子增大,样本量相应变大。更严的“不冤枉好人”标准需要更多证据,就像质检员要更谨慎地判苹果不合格,就必须尝更多个。
Q5. 样本量公式中,当效应量 δ 增大时,所需样本量 n 会?
- A.样本量会增大
- B.样本量会减小← 正确答案
- C.样本量保持不变
- D.先增大后减小
答案:B。效应量 δ 在公式 $n = 2\sigma^2(Z_{\alpha/2}+Z_\beta)^2/\delta^2$ 的分母上且被平方,δ 越大 n 越小。苹果酸甜差异越明显,尝几个就能分辨,无需大量样本。
Q6. 计算两样本均值比较的样本量时,必须输入哪些参数?
- A.显著性水平 α← 正确答案
- B.统计功效 1-β← 正确答案
- C.均值差与标准差← 正确答案
- D.总体的用户总数
答案:ABC。公式的四要素是 α、功效、均值差 δ、标准差 σ,其中 C 可合并为效应量。D 总体总数通常不影响样本量(除非抽样比超过 5%),因为 t 检验的精度由每组样本量决定,而非总库规模。
Q7. “功效 = 0.8” 的正确解读是?
- A.实验结果正确概率 80%
- B.真实效应被检出的概率 80%← 正确答案
- C.犯第一类错误概率 20%
- D.实验具有 80% 置信度
答案:B。功效是“有差异时查出差异”的率;A 混淆了实验结论正确性与检出能力;C 的 20% 是 β 即漏检率;D 把功效应与置信区间混为一谈。小明用 0.8 功效的方案,意味着若新功能真的提升转化率,他有 80% 把握看到显著结果。
Q8. 关于样本量计算,下列说法正确的有?
- A.实验结束后再定样本量不可信← 正确答案
- B.样本量越大功效越高但边际递减← 正确答案
- C.效应量越小所需样本量越少
- D.单侧检验样本量通常少于双侧← 正确答案
答案:ABD。A 对,事后定样本量是典型的 p-hacking;B 对,功效随 n 单调上升但趋近 1 后收益骤减;C 错,效应量在分母,越小所需样本越大;D 对,单侧检验 Z 临界值(1.645)小于双侧(1.96),n 更小。
Q9. 实验中反复查看中间结果并提前决定停止,主要会导致?
- A.统计功效会更小
- B.第一类错误率膨胀← 正确答案
- C.第二类错误率减少
- D.所需样本量自动缩小
答案:B。每次窥看都相当于一次额外检验,多重比较使假阳性率远超名义 α。这就像质检员每尝一个苹果就下结论“合格/不合格”,反复多次后,冤枉好苹果的累计概率会大幅上升。功效不会因窥看自动改善,C、D 也无依据。
Q10. 在 α=0.05(双侧)、功效=0.8 条件下检测效应量 d=0.4,取 $Z_{0.975}=1.96$、$Z_{0.8}=0.84$,每组所需样本量最接近?
- A.每组约 49 人
- B.每组约 98 人← 正确答案
- C.每组约 196 人
- D.每组约 392 人
答案:B。代入 $n=2(1.96+0.84)^2/0.4^2=2\times7.84/0.16\approx98.0$。A 是忘了乘以 2;C 是把 Z 和拿成了 2.8 的平方再乘 2 却忘了除效应平方的两倍关系;D 是错误地按 d=0.2 估算。这题相当于“听完公式课后的动手小测验”,算出来的 98 正是可视化演示中功效达到 0.8 的位置。