# Analysis QA Validator

> 当把分析/报表/SQL 结果交给干系人或上会前需要质检时使用；做方法论、计算、可视化与结论的交付前 QA，产出含「可发布/带注意事项发布/需返工」三级置信评级的校验报告；不适用于从零跑数据集画像（用 dataset-quality-auditor）、搭管道质量校验（用 data-quality-validator）或纯写 SQL（用 sql-query-builder）。触发词：分析复核、交付前质检、结论是否站得住、口径检查、上会前 review

- Skill: `findscripter/analysis-qa-validator` (Agent Skill)
- Install (CLI): `npx skillmds@latest add findscripter/analysis-qa-validator`
- Raw SKILL.md: https://api.skillmd.com/api/skills/findscripter/analysis-qa-validator/raw
- Safety review: pending
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: Data & Analytics
- License: Apache-2.0
- Author: findscripter (https://skillmd.com/u/findscripter)
- Updated: 2026-09-17
- Page: https://skillmd.com/skills/findscripter/analysis-qa-validator

---

## 何时使用

适用于：在把一份分析交给干系人、上管理层会、或据此做决策之前，对它做一轮交付前 QA——查方法论、抽验计算、审可视化、验结论，最后给一个可对外的置信评级。被复核的对象可以是会话里的文档/报表、文件（Markdown、Notebook、表格）、SQL 查询及其结果、图表及其底层数据，或一段「方法+发现」的口头描述。典型请求：

- "这份季度营收分析发给高管前帮我复核一下"
- "我拿 Q4 的流失率比 Q3，但 Q4 测量窗口更短，帮我看有没有问题"
- "这段漏斗 SQL 和结果，逻辑对吗？"

不该用（负边界）：
- 要对一份**陌生数据集从零跑画像/审计**（缺失值、异常值、DQS）→ 用 `dataset-quality-auditor`。
- 要给**数据管道/数仓搭自动化质量校验**（Great Expectations、dbt test、数据契约）→ 用 `data-quality-validator`。
- 只是要**写/调一条 SQL 查询**本身，而非复核既成分析 → 用 `sql-query-builder`。

本技能是「人工复核既成分析」的判断框架，不产出可调度的校验代码。

## 步骤

按顺序走七步，每步都把发现记下来，最后汇成报告。

1. **审方法论与假设**：问题框定对不对（会不会被换种解读）？选数对不对（表/数据集/时间范围）？口径定义清不清、和干系人理解是否一致？对比是否公平（时间窗、cohort 规模、上下文可比）？人群定义有没有意外排除？
2. **跑交付前 QA 清单**：逐项过下方四类检查（数据质量 / 计算 / 合理性 / 呈现）。
3. **比对常见分析陷阱**：对照下方陷阱目录系统排查（join 膨胀、幸存者偏差、不完整周期对比、分母漂移、均值的均值、时区错配、分段选择偏差）。
4. **抽验计算与聚合**：独立重算几个关键数；验小计加总等于总计；该求和到 100% 的百分比是否接近 100%；同比/环比用的基期对不对；筛选条件在各指标间是否一致。
5. **审可视化**（若有图表）：柱状图轴是否从零起；对比图量纲是否一致；标题是否如实描述所示内容；是否存在截断轴、不等距、3D 失真等误导。
6. **验叙事与结论**：结论是否被所示数据支撑；是否承认替代解释；不确定性是否如实沟通；建议是否由发现合乎逻辑推出；置信措辞是否匹配证据强度。
7. **给改进建议 + 三级置信评级**：建议要具体可执行（补哪个分析、加哪条 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 悄悄把行数翻倍。检测：
  ```sql
  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（出事了）
  ```
  防：join 后必查行数；通过 join 计数实体时用 `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 许可证）。

