资讯详情

资讯详情

样本量估算全解析:从公式推导到Python实战与避坑指南

样本量估算这件事几乎每个做过数据分析、实验设计或者AB测试的人都会碰到。我见过太多项目方案讨论得热火朝天最后卡在“那到底要多少样本”这个问题上然后拍脑袋定一个数字要么样本太少结论不可靠要么样本太多白白烧钱。这篇内容就是想把样本量估算这件事讲透从影响因素到计算公式再到几个典型场景的实操经验最后附上可以直接跑的Python代码。不管你是刚接触实验设计的新手还是已经做过多次测试的老手应该都能从中找到对自己有用的东西。1. 样本量估算到底在解决什么问题1.1 为什么不能“有多少用多少”很多人做分析时的默认思路是手头有多少数据就用多少。这个思路在描述性分析里没问题但一旦涉及到推断性结论——比如“新方案比旧方案好”“这个差异是真实的还是随机波动”——样本量就直接决定了你的结论能不能站住脚。举个直观的例子。假设你想验证一个新推荐策略是否比旧策略的点击率高。旧策略点击率大概是10%你希望新策略能提升到12%。如果你只拿200个用户做测试新策略那边100个人里就算真的多了2个点击这个差异完全可能是随机波动造成的。统计检验会告诉你p值大概在0.5左右根本不显著。但如果你用20000个用户同样的2个百分点差异就会变得非常显著。这就是样本量的核心作用它决定了你的实验有没有足够的“分辨力”去检测出你关心的效应。样本量不够真实存在的差异你也检测不出来样本量过大微小的、业务上毫无意义的差异也会被判定为“显著”浪费资源不说还可能让你做出错误的决策。1.2 样本量估算的四个核心输入不管用什么公式、什么工具样本量估算本质上就是在四个量之间做权衡效应量你希望检测到的最小差异是多少。比如点击率从10%提升到12%效应量就是2个百分点。效应量越小需要的样本量越大。显著性水平通常取0.05意思是当原假设为真时你错误地拒绝它的概率不超过5%。这个值越小需要的样本量越大。统计功效通常取0.8或0.9意思是当效应真实存在时你能正确检测到它的概率。功效越高需要的样本量越大。方差或变异程度数据的波动越大需要的样本量越大。对于比例类指标方差由比例本身决定对于连续类指标方差需要从历史数据或预实验中估计。这四个量里效应量是最需要业务判断的。统计工具可以帮你算但“多小的差异才值得我关注”这个问题只有你自己能回答。我见过不少团队在这里偷懒直接用一个默认的中等效应量结果算出来的样本量跟实际业务需求完全不匹配。1.3 样本量不足和过量的真实代价样本量不足的代价比较直观你做完实验发现结果不显著但你不确定是真的没效果还是样本不够。这时候你面临两个选择——要么硬着头皮上线承担风险要么重新做实验但时间窗口可能已经过了。更隐蔽的代价是样本量不足时如果你碰巧得到了一个显著结果这个结果很可能是假阳性因为低功效实验里显著结果的可信度本身就很低。样本量过量的代价则容易被忽视。多收集样本意味着多花时间、多花资源。如果一个实验本来两周就能得出结论你非要跑两个月那这两个月里你错过的其他实验机会就是实实在在的成本。而且在一些场景下比如医疗试验或高风险金融决策样本量过大还可能涉及伦理问题——让更多受试者暴露在可能不利的条件下。2. 影响样本量的因素拆解2.1 效应量最需要业务判断的输入效应量是样本量估算里最灵活也最关键的参数。它回答的问题是你希望检测到的最小差异是多少这个“最小差异”不是统计问题而是业务问题。以电商场景为例。假设你在优化结算页的转化率当前转化率是30%。你设计了一个新版本预期能提升到31%。这1个百分点的提升值不值得你花两周时间做实验如果结算页每天有10万访客1个百分点就是每天多1000个转化按客单价算可能是一笔可观的收入那这个效应量就值得检测。但如果你的页面每天只有500访客1个百分点就是每天多5个转化实验可能要跑几个月才能攒够样本这时候你可能需要重新考虑要么接受更大的效应量假设要么放弃这个实验。实际操作中我通常建议团队先算一笔账这个实验如果成功了带来的业务价值是多少然后反推需要多大的效应量才能让这个价值覆盖实验成本。这样算出来的效应量比拍脑袋定一个“提升5%”要靠谱得多。2.2 显著性水平与统计功效的取舍显著性水平α和统计功效1-β是一对需要权衡的参数。α控制的是假阳性率β控制的是假阴性率。在样本量固定的情况下降低α会提高β反之亦然。大多数场景下α取0.05是行业惯例不需要太多纠结。但在一些高风险场景比如药物临床试验α可能需要取0.01甚至更低因为假阳性的代价极高。功效通常取0.8意思是如果效应真实存在你有80%的概率能检测到它。如果实验成本很高或者你特别不想漏掉真实效应可以提高到0.9。这里有个经验法则功效从0.8提高到0.9样本量大约要增加30%左右。这个增幅在很多场景下是值得的尤其是当你只有一次实验机会的时候。2.3 方差估计连续指标和比例指标的区别对于比例类指标如点击率、转化率方差由比例本身决定p(1-p)。当p0.5时方差最大需要的样本量也最大。这也是为什么很多样本量计算器默认用0.5作为基准比例——它给出的是最保守的估计。对于连续类指标如客单价、停留时长方差需要从历史数据或预实验中估计。这里有个常见的坑很多人直接用历史数据的标准差但历史数据可能包含了季节性波动、促销活动等异常因素导致方差被高估。更稳妥的做法是用最近一段平稳期的数据或者做一个小规模的预实验来估计方差。另外如果指标分布严重偏斜比如收入数据用均值和标准差来估算样本量可能会失真。这时候可以考虑用对数变换后的数据或者改用非参数方法的样本量估算公式。2.4 实验设计对样本量的影响实验设计本身也会显著影响样本量需求。最简单的两组对比A/B测试需要的样本量相对较少。但如果你的实验涉及多个组比如A/B/C/D四种方案就需要考虑多重比较校正样本量会相应增加。配对设计比如同一用户先后体验两种方案通常比独立样本设计需要的样本量少因为配对设计消除了个体间的差异。但配对设计在实际操作中往往更难实施因为你需要确保每个用户都能完成两次体验。分层随机化比如按用户地域、设备类型分层可以在不增加总样本量的情况下提高实验的灵敏度因为分层减少了组间的方差。如果你的实验指标受某些强因素影响比如不同地区的用户行为差异很大分层是值得考虑的。3. 常用样本量计算公式与推导逻辑3.1 两组比例对比的样本量公式这是AB测试中最常用的场景比较两组用户的转化率是否有显著差异。公式如下对于双侧检验每组需要的样本量为n (Z_{α/2} Z_β)^2 × [p1(1-p1) p2(1-p2)] / (p1 - p2)^2其中p1和p2分别是两组的预期比例Z_{α/2}是显著性水平对应的标准正态分位数α0.05时约为1.96Z_β是功效对应的分位数功效0.8时约为0.84。这个公式的推导逻辑其实不复杂。分子部分(Z_{α/2} Z_β)^2反映了你对假阳性和假阴性的容忍度容忍度越低α和β越小这个值越大需要的样本量也越大。分母(p1-p2)^2是效应量的平方效应量越小分母越小样本量呈平方级增长。中间那部分[p1(1-p1) p2(1-p2)]是两组方差的和方差越大需要的样本量越大。我通常会在代码里把这个公式封装成一个函数输入p1、p2、α和功效直接输出每组需要的样本量。这样在实验设计阶段可以快速试算不同参数组合下的样本量需求。3.2 两组均值对比的样本量公式当指标是连续变量时比如客单价、使用时长公式会有所不同n 2 × (Z_{α/2} Z_β)^2 × σ^2 / Δ^2其中σ是标准差Δ是你希望检测的均值差异。这个公式假设两组方差相等。如果方差不相等需要用更复杂的公式或者取较大的那个方差来保守估计。这个公式里σ^2 / Δ^2就是效应量的倒数平方。效应量通常用Cohens d来表示d Δ / σ。d0.2算小效应0.5算中等0.8算大效应。在样本量估算时如果你不确定σ和Δ的具体值可以先设定一个预期的Cohens d然后反推需要的样本量。3.3 单组比例估计的样本量公式有时候你不需要做两组对比只是想估计一个总体的比例比如“某功能的用户使用率是多少”。这时候样本量公式是n Z_{α/2}^2 × p(1-p) / E^2其中E是你能接受的误差范围边际误差。这个公式在问卷调查和市场调研中非常常用。p通常取0.5因为这时候p(1-p)最大给出最保守的样本量估计。举个例子如果你希望估计用户使用率误差范围控制在±3%以内置信水平95%那么n 1.96^2 × 0.25 / 0.03^2 ≈ 1067。也就是说你需要至少1067个有效样本。3.4 公式背后的假设与适用边界这些公式都有一些共同假设样本是随机抽取的观测之间相互独立数据服从正态分布或者样本量足够大使得中心极限定理生效。在实际操作中这些假设或多或少会被违反。比如用户行为数据往往存在聚集效应——同一用户的多次行为不独立同一家庭或同一社群的用户行为也可能相关。这时候用标准公式算出来的样本量会偏小实际需要的样本量可能要大20%到50%。一个实用的修正方法是使用设计效应design effect来调整n_adj n × DEFF其中DEFF通常取1.2到1.5。另一个常见问题是多重比较。如果你同时检验多个指标或者做多组之间的两两比较假阳性率会膨胀。这时候需要用Bonferroni校正α除以比较次数或其他多重比较校正方法样本量会相应增加。4. 几个典型场景的实操经验4.1 互联网AB测试从日流量反推实验周期互联网AB测试的样本量估算有个特殊之处你通常不是先算样本量再决定实验时长而是先看日流量再算需要跑多少天。这个顺序反过来之后很多参数的选择会变得更实际。假设你在优化一个注册流程当前注册转化率是25%你希望检测到提升到27%的效应。α0.05功效0.8。用公式算一下p10.25, p20.27, p1-p20.02 p1(1-p1)0.1875, p2(1-p2)0.1971 (Z_{α/2}Z_β)^2 (1.960.84)^2 7.84 n 7.84 × (0.18750.1971) / 0.0004 ≈ 7538每组需要约7538个样本总共约15076个样本。如果你的页面每天有5000访客分流50%到实验组那实验组每天积累2500个样本需要7538/2500≈3天。但这里有个坑新用户注册行为在工作日和周末差异很大如果实验只跑3天可能刚好覆盖了一个工作日和一个周末但样本量在两组间的分布可能不均匀。我通常建议至少跑满一个完整的周周期7天即使样本量在第3天就攒够了多跑几天可以检验结果的稳定性。另一个经验是如果算出来的实验周期超过两周你需要重新审视效应量假设。两周是一个心理阈值超过这个时间实验的维护成本、外部环境变化的风险都会显著上升。这时候要么接受更大的效应量要么考虑用更灵敏的指标比如用点击率代替转化率因为点击率通常更高、方差更小。4.2 用户调研有限总体下的样本量修正用户调研场景和AB测试有个关键区别总体可能是有限的。比如你想调研某个功能在1000名活跃用户中的满意度如果按无限总体公式算出来需要1067个样本那显然不可能——你总共只有1000个用户。这时候需要用有限总体修正公式n_adj n / (1 (n-1)/N)其中N是总体大小。当N1000n1067时n_adj 1067 / (1 1066/1000) ≈ 517。也就是说你只需要约517个样本就够了。有限总体修正的效果在N较小时特别明显当N超过10万时修正效果基本可以忽略。调研场景还有一个容易被忽视的问题回收率。你发出1000份问卷可能只回收300份。如果按300份来算样本量误差范围会比你预期的大很多。正确的做法是先估算回收率然后反推需要发出多少份问卷。回收率通常取30%到50%具体取决于调研渠道和激励措施。4.3 医疗与生物实验为什么样本量要求更严格医疗和生物实验对样本量的要求比互联网实验严格得多原因主要有三个伦理约束、成本约束和监管要求。伦理约束方面你不能为了攒样本量而让患者长期暴露在可能无效或有害的治疗下。所以医疗实验通常采用序贯设计或自适应设计在实验过程中定期检查结果一旦发现显著效应就提前终止。这种设计对样本量估算的要求更高因为你需要预先设定好中期分析的时间点和对应的α消耗。成本约束方面医疗实验的单个样本成本可能高达数千甚至数万元样本量每增加一点总成本就大幅上升。所以医疗实验的样本量估算通常需要更精确的效应量估计往往要基于预实验或历史研究的数据。监管要求方面监管机构通常要求样本量估算有明确的依据和文档记录。你不能说“我们觉得500个够了”而要提供详细的参数来源、计算过程和敏感性分析。4.4 工业质检小样本场景下的替代思路工业质检场景往往面临小样本的困境一批产品可能只有几十个你不可能等攒够几百个样本再决定是否放行。这时候传统的样本量公式就不太适用了。替代思路有几个。一是使用序贯抽样先抽少量样本如果质量明显好或明显差就做出决策如果处于灰色地带再继续抽样。这种方法可以在保证决策质量的前提下显著减少平均样本量。二是使用贝叶斯方法结合历史批次的质量数据和当前批次的少量样本给出后验概率辅助决策。三是使用控制图通过监控过程稳定性来间接判断质量而不是依赖单批次的样本量。这些方法各有适用条件选择哪种取决于你对风险的容忍度、历史数据的可用性以及决策的时间压力。5. Python实现从公式到可复用的代码5.1 比例类指标的样本量计算函数先写一个通用的比例类样本量计算函数覆盖两组对比和单组估计两种场景。import numpy as np from scipy import stats def sample_size_proportion(p1, p2, alpha0.05, power0.8, ratio1.0): 计算两组比例对比所需的样本量 参数: p1: 对照组预期比例 p2: 实验组预期比例 alpha: 显著性水平 power: 统计功效 ratio: 实验组与对照组的样本量比例 返回: 对照组和实验组分别需要的样本量 z_alpha stats.norm.ppf(1 - alpha/2) z_beta stats.norm.ppf(power) p_bar (p1 ratio * p2) / (1 ratio) p_diff abs(p2 - p1) n1 ((z_alpha * np.sqrt((1 1/ratio) * p_bar * (1 - p_bar)) z_beta * np.sqrt(p1 * (1 - p1) p2 * (1 - p2) / ratio)) ** 2) / (p_diff ** 2) n1 np.ceil(n1) n2 np.ceil(n1 * ratio) return int(n1), int(n2) def sample_size_single_proportion(p, margin_error, alpha0.05, populationNone): 计算单组比例估计所需的样本量 参数: p: 预期比例 margin_error: 可接受的边际误差 alpha: 显著性水平 population: 总体大小可选用于有限总体修正 返回: 所需样本量 z_alpha stats.norm.ppf(1 - alpha/2) n (z_alpha ** 2) * p * (1 - p) / (margin_error ** 2) if population is not None: n n / (1 (n - 1) / population) return int(np.ceil(n))这两个函数可以直接用在大多数AB测试和调研场景中。sample_size_proportion里我用了更精确的公式考虑了两组比例不等的情况比简化版公式更准确。5.2 均值类指标的样本量计算函数均值类指标的计算稍微复杂一些因为需要估计标准差。def sample_size_mean(sigma, delta, alpha0.05, power0.8, ratio1.0): 计算两组均值对比所需的样本量 参数: sigma: 标准差假设两组方差相等 delta: 希望检测的均值差异 alpha: 显著性水平 power: 统计功效 ratio: 实验组与对照组的样本量比例 返回: 对照组和实验组分别需要的样本量 z_alpha stats.norm.ppf(1 - alpha/2) z_beta stats.norm.ppf(power) n1 ((z_alpha z_beta) ** 2) * (sigma ** 2) * (1 1/ratio) / (delta ** 2) n1 np.ceil(n1) n2 np.ceil(n1 * ratio) return int(n1), int(n2) def cohens_d(delta, sigma): 计算Cohens d效应量 return delta / sigma这里有个实用技巧如果你不确定sigma和delta的具体值可以先设定一个预期的Cohens d然后反推。比如你预期d0.3小到中等效应sigma1那delta就是0.3。这样算出来的样本量可以作为基准再根据实际情况调整。5.3 功效曲线与敏感性分析样本量估算不是算出一个数字就完了你还需要知道这个数字对参数变化的敏感程度。功效曲线可以帮你直观地看到不同样本量下的统计功效。def power_curve(p1, p2, n_range, alpha0.05): 计算不同样本量下的统计功效 参数: p1: 对照组比例 p2: 实验组比例 n_range: 样本量范围列表或数组 alpha: 显著性水平 返回: 对应的功效值列表 z_alpha stats.norm.ppf(1 - alpha/2) p_diff abs(p2 - p1) p_bar (p1 p2) / 2 powers [] for n in n_range: se np.sqrt(2 * p_bar * (1 - p_bar) / n) z_beta (p_diff / se) - z_alpha power stats.norm.cdf(z_beta) powers.append(power) return powers用这个函数可以画出功效曲线看看样本量从500增加到1000时功效提升了多少从1000增加到2000又提升了多少。通常你会发现功效的提升是非线性的——样本量翻倍功效可能只提升几个百分点。这能帮你判断多收集样本是否值得。5.4 完整案例一个AB测试的样本量估算全流程假设你在优化一个电商App的商品详情页当前加购率是8%你设计了一个新版本预期能提升到9.5%。你希望用α0.05功效0.8来做实验。App每天有20000访客你计划分流50%到实验组。# 第一步计算所需样本量 n_control, n_treatment sample_size_proportion( p10.08, p20.095, alpha0.05, power0.8 ) print(f对照组需要: {n_control}实验组需要: {n_treatment}) print(f总样本量: {n_control n_treatment}) # 第二步根据日流量计算实验周期 daily_traffic 20000 treatment_ratio 0.5 daily_treatment daily_traffic * treatment_ratio days_needed np.ceil(n_treatment / daily_treatment) print(f实验组每天积累: {daily_treatment} 样本) print(f需要实验天数: {days_needed}) # 第三步敏感性分析 for p2 in [0.09, 0.095, 0.10, 0.11]: n1, n2 sample_size_proportion(p10.08, p2p2) days np.ceil(n2 / daily_treatment) print(f如果实际提升到{p2:.1%}需要样本量{n2}实验{days}天)跑完这段代码你会得到类似这样的结果对照组需要约6800个样本实验组需要约6800个样本总共约13600个样本。实验组每天积累10000个样本所以理论上1天就够了。但这里有个问题1天的样本可能受星期几效应影响我通常会建议至少跑3到7天确保覆盖不同的用户行为模式。敏感性分析的结果会告诉你如果实际提升只有1个百分点到9%需要的样本量会大幅增加实验可能要跑更久。这个信息能帮你提前做好预案——如果实验跑了一周还没出显著结果是继续跑还是提前终止。6. 实操中容易踩的坑与应对策略6.1 用历史数据估计方差时的陷阱用历史数据估计方差是最常见的做法但历史数据里往往藏着一些陷阱。第一个陷阱是季节性如果你用去年双十一的数据来估计日常实验的方差方差会被严重高估导致样本量算得过大。第二个陷阱是趋势性如果业务在快速增长历史数据的方差可能不能代表未来。第三个陷阱是异常值一次促销活动或系统故障可能产生极端值把方差拉高。应对策略是用最近一段平稳期的数据剔除明显的异常值并且做多个时间窗口的方差估计取一个合理的范围而不是单一值。如果方差估计的不确定性很大可以在样本量计算时用较大的方差值留出安全边际。6.2 多重比较导致的样本量低估如果你在一个实验里同时检验多个指标或者做多组之间的两两比较假阳性率会膨胀。比如你检验5个指标每个都用α0.05那至少有一个指标出现假阳性的概率是1-(1-0.05)^5≈22.6%远高于5%。应对方法有两种。一是Bonferroni校正把α除以比较次数。比如检验5个指标每个指标的α设为0.05/50.01。但这样会让样本量增加不少。二是使用错误发现率FDR控制方法比如Benjamini-Hochberg方法它在控制假阳性的同时比Bonferroni更温和样本量增加幅度更小。实际操作中我通常建议区分主要指标和次要指标。主要指标用严格的α次要指标可以放宽但需要在实验前就明确哪些是主要指标避免事后挑选。6.3 样本量够了但结果不显著怎么办这是实验中最常见也最让人纠结的情况。样本量够了但p值就是大于0.05。这时候不要急着下“没效果”的结论先检查几个可能性。第一效应量是否比预期的小如果实际效应量只有预期的一半那按原效应量算出来的样本量就不够了。这时候可以算一下当前样本量能检测到的最小效应量是多少看看实际观测到的差异是否在这个范围内。第二指标是否有问题有时候指标的定义或埋点有问题导致测量误差很大把真实效应淹没了。检查一下指标的方差是否比预期的大很多。第三实验组和对照组是否真的随机如果分流不均匀或者实验期间有外部事件影响了一组结果就会失真。检查一下两组的基础特征是否平衡。如果以上都没问题那可能确实没有显著效应。这时候可以报告置信区间说明效应量的可能范围而不是简单地说“不显著”。6.4 序贯检验与提前终止的样本量调整很多团队希望在实验过程中定期查看结果一旦显著就提前终止。这个做法本身没问题但如果不做调整会大幅增加假阳性率。因为每次查看都是一次检验多次检验累积起来假阳性率会膨胀。正确的做法是使用序贯检验方法比如O‘Brien-Fleming边界或Alpha消耗函数。这些方法会预先设定好中期分析的时间点和对应的α水平确保整体假阳性率控制在预期范围内。Python的statsmodels库里有相关的实现可以计算序贯设计的边界和样本量调整。如果不想用复杂的序贯方法一个简单的替代方案是只在实验过半时做一次中期分析并且把这次分析的α设得很小比如0.001最终分析的α仍然用0.05。这样对整体假阳性率的影响可控。6.5 从样本量到实验周期的换算细节算出了样本量换算成实验周期时还有几个细节要注意。第一不是所有访客都会进入实验——有些可能被其他实验占用有些可能不满足实验条件。实际可用的日流量可能只有总流量的一部分。第二样本量指的是“有效样本”有些用户可能中途流失或数据不完整需要额外预留10%到20%的缓冲。第三实验周期最好是整数天并且覆盖完整的周周期避免星期几效应。我通常的做法是算出理论样本量后乘以1.2作为缓冲然后除以实际可用的日流量向上取整到最近的整数天再确保这个天数覆盖至少一个完整的周周期。如果算出来是5天我会跑7天如果是10天我会跑14天。7. 工具选型与自动化建议7.1 什么时候用现成工具什么时候自己写代码现成的样本量计算工具很多比如G*Power、PASS、以及各种在线计算器。这些工具适合快速试算和教学场景输入参数就能出结果不需要写代码。但在实际工作中我更倾向于自己写代码。原因有几个一是可复现性代码可以版本控制参数和结果都有记录二是可定制性现成工具往往只支持标准场景而实际实验可能有特殊设计比如分层随机化、整群抽样三是可集成性代码可以嵌入到实验平台里自动根据历史数据计算样本量减少人工操作。我的建议是学习和探索阶段用现成工具快速建立直觉实际项目用代码保证可复现和可定制。7.2 把样本量计算嵌入实验平台如果团队经常做实验把样本量计算嵌入实验平台是值得投入的。具体做法是在实验创建流程中加一个样本量计算步骤用户输入预期指标、最小效应量、α和功效平台自动从历史数据中估计方差输出所需样本量和建议实验周期。这个功能的关键在于历史数据的质量。如果历史数据不完整或噪声很大自动估计的方差可能不可靠。一个折中方案是平台提供方差估计的建议值但允许用户手动覆盖。同时记录每次实验的实际方差用于持续校准估计模型。7.3 样本量估算的文档化与评审样本量估算的结果应该文档化包括使用的公式、参数取值及依据、计算过程、敏感性分析结果。这份文档在实验评审时非常有用能帮助评审者判断实验设计是否合理。我见过一些团队在实验评审时只报一个样本量数字评审者无法判断这个数字是怎么来的。如果评审者觉得样本量太小实验可能被驳回如果觉得太大又可能被质疑浪费资源。有了完整的文档评审者可以看到参数选择的逻辑提出有针对性的意见而不是凭感觉判断。文档化还有一个好处实验结束后可以回顾样本量估算的准确性。如果实际方差比预估的大很多或者实际效应量比预估的小很多这些信息可以用于改进未来的估算。8. 一些个人经验和收尾建议样本量估算这件事我的核心体会是它既是科学也是艺术。科学的部分是公式和计算这部分只要参数对了结果就是确定的。艺术的部分是参数选择尤其是效应量的设定需要结合业务判断、历史经验和风险偏好。我自己的习惯是在实验设计阶段先和业务方对齐“多大的效应量值得关注”然后算出一个基准样本量。再做一个敏感性分析看看效应量上下浮动20%时样本量怎么变。如果样本量对效应量非常敏感那说明实验设计可能不够稳健需要考虑用更灵敏的指标或者更大的效应量假设。另一个经验是不要追求一次实验就得出完美结论。很多重要问题需要多轮实验逐步逼近。第一轮实验可以用较大的效应量假设快速验证方向如果方向对了第二轮再用更小的效应量假设精确估计效应大小。这样比一开始就追求高精度要高效得多。最后分享一个实用技巧在实验开始前用历史数据做一次“模拟实验”——随机抽取历史用户模拟分流和指标计算看看在预期样本量下功效曲线长什么样。这个模拟能帮你提前发现一些设计问题比如指标方差比预期大、分流不均匀等。跑一次模拟可能只需要几十分钟但能避免实验跑了一周才发现设计有问题的情况。
觉得有用,分享给同行:

为您的企业打造数字门面

稳重轻奢商务风格,端正雅致视觉,长效耐看不易过时。

立即咨询 →