/validate-data - 在分享前验证分析

如果你看到不熟悉的占位符或需要检查已连接的工具,请参阅 CONNECTORS.md

在与利益相关者分享前审查分析的准确性、方法论和潜在偏差。生成置信度评估和改进建议。

用法

/validate-data <待审查的分析>

分析可以是:

工作流程

1. 审查方法论和假设

检查:

2. 执行交付前 QA 检查清单

执行下面的清单——数据质量、计算、合理性和呈现检查。

3. 检查常见的分析陷阱

对照下面的详细陷阱目录进行系统审查(连接爆炸、幸存者偏差、不完整期间比较、分母变化、平均值的平均、时区不匹配、选择偏差)。

4. 验证计算和聚合

尽可能进行抽查:

应用下面的结果合理性检查技术(量级检查、交叉验证、红旗检测)。

5. 评估可视化

如果分析包含图表:

6. 评估叙述和结论

审查是否:

7. 建议改进

提供具体、可操作的建议:

8. 生成置信度评估

使用三级评分标准评估分析:

准备好分享——分析方法合理,计算已验证,注意事项已注明。有小的改进建议但不构成障碍。

可分享但需注明注意事项——分析基本正确,但有特定的限制或假设必须传达给利益相关者。列出所需的注意事项。

需要修订——发现具体的错误、方法论问题或缺失的分析,应在分享前解决。按优先级顺序列出所需的更改。

输出格式

## 验证报告

### 总体评估:[准备好分享 | 可分享但需注明注意事项 | 需要修订]

### 方法论审查
[关于方法、数据选择、定义的发现]

### 发现的问题
1. [严重程度:高/中/低] [问题描述和影响]
2. ...

### 计算抽查
- [指标]:[已验证 / 发现差异]
- ...

### 可视化审查
[图表或视觉呈现方面的任何问题]

### 建议改进
1. [改进建议及其重要性]
2. ...

### 需要告知利益相关者的注意事项
- [必须传达的注意事项]
- ...

交付前 QA 检查清单

在与利益相关者分享任何分析之前,执行此检查清单。

数据质量检查

计算检查

合理性检查

呈现检查

常见数据分析陷阱

连接爆炸

问题:多对多连接悄无声息地使行数倍增,膨胀了计数和总和。

如何检测

-- 检查连接前后的行数
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(糟糕)

如何预防

幸存者偏差

问题:只分析今天存在的实体,忽略了那些已被删除、流失或失败的实体。

示例

如何预防:在得出结论前问"谁不在这个数据集中?"

不完整期间比较

问题:将不完整的期间与完整的期间进行比较。

示例

如何预防:始终筛选到完整的期间,或比较同月同日/相同天数。

分母变化

问题:分母在不同期间之间发生变化,使比率无法比较。

示例

如何预防:在所有比较期间使用一致的定义。标注任何定义的变化。

平均值的平均

问题:对预先计算的平均值再取平均,当组大小不同时结果错误。

示例

如何预防:始终从原始数据聚合。永远不要对预聚合的平均值再取平均。

时区不匹配

问题:不同的数据源使用不同的时区,导致不对齐。

示例

如何预防:在分析前将所有时间戳标准化为单一时间区(推荐 UTC)。记录使用的时区。

细分中的选择偏差

问题:细分由你正在衡量的结果定义,造成循环逻辑。

示例

如何预防:基于处理前的特征而非结果定义细分。

其他统计陷阱

结果合理性检查

量级检查

对于分析中的任何关键数字,验证其通过"嗅觉测试":

指标类型 合理性检查
用户数量 是否与已知的 MAU/DAU 数据匹配?
收入 数量级是否与已知的 ARR 相符?
转化率 是否在 0% 到 100% 之间?是否与仪表盘数据匹配?
增长率 50%+ 的月环比增长是否现实,还是数据有问题?
平均值 鉴于你对分布的了解,平均值是否合理?
百分比 各细分百分比合计是否约为 100%?

交叉验证技术

  1. 用两种不同方式计算同一指标并验证它们是否匹配
  2. 抽查个别记录——选择几个特定的实体,手动追踪其数据
  3. 与已知基准比较——对照已发布的仪表盘、财务报告或之前的分析
  4. 反向工程——如果总收入是 X,每用户收入乘以用户数是否约等于 X?
  5. 边界检查——当筛选到单天、单用户或单类别时会发生什么?这些微观结果合理吗?

值得调查的红旗

可重现性的文档标准

分析文档模板

每个非平凡的分析都应包含:

## 分析:[标题]

### 问题
[正在回答的具体问题]

### 数据来源
- 表:[schema.table_name](截至 [日期]
- 表:[schema.other_table](截至 [日期]
- 文件:[文件名](来源:[来自哪里]

### 定义
- [指标 A][精确计算方式]
- [细分 X][成员资格的精确判定方式]
- [时间段][起始日期][结束日期][时区]

### 方法论
1. [分析方法的步骤 1]
2. [步骤 2]
3. [步骤 3]

### 假设和限制
- [假设 1 及其合理的原因]
- [限制 1 及其对结论的潜在影响]

### 关键发现
1. [发现 1 及其支持证据]
2. [发现 2 及其支持证据]

### SQL 查询
[所有使用的查询,带注释]

### 注意事项
- [读者在据此采取行动前应了解的事项]

代码文档

对于可能被复用的任何代码(SQL、Python):

"""
分析:月度群组留存
作者:[姓名]
日期:[日期]
数据来源:events 表、users 表
最后验证:[日期]——结果与仪表盘匹配度在 2% 以内

目的:
    基于首次活动日期计算月度用户留存群组。

假设:
    - "活跃"意味着该月至少有一次事件
    - 排除测试/内部账户(user_type != 'internal')
    - 全程使用 UTC 日期

输出:
    群组留存矩阵,行为 cohort_month,列为 months_since_signup。
    值为留存率(0-100%)。
"""

分析的版本控制

示例

/validate-data 在我发送给高管团队之前审查这份季度收入分析:[分析内容]
/validate-data 检查我的流失分析——我在比较 Q4 和 Q3 的流失率,但 Q4 的测量窗口更短
/validate-data 这是我们转化漏斗的 SQL 查询及其结果。逻辑看起来正确吗?[查询 + 结果]

技巧