何时使用
适用于:在把一份分析交给干系人、上管理层会、或据此做决策之前,对它做一轮交付前 QA——查方法论、抽验计算、审可视化、验结论,最后给一个可对外的置信评级。被复核的对象可以是会话里的文档/报表、文件(Markdown、Notebook、表格)、SQL 查询及其结果、图表及其底层数据,或一段「方法+发现」的口头描述。典型请求:
- "这份季度营收分析发给高管前帮我复核一下"
- "我拿 Q4 的流失率比 Q3,但 Q4 测量窗口更短,帮我看有没有问题"
- "这段漏斗 SQL 和结果,逻辑对吗?"
不该用(负边界):
- 要对一份陌生数据集从零跑画像/审计(缺失值、异常值、DQS)→ 用
dataset-quality-auditor。 - 要给数据管道/数仓搭自动化质量校验(Great Expectations、dbt test、数据契约)→ 用
data-quality-validator。 - 只是要写/调一条 SQL 查询本身,而非复核既成分析 → 用
sql-query-builder。
本技能是「人工复核既成分析」的判断框架,不产出可调度的校验代码。
步骤
按顺序走七步,每步都把发现记下来,最后汇成报告。
- 审方法论与假设:问题框定对不对(会不会被换种解读)?选数对不对(表/数据集/时间范围)?口径定义清不清、和干系人理解是否一致?对比是否公平(时间窗、cohort 规模、上下文可比)?人群定义有没有意外排除?
- 跑交付前 QA 清单:逐项过下方四类检查(数据质量 / 计算 / 合理性 / 呈现)。
- 比对常见分析陷阱:对照下方陷阱目录系统排查(join 膨胀、幸存者偏差、不完整周期对比、分母漂移、均值的均值、时区错配、分段选择偏差)。
- 抽验计算与聚合:独立重算几个关键数;验小计加总等于总计;该求和到 100% 的百分比是否接近 100%;同比/环比用的基期对不对;筛选条件在各指标间是否一致。
- 审可视化(若有图表):柱状图轴是否从零起;对比图量纲是否一致;标题是否如实描述所示内容;是否存在截断轴、不等距、3D 失真等误导。
- 验叙事与结论:结论是否被所示数据支撑;是否承认替代解释;不确定性是否如实沟通;建议是否由发现合乎逻辑推出;置信措辞是否匹配证据强度。
- 给改进建议 + 三级置信评级:建议要具体可执行(补哪个分析、加哪条 caveat、换哪种图、缺哪块上下文)。评级三选一并说明:可发布(方法论稳、计算已验、caveat 已注,仅有不阻断的小建议)/ 带注意事项发布(大体正确但有须告知干系人的限制或假设,列出必须传达的 caveat)/ 需返工(发现具体错误或方法论问题,列出修改项并按优先级排序)。
指令
交付前 QA 清单(分享任何分析前逐项过)
- 数据质量:来源核实(用对表了吗)|新鲜度(标注 as-of 日期)|完整性(时间序列无意外缺口)|空值处理(查关键列空值率,已排除/填补/标记)|去重(无坏 join 或重复源记录导致的重复计数)|筛选核实(所有 WHERE 正确、无意外排除)。
- 计算:聚合逻辑(GROUP BY 含所有非聚合列、聚合粒度对得上分析口径)|分母正确(比率用对分母且非零)|日期对齐(对比用等长周期,部分周期已排除或注明)|join 正确(INNER vs LEFT 选对,多对多没把计数撑大)|口径一致(指标与干系人定义一致,偏差已注)|小计加总(部分之和等于整体,不等则解释如重叠)。
- 合理性:量级(数在可信区间,营收非负,百分比 0–100%)|趋势连续(无无法解释的跳变)|交叉印证(关键数对得上 dashboard / 既往报告 / 财务)|数量级(总营收/用户数与已知大致吻合)|边界情形(空分段、零活跃周期、新实体怎么表现)。
- 呈现:图表准确(柱状图从零起、轴有标签、多面板量纲一致)|数字格式(精度、货币/百分号一致、千分位)|标题清晰(说洞察而非只报指标、注明日期范围)|caveat 透明(已知限制与假设显式写出)|可复现(他人能据文档重建此分析)。
结果 sanity check
- 量级 smell test:用户数对得上已知 MAU/DAU?营收数量级对得上已知 ARR?转化率在 0–100% 且对得上 dashboard?50%+ 的 MoM 增长是真实还是数据问题?均值是否符合对分布的认知?各分段百分比是否求和约 100%?
- 交叉验证:① 同一指标用两种算法各算一遍看是否一致;② 抽个别记录手工追溯;③ 对标已发布 dashboard / 财务 / 既往分析;④ 反推(人均×人数 ≈ 总额?);⑤ 边界检查(筛到单日/单用户/单类别,微观结果合理吗)。
- 需警惕的红旗:单期变动 >50% 且无明显原因;计数/求和恰好是整数(疑似筛选或默认值问题);比率恰好 0% 或 100%(疑似数据不完整);结果完美印证假设(现实通常更糙);跨期或跨分段值完全相同(疑似查询漏了某维度)。
示例
陷阱速查(保留源关键约束)
- Join 膨胀:多对多 join 悄悄把行数翻倍。检测:
防:join 后必查行数;通过 join 计数实体时用SELECT COUNT(*) FROM table_a; -- 1,000 SELECT COUNT(*) FROM table_a a JOIN table_b b ON a.id = b.a_id; -- 3,500(出事了)COUNT(DISTINCT a.id)而非COUNT(*)。 - 幸存者偏差:只分析「今天还在」的实体,漏掉已流失/已删除的。下结论前先问"谁不在这个数据集里?"
- 不完整周期对比:拿部分周期比完整周期("1 月营收 $500K vs 12 月 $800K"——但 1 月还没过完)。防:只比完整周期,或对齐到同月同日/同天数。
- 分母漂移:跨期改了"合格/活跃"的定义,使比率不可比。防:跨期用一致定义,定义变更须注明。
- 均值的均值:A 组 100 人均值 $50,B 组 10 人均值 $200。错:(50+200)/2=$125;对:加权 (100×50+10×200)/110=$63.64。永远从原始数据聚合。
- 时区错配:UTC 事件时间戳 vs 本地展示日期 / 不同截断时间的日汇总。防:分析前统一到单一时区(建议 UTC)并记录。
- 分段选择偏差:用结果本身定义分段造成循环逻辑("完成 onboarding 的留存更高"——他们自选择了)。防:按处理前特征而非结果定义分段。
- 其他统计陷阱:辛普森悖论、相关当因果、小样本、离群点拖累均值(考虑中位数)、多重检验/挑樱桃、前视偏差、挑对叙事有利的时间段。
报告输出格式
## 校验报告
### 总体评级:[可发布 | 带注意事项发布 | 需返工]
### 方法论审查
[关于方法、选数、口径定义的发现]
### 发现的问题
1. [严重度 高/中/低] [问题描述与影响]
### 计算抽验
- [指标]:[已核实 / 发现差异]
### 可视化审查
[图表或视觉呈现的问题]
### 改进建议
1. [建议及其重要性]
### 须告知干系人的注意事项
- [必须传达的 caveat]
注意事项
- 任何高风险汇报或决策前都先跑这套质检;即便快分析也值得做一次 sanity check,花一分钟可保住可信度。
- 发现问题就先修再复核;把校验输出和分析一起交付,能增强干系人信心。
- 给每条发现配置信措辞,让置信措辞匹配证据强度——不要把"很可能"写成"必然"。
- 复现性是底线:标注数据快照日期、把查询/代码纳入版本控制(git 或共享文档),重跑时记录改了什么、为什么。每份非平凡分析应附:问题、数据源(含 as-of)、口径定义、方法步骤、假设与限制、关键发现、SQL 查询、caveat。
互见
- related:
dataset-quality-auditor—— 复核中怀疑底层数据脏时,转去做完整数据集画像与 DQS 评分。 - related:
data-quality-validator—— 同类问题反复出现时,沉淀成管道级自动校验(GE/dbt test/数据契约)。 - related:
sql-query-builder—— 抽验或重算时需要重写/调优查询。 - combines_with:
financial-analysis-toolkit—— 当被复核的是财务/会计数字,叠加财务口径校验。 - combines_with:
kpi-dashboard-design、matplotlib-visualization、plotly-interactive-viz—— 可视化审查发现图表误导时,据建议重做图表。
采编自 anthropics/knowledge-work-plugins(Apache-2.0 许可证)。