agentleFS
lhg-plugslhg-plugs/lhg-experiment/skills/power-analysis/SKILL.md

power-analysis

Skill0 starsChanged 19 days agoMITView on GitHub

功效分析原理与实操:效应量三种设定法、α/功效/样本量三角关系、power_calc.py 脚本用法。样本量不再拍脑袋。

7 other projects use a version of this.

Adopted by

Most recently taken up by

The file

Files
SKILL.md

power-analysis:功效分析原理与实操

目标:让小白理解"功效分析在算什么",并会用本插件自带的 power_calc.py 算出靠谱样本量。 核心纪律:样本量必须来自测算,不能来自"感觉流量够"。效应量必须有依据,不能凭空编。

1. 何时使用

  • 实验设计定了,但不知道要多少样本 → 用本 skill 走完整测算流程
  • 流量有限,想知道"这点流量能检出多大的变化"(MDE)→ 模式三
  • 评审别人的实验方案:样本量有没有测算依据、效应量设得靠不靠谱

2. 输入与输出

输入:指标类型(比例型如转化率 / 均值型如停留时长)+ 基准值 + 期望的提升幅度。 输出:每组所需样本量(或功效/MDE)+ 效应量依据说明 + 可复现的测算命令(写入 plan.json 的 sample_size_basis)。

3. 分步方法论

3.1 先理解三角关系(一句话版)

功效分析是四个量的三角关系:显著性水平 α、功效(1-β)、效应量、样本量。 固定其中三个,第四个就定了。实践中 α=0.05、功效=80% 是行规,剩下就是:

效应量越大,需要的样本越少;想检出的变化越小,需要的样本越多。

小白最常犯的错是跳过"效应量"直接问"要多少样本"——没有效应量,这个问题没有答案。

3.2 效应量三种设定法(按靠谱程度排序)

方法一:历史数据法(最靠谱) 看过去同类改动的真实效果。比如以前改过三次按钮颜色,转化率分别提升了 3%、5%、8%, 那就取最保守的 3% 做效应量。没有历史数据?看方法二。

方法二:最小业务价值法(最实用) 问业务方:"提升多少才值得做?" 算法:开发+运营成本 ÷ 单用户价值 = 盈亏平衡点。 比如开发成本 2 万元,单个转化价值 10 元,需要 2000 个新增转化; 当前每天 10 万流量、基准转化率 5%(每天 5000 转化),2000 ÷ 5000 = 40%—— 也就是说,相对提升不到 40% 这事就不值得做,效应量就按 40% 设。 这个方法的好处:算出来的样本量天然和业务价值挂钩。

方法三:文献/行业基准法(保底) 实在没有数据时用 Cohen 的惯例:比例型指标看相对提升 10%/20%/50% 三档; 均值型用 Cohen's d=0.2(小)、0.5(中)、0.8(大)。 注意:这是保底选项,d=0.2 是"小效应"的惯例值,不是"你这个实验的真实效应", 用它算出的样本量要在 plan 里明确标注"效应量为惯例假设,结论保守解读"。

铁律:三种方法取最保守的那个。乐观的效应量 → 偏小的样本量 → 实验大概率白做。

3.3 跑脚本(三种模式)

脚本位置:<插件目录>/scripts/audit/power_calc.py,纯 Python 标准库,零第三方依赖。

模式一:算样本量(设计阶段最常用)

# 比例型:基准转化率 5%,期望提升到 6%
python3 power_calc.py --test prop2s --p1 0.05 --p2 0.06
# → 每组需要样本量:8158

# 均值型:期望 Cohen's d=0.2(小效应)
python3 power_calc.py --test t2s --d 0.2
# → 每组需要样本量:393

模式二:已知样本量,算功效

python3 power_calc.py --test prop2s --p1 0.05 --p2 0.06 --n 3000
# → 实际功效:41.2%

功效 <80% 时给用户三个选项:① 加样本/延长时间;② 接受低功效(写进 plan 备注,结论降级); ③ 放弃实验。不许偷偷把功效目标改成 50% 来"达标"。

模式三:已知样本量,算 MDE(最小可检出效应)

python3 power_calc.py --test prop2s --p1 0.05 --n 8000
# → MDE:p2=0.0608(相对提升 21.6%)

MDE 大于业务期望的提升 → 直接告诉用户"这个实验做不出来",别浪费流量。 这是小流量团队最常用的模式:先看流量能支撑什么,再决定做什么实验。

输出格式:默认人类可读文本;--format json 输出机器可读 JSON(供审计脚本与 CI 用)。

3.4 参数说明与默认值

参数含义默认值什么时候改
--alpha显著性水平(第一类错误率)0.05几乎不改;医疗/高风险场景用 0.01
--power目标功效(1-β)0.8流量实在不够时可降到 0.7,但要写进备注
--sided单侧/双侧检验2(双侧)只关心"提升"不关心"下降"时用单侧;新手一律双侧

新手警告:单侧检验样本量更小,所以有人爱用。但单侧检验假设"下降不可能发生", 而线上实验翻车(改版反而降转化)是常事。用单侧却出了下降,你的检验是"看不见"它的。 除非有极强的先验理由,否则用双侧。

3.5 结果存档(可复现)

测算结论必须写入 plan.json:

{
  "sample_size_basis": "power_calc.py --test prop2s --p1 0.05 --p2 0.06 --alpha 0.05 --power 0.8",
  "effect_basis": "历史数据:过去三次同类改动提升 3%~8%,取保守值相对提升 20%(5%→6%)",
  "required_sample_per_group": 8158
}

要求:任何人拿到 sample_size_basis 里的命令,重跑能得到同样的数字。 效应量依据写清楚来源(历史数据/最小业务价值/文献惯例),不许写"经验估计"四个字糊弄。

3.6 执行时的上浮

脚本给出的是理论最小值。实际执行按以下上浮 10%~20%:

  • 分流损耗:埋点丢失、刷子流量,约 5%~10%
  • 周期对齐:凑满完整周(7 天的整数倍),向上取整
  • 多组实验:3 组以上时,每组都要满足样本量(不是总数满足)

4. 反模式

  1. 效应量拍脑袋:"我觉得能提升 50%"——然后样本量算出来很小,实验"成功"了。 效应量每翻一倍,所需样本量大约变为 1/4,拍脑袋的效应量是最省事的作弊。
  2. 事后功效分析:实验做完了 p>0.05,回头算"功效只有 30%,所以没检出来情有可原"。 事后功效是 p 值的单调变换,提供零新信息。功效分析只在设计阶段做。
  3. 偷换单双侧:方案里写双侧,算样本量时用单侧(数字小好看)。审计脚本不查这个,靠人工评审盯。
  4. 用显著性反推效应量:"p<0.05 说明效应很大"——错。p 值受样本量影响极大, n=10 万时 0.1% 的提升也能"显著"。效应大小看效应量,不看 p 值。
  5. 忽略多组分流:3 个实验组 + 1 个对照组,每组都要 8000,总共 32000。 按"总数 8000"开实验,每组只有 2000,功效直接腰斩。
  6. 把 MDE 当目标:"MDE 是 20%,那我们目标就定 20%"——MDE 是"能检出的最小值", 不是"期望达到的值"。期望值应该来自业务,MDE 用来检验流量够不够。

5. 速查:常见指标的测算起点

指标类型基准怎么定效应量起点
点击率/转化率prop2s过去 30 天均值历史改动幅度,或相对提升 20%
留存率prop2s次日/7 日留存均值相对提升 5%~10%(留存难动)
停留时长/客单价t2s均值 + 标准差d=0.2 起(先算标准差!)
NPS/评分t2s历史均值d=0.2(评分方差大,样本量会很大)

均值型特别提醒:t2s 的效应量 d = 均值差 ÷ 标准差。标准差必须从历史数据算, 不能估。方差大的指标(如客单价)样本量会大得吓人,这是正常的——说明这个指标本来就不适合做小流量实验。

6. 自检与反馈

质检门(测算完成前逐项打勾):

  • 指标类型选对了(比例型用 prop2s,均值型用 t2s)
  • 效应量有明确依据(历史数据 / 最小业务价值 / 文献惯例三选一,写进了 effect_basis)
  • α、功效目标、单双侧已明示并写入 plan.json
  • 用的是脚本算出的数字,不是心算/估算
  • 已按分流损耗上浮 10%~20%
  • sample_size_basis 字段含完整可复现命令

标准冒烟用例: power_calc.py --test t2s --d 0.2 期望每组 393; --test prop2s --p1 0.05 --p2 0.06 期望每组 8158。 数字对不上 → 脚本环境有问题,先修脚本再做实验。

一键提 issue:测算场景脚本覆盖不了(如多组比较、非劣效检验),以 [power] <一句话场景> 为标题提交到 https://github.com/lhg-plugs/lhg-experiment/issues。

出品:刘洪光

本 skill 由真人出镜 IP「刘洪光」(安徽合肥)出品,归属 lhg-skills。

  • GitHub 主页:https://github.com/lhg-skills —— 全部 skill 开源在此,欢迎 star
  • 抖音:搜「刘老师讲AI实战」
  • 微信:lhgsmsw

Download now (ZIP)

Does it work?

Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.

No reviews yet

People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.

  • It worked
  • Partly
  • It didn't
What did you use it for? e.g. Reviewing pull requests in a Rails app

Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.

Your trail

Files you open will collect here, so you can find them again.

Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.

Now do this for your own.

Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.