PM Skills 的 /analyze-test:以统计严谨性驱动 A/B 测试「Ship / Extend / Stop」决策的完整工作流
【免费下载链接】pm-skillsPM Skills Marketplace: 100+ agentic skills, commands, and plugins — from discovery to strategy, execution, launch, and growth.项目地址: https://gitcode.com/GitHub_Trending/pm/pm-skills
导读
/analyze-test是 pm-data-analytics 插件中面向产品经理的 A/B 测试分析命令:从汇总统计、原始 CSV、实验平台截图或自然语言描述中接收实验数据,依次完成实验设计校验、统计显著性计算、效应量与置信区间评估,最终产出包含明确产品决策(Ship / Extend / Stop)与业务影响估算的分析报告。读完本文,你将掌握该命令的五步工作流、完整的报告模板、背后的样本量公式与统计检验实现,以及如何利用仓库中的 ab-test-analysis 技能与 Python/scipy.stats 完成可复现的显著性计算。
一、命令定位:pm-data-analytics 插件中的实验决策入口
在 pm-skills 仓库中,pm-data-analytics 插件将「数据分析」能力拆分为三个命令与三个技能,构成产品经理日常数据分析的完整工具箱:
- 命令:
/write-query(自然语言生成 SQL)、/analyze-cohorts(留存与参与度队列分析)、/analyze-test(A/B 测试结果分析); - 技能:
sql-queries、cohort-analysis、ab-test-analysis。
其中/analyze-test是唯一直接面向实验决策的入口。其元数据(pm-data-analytics/commands/analyze-test.md 的 YAML frontmatter)明确了它的职责边界:
description: Analyze A/B test results — statistical significance, sample size validation, and ship/extend/stop recommendations argument-hint: "<test results as data, screenshot, or description>"argument-hint表明该命令接受三种形态的输入:结构化数据、实验平台截图或纯文字描述,这也决定了 Step 1 的数据接收设计。从插件清单 pm-data-analytics/.claude-plugin/plugin.json 可以看到,该插件版本为 2.0.0,关键词覆盖 product-management、data-analytics、sql、cohort-analysis、retention;而在 README.md 的插件总览中,/analyze-test被定位为「Analyze A/B test results —— statistical significance, sample size validation, and ship/extend/stop recommendations」。
命令与技能的绑定关系是仓库的显式设计:/analyze-test在 Step 3 中调用ab-test-analysis技能(见 pm-data-analytics/skills/ab-test-analysis/SKILL.md)。仓库根目录的 validate_plugins.py 中validate_cross_references函数(L289-L310)会校验命令中引用的技能必须存在于同一插件内,保证这种「命令链技能」的结构不悬空。
二、Invocation:三种调用姿势
命令支持三种等价调用方式,覆盖从「手上有原始数据」到「只有一段口头描述」的全部场景:
/analyze-test Control: 4.2% conversion (n=5000), Variant: 4.8% conversion (n=5100) /analyze-test [upload a CSV of test results] /analyze-test [screenshot from your experimentation platform]第一种直接内联汇总统计量(对照组转化率 4.2%、样本 5000,实验组转化率 4.8%、样本 5100),适合数据已在手上、快速出结论的场景;第二种与第三种面向原始事件数据与实验平台(Optimizely、LaunchDarkly 等)的导出结果,命令会自动读取并解析。这与 ab-test-analysis 技能中的约定一致:"If the user provides data files (CSV, Excel, or analytics exports), read and analyze them directly. Generate Python scripts for statistical calculations when needed."
三、五步工作流:从数据输入到决策输出
Step 1:接受测试数据(Accept Test Data)
命令以「格式无关」为设计原则,接受的输入包括:
- 汇总统计:各变体的转化率与样本量;
- 原始事件数据:CSV,要求包含
user_id、variant、converted、timestamp等关键列; - 实验平台截图:Optimizely、LaunchDarkly 等平台的运行结果截图;
- 实验与结果的文字描述。
CSV 这类原始数据会触发技能中的自动处理逻辑:读取文件后生成 Python 脚本完成统计计算,而不是依赖人眼估算。
Step 2:校验实验设计(Validate Test Design)
这是命令强调「先校验、再分析」的关键一步——结果来自有缺陷的实验时,再漂亮的显著性数字也具有误导性。四个校验维度:
- 样本量是否充足:运行功效分析(power analysis),确认样本量能否支撑期望效应量的检测;
- 实验时长是否足够:至少覆盖 1~2 个完整业务周期(business cycles),以捕获周度周期波动;
- 随机化是否干净:检查样本比率失配(Sample Ratio Mismatch,SRM)——当实验组与对照组流量占比偏离预设比例时,随机化很可能被破坏;
- 实验期间的外部因素:季节性活动、市场事件、版本发布等是否污染了结果窗口。
ab-test-analysis 技能为样本量校验提供了可直接套用的公式:
n = (Z²α/2 × 2 × p × (1-p)) / MDE²其中 Zα/2 为 95% 置信水平下的双侧分位数(约 1.96),p 为基准转化率,MDE 为最小可检测效应(Minimum Detectable Effect)。技能同时设定了一个硬性阈值:功效低于 80% 即为 underpowered(统计功效不足),必须显式标记。
Step 3:分析结果(Analyze Results)
Step 3 调用 ab-test-analysis 技能执行五个层面的统计评估:
- 统计显著性(Statistical significance):计算 p-value 与置信区间;
- 效应量(Effect size):变体间的绝对差与相对差;
- 实际显著性(Practical significance):效应是否大到对业务有意义——统计显著 ≠ 业务值得上线;
- 置信区间(Confidence interval):真实效应的合理取值范围;
- 分段分析(Segment analysis):数据允许时,检查不同用户分段是否存在差异化效应。
技能在Calculate statistical significance步骤中给出了具体的计算口径(pm-data-analytics/skills/ab-test-analysis/SKILL.md L33-L41):
- 分别计算对照组与实验组的转化率;
- 相对提升(Relative lift):
(variant - control) / control × 100; - p-value:使用双尾 z 检验(two-tailed z-test)或卡方检验(chi-squared test);
- 95% 置信区间:针对组间差值计算;
- 统计显著性判定:
p < 0.05; - 实际显著性判定:提升量对业务是否有意义。
对于提供原始数据的场景,技能要求生成并运行 Python 脚本完成上述全部计算(仓库约定使用scipy.stats,见命令 Notes 末尾)。
除主指标外,技能还强制检查守卫指标(guardrail metrics)(L43-L45):如果收入、活跃度、页面加载时间等守卫指标在主指标提升的同时出现恶化,那么「主指标获胜」可能并不是一个真正的胜利——这是 Step 4 决策时需要权衡的核心输入。
Step 4:生成分析报告(Generate Analysis)
命令在 Step 4 输出一份结构化的完整报告模板,命令执行时会按此骨架填充真实数据:
## A/B Test Analysis: [Test Name] **Date**: [today] **Test duration**: [X days/weeks] **Total sample**: [N users] ### Results Summary | Variant | Sample | Metric | Rate | 95% CI | |---------|--------|--------|------|--------| | Control | [n] | [metric] | [X%] | [X% - Y%] | | Variant | [n] | [metric] | [X%] | [X% - Y%] | ### Statistical Analysis - **Relative lift**: [+X%] ([CI range]) - **P-value**: [X] - **Statistically significant**: [Yes/No] at 95% confidence - **Minimum detectable effect**: [X%] (what the test was powered to detect) ### Sample Size Check - **Required sample**: [N] per variant (for [X%] MDE at 80% power) - **Actual sample**: [N] per variant - **Verdict**: [Sufficiently powered / Underpowered / Overpowered] ### Decision **Recommendation: [SHIP / EXTEND / STOP]** [Clear explanation of why, considering both statistical and practical significance] ### Business Impact Estimate If shipped to 100% of users: - **Expected impact**: [metric change per month/quarter] - **Revenue impact**: [if applicable] - **Confidence**: [How certain we are about this estimate] ### Caveats - [Any concerns about the test validity] - [Segments where results differ] - [Novelty effects or other biases to consider] ### Follow-Up - [What to test next based on learnings] - [Monitoring plan if shipping the variant]报告设计上值得注意的几点:Sample Size Check用「实际样本 vs 需求样本」直接给出 Sufficiently powered / Underpowered / Overpowered 判定,与 Step 2 的功效分析首尾呼应;Business Impact Estimate把统计结果翻译成月度/季度业务指标变化与收入影响,并强制要求标注置信度,避免把区间估计当确定值;Caveats与Follow-Up则把实验的有效性疑虑、分段差异、新奇效应(novelty effect)和后续监控计划显式列出。
技能侧还提供了一个更精简的结果摘要格式(L58-L72),适合快速汇报:Hypothesis / Duration / Sample头信息 + 主指标与守卫指标对照表(Metric | Control | Variant | Lift | p-value | Significant?)+Recommendation / Reasoning / Next steps三段式收尾。
Step 5:提供下一步行动建议(Offer Next Steps)
分析完成并非终点,命令在 Step 5 主动衔接后续工作流,提供三类跟进选项:
- "Want me todesign a follow-up experimentbased on these findings?"——基于本次发现设计后续实验;
- "Should Irun the analysis for specific segments?"——针对特定用户分段深入分析;
- "Want me togenerate the SQLto monitor this metric post-launch?"——生成上线后监控指标的 SQL。
第三项直接与同插件的/write-query命令形成工作流衔接——这也呼应了 README.md 中「Commands are designed to flow into each other」的设计理念:一条命令结束后建议的相关命令,恰好是产品经理工作流的自然下一环。
四、决策框架:从统计结果到产品结论的映射表
ab-test-analysis 技能给出了「实验结果 → 推荐动作」的完整映射表,这是 Step 4 中 SHIP / EXTEND / STOP 决策的依据(pm-data-analytics/skills/ab-test-analysis/SKILL.md L49-L55):
| Outcome | Recommendation |
|---|---|
| Significant positive lift, no guardrail issues | Ship it— roll out to 100% |
| Significant positive lift, guardrail concerns | Investigate— understand trade-offs before shipping |
| Not significant, positive trend | Extend the test— need more data or larger effect |
| Not significant, flat | Stop the test— no meaningful difference detected |
| Significant negative lift | Don't ship— revert to control, analyze why |
这张表的精髓在于引入了第五种状态:当主指标显著为正但守卫指标恶化时,决策不是简单的 Ship 而是 Investigate——先理解权衡(trade-off)再决定是否全量。这与命令文档中「统计显著性 ≠ 实际显著性」的警示一脉相承。
五、统计实现要点:scipy.stats 与可复现计算
当输入为 CSV 原始数据时,命令与技能约定使用Python + scipy.stats生成完整分析(命令 Notes 第 5 条:"If data is provided as CSV, generate the full analysis using Python with scipy.stats")。从技能的算法描述可以还原出实现路径:
- 转化率:
converted列按variant分组求均值; - 相对提升:
(variant_rate - control_rate) / control_rate * 100; - 显著性检验:双尾 z 检验(对比例可用 z-test for proportions)或卡方检验(
scipy.stats.chi2_contingency),得到 p-value; - 置信区间:基于比例的 Wald 区间或更稳健的 Wilson 区间,输出 95% CI;
- 样本量/功效校验:代入 Step 2 的公式
n = (Z²α/2 × 2 × p × (1-p)) / MDE²,反推需求样本量并与实际样本对比,给出 powered 判定。
技能中Think step by step. Save as markdown. Generate Python scripts for calculations if raw data is provided.(L74)意味着完整分析脚本会被保存,保证结论可复现、可随新数据重跑——这与/analyze-cohorts命令中「保存 Python 脚本以便用新数据重跑」的约定(pm-data-analytics/commands/analyze-cohorts.md Notes)是同一设计哲学。
六、注意事项与常见陷阱(Notes)
命令文档在 Notes 一节集中列出了实践中的关键警示,这些是产品经理最容易踩坑的地方:
- 统计显著 ≠ 实际显著:数据足够多时 0.1% 的提升也能显著,但未必值得上线——决策必须同时看效应量的业务意义;
- 先查样本比率失配(SRM):在信任任何结果之前,确认实验组/对照组流量比例符合预设;
- 新奇效应会虚高短期结果:建议上线后持续监控 2~4 周,让新奇效应消退后再下最终结论;
- 功效不足时,正确答案通常是「延展」而非「无效果」:Underpowered 实验无法区分「没有差异」和「差异太小测不出来」,此时 EXTEND 比 STOP 更稳妥;
- 收入类指标要用置信区间估算影响:用置信区间的上下界分别估算最好与最坏的业务影响,而不是只报点估计;
- CSV 数据走 Python + scipy.stats:保证计算的精确性与可复现性,而非手工估算。
七、在仓库中的实现结构与进一步阅读
如果你希望深入理解该命令的工程实现与周边配套,可以在仓库中按以下路径继续探索:
- 命令本体:pm-data-analytics/commands/analyze-test.md —— 本文所基于的核心文档,frontmatter 含
description与argument-hint; - 底层技能:pm-data-analytics/skills/ab-test-analysis/SKILL.md —— 样本量公式、检验方法、决策映射表与结果摘要模板的完整定义;
- 插件清单:pm-data-analytics/.claude-plugin/plugin.json —— 插件元数据、作者信息与关键词;
- 插件 README:pm-data-analytics/README.md —— 三个技能与三个命令的索引;
- 安装方式:在 README.md 中可查看
claude plugin install pm-data-analytics@pm-skills的安装命令(Claude Code 与 Codex CLI 均支持); - 质量保障:validate_plugins.py —— 根目录的插件校验脚本,
validate_command(L232-L265)检查命令 frontmatter 必填字段,validate_cross_references(L289-L310)校验命令引用的技能存在性,保证本文所述「命令 → 技能」链条的完整性。
在 pm-data-analytics/skills/ab-test-analysis/SKILL.md 的 Further Reading 一节还列出了 A/B 测试基础、实验库与指标选择等延伸阅读(原文为外部链接,此处仅提示其存在)。结合命令文档的完整工作流与技能层的统计实现,/analyze-test为产品经理提供了一条从「拿到实验数据」到「做出有依据的产品决策」的标准化路径:先校验实验设计、再计算统计量、最终在统计显著性与实际显著性之间做出权衡,把 A/B 测试从「看谁的百分比高」升级为「用统计严谨性说话」。
【免费下载链接】pm-skillsPM Skills Marketplace: 100+ agentic skills, commands, and plugins — from discovery to strategy, execution, launch, and growth.项目地址: https://gitcode.com/GitHub_Trending/pm/pm-skills
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考