AB测试最小样本量需用statsmodels计算,先用proportion_effectsize将转化率差转为Cohen’s d,再用TTestIndPower.solve_power求解;α建议0.01、功效0.8或0.9,避免假阳性和假阴性。

AB测试前必须算清的最小样本量怎么求
不估算样本量就开AB测试,大概率得出错误结论——要么没效果却说有效(假阳性),要么有真实差异却检测不出(假阴性)。Python里最直接的方式是用 statsmodels.stats.power.TTestIndPower,它基于效应量(Cohen’s d)、显著性水平(α)和统计功效(1−β)反推所需每组样本数。
关键点在于:效应量不能拍脑袋定。如果你的历史转化率是5%,你希望检测出“提升到5.5%”的变化,得先换算成Cohen’s d——用 statsmodels.stats.proportion.proportion_effectsize 转换,别直接套用均值场景的公式。
- α 通常取 0.05,但若AB测试要上生产,建议收紧到 0.01(降低误报风险)
- 功效推荐 0.8,但小业务或高成本实验可设为 0.9
- 注意:
effect_size是标准化后的值,不是原始百分比差;用proportion_effectsize(0.05, 0.055)得到约 0.072,不是 0.005 - 调用
solve_power时,传入三个参数,留一个为None(比如nobs = None),它自动解出所需样本量
两独立样本t检验怎么做才不踩p值陷阱
用 scipy.stats.ttest_ind 做检验本身很简单,但结果可信的前提是数据满足独立、近正态、方差齐性。AB测试中,指标如点击率、转化率本质是二项分布,大样本下可用t检验近似,但小样本或极端比例(如scipy.stats.chi2_contingency 或精确检验 scipy.stats.fisher_exact。
创建 Flask + Vue.js 全栈项目,采用单端口架构、uv 依赖管理、结构化日志和生产级前端设计。当用户要求以下操作时触发:创建新的 Flask+Vue 项目、搭建 Web 应用、构建全栈 Python+Vue 应用、初始化 Flask Web 项目、设置单端口 Flask 前后端项目。触发词:新建项目、创建项目、搭建项目、Flask项目、Vue项目。
- 默认
ttest_ind假设方差相等(equal_var=True),但AB两组用户量不同时,建议显式设equal_var=False启用Welch’s t-test,更稳健 - 不要只看 p cohens_d)和置信区间——哪怕p=0.04,若95% CI是 [−0.001, 0.002],实际业务意义几乎为零
- 原始数据别用均值+标准差汇总后喂给
ttest_ind;它需要原始观测值(如每个用户的是否转化:0/1),否则自由度和标准误全错
如何一次性完成“估算→抽样→检验”闭环(避免手动拼接)
把样本量估算、随机分组、检验逻辑写成函数,能防止每次AB测试都重复查文档、手算、复制粘贴。核心是封装三件事:按目标效应量算 n_per_group、用 numpy.random.choice 或 sklearn.model_selection.train_test_split 实现可复现分组、最后调用检验并返回结构化结果字典。
立即学习“Python免费学习笔记(深入)”;
- 分组必须设
random_state,否则无法复现;线上分流系统若已存在,本地模拟时要用相同哈希逻辑(比如用hashlib.md5(user_id.encode()).hexdigest()[:8]) - 检验结果别只打印p值;返回包含
statistic、pvalue、effect_size、ci_lower、ci_upper的字典,方便后续存入数据库或画图 - 如果指标是人均时长这类连续变量,且明显右偏(如大量0值+少量长尾),考虑先做对数变换再t检验,或直接上非参的
scipy.stats.mannwhitneyu
为什么用t检验有时比z检验更合适
很多教程教用z检验算AB样本量或检验,因为它公式简单。但z检验要求总体标准差已知,而AB测试中你永远不知道真实总体标准差——你只有样本标准差。这时候t检验才是理论正确的选择,尤其当每组样本量
-
statsmodels.stats.weightstats.ztest适合A/B流量分配已知、且你愿意用历史标准差作为“总体”输入的场景(极少);日常AB请无条件选t检验 - 当每组 n > 200,t 和 z 结果趋近,但代码层面没必要切换——
ttest_ind在大样本下自动逼近正态,计算开销几乎无差别 - 真正该警惕的不是t/z之分,而是把多个指标(如CTR、停留时长、下单率)一起跑t检验却不校正多重比较——这时p

















