Back to Skills

review-data-analysis

pjt222
Updated 2 days ago
10 views
17
2
17
View on GitHub
Otherdata

About

This skill reviews data analysis for quality, correctness, and reproducibility, covering data quality assessment, hypothesis testing, model validation, and leakage detection. It's designed for developers to audit colleagues' work before publication, validate ML pipelines pre-deployment, or conduct regulatory reviews. The tool requires analysis code and outputs, optionally accepting raw data and protocols for comprehensive validation.

Quick Install

Claude Code

Recommended
Primary
npx skills add pjt222/agent-almanac -a claude-code
Plugin CommandAlternative
/plugin add https://github.com/pjt222/agent-almanac
Git CloneAlternative
git clone https://github.com/pjt222/agent-almanac.git ~/.claude/skills/review-data-analysis

Copy and paste this command in Claude Code to install this skill

Documentation

数据分析评审

评估数据分析流水线的正确性、健壮性和可重复性。

适用场景

  • 在发表前审查同事的分析笔记本或脚本
  • 在生产部署前验证机器学习流水线
  • 为监管或业务决策审计分析报告
  • 评估分析是否支持其所述结论
  • 在受监管环境中进行第二分析师复核

输入

  • 必填:分析代码(脚本、笔记本或流水线定义)
  • 必填:分析输出(结果、表格、图表、模型指标)
  • 可选:原始数据或数据字典
  • 可选:分析计划或协议(预先注册或临时的)
  • 可选:目标受众和决策背景

步骤

第 1 步:评估数据质量

在评估分析之前,先审查输入数据:

## 数据质量评估

### 完整性
- [ ] 缺失数据已量化(按列和按行的缺失百分比)
- [ ] 缺失数据机制已考虑(MCAR、MAR、MNAR)
- [ ] 插补方法适当(如使用)或完整案例分析有理据支持

### 一致性
- [ ] 数据类型符合预期(日期是日期,数字是数字)
- [ ] 值域合理(无负年龄,历史数据中无未来日期)
- [ ] 分类变量具有预期水平(无拼写错误,编码一致)
- [ ] 记录间单位一致

### 唯一性
- [ ] 重复记录已识别并处理
- [ ] 预期位置的主键是唯一的
- [ ] 连接操作产生预期行数(无扇出或丢失)

### 时效性
- [ ] 数据时效性适合分析问题
- [ ] 时间覆盖范围与研究期间相匹配
- [ ] 时间序列数据中无前瞻偏倚

### 溯源
- [ ] 数据来源已记录
- [ ] 提取日期/版本已记录
- [ ] 来源与分析输入之间的任何转换已记录

预期结果: 数据质量问题已记录,并说明其对结果的潜在影响。

失败处理: 若数据不可访问以供审查,则从代码中评估质量(应用了哪些检查和转换)。

第 2 步:检验假设

对所用的每种统计方法或模型:

方法关键假设检验方式
线性回归线性性、独立性、残差正态性、方差齐性残差图、Q-Q 图、Durbin-Watson、Breusch-Pagan
逻辑回归独立性、无多重共线性、线性 logitVIF、Box-Tidwell、残差诊断
t 检验独立性、正态性(或大 n)、方差相等Shapiro-Wilk、Levene 检验、目视检查
方差分析独立性、正态性、方差齐性各组 Shapiro-Wilk、Levene 检验
卡方检验独立性、期望频率 ≥ 5期望频率表
随机森林足够的训练数据、特征相关性OOB 误差、特征重要性、学习曲线
神经网络足够数据、适当架构、无数据泄漏验证曲线、过拟合检查
## 假设检验结果
| 分析步骤 | 方法 | 假设 | 已检验? | 结果 |
|---------|------|------|---------|------|
| 主模型 | 线性回归 | 残差正态性 | 是 | Q-Q 图显示轻微偏差——n>100 时可接受 |
| 主模型 | 线性回归 | 方差齐性 | 否 | 未检验——建议添加 Breusch-Pagan 检验 |

预期结果: 每种统计方法的假设均已明确检验或得到承认。

失败处理: 若假设被违反,检查作者是否已处理(稳健方法、变换、敏感性分析)。

第 3 步:检测数据泄漏

数据泄漏发生在训练集外的信息影响模型时,导致过于乐观的性能:

常见泄漏模式:

  • 目标泄漏:直接编码目标变量的特征(如使用"treatment_outcome"预测"treatment_success")
  • 时间泄漏:使用未来信息预测过去(使用预测时不可用的数据计算的特征)
  • 训练测试污染:在数据分割之前对完整数据集拟合预处理(缩放、插补、特征选择)
  • 群组泄漏:相关观测(同一患者、同一设备)分散在训练集和测试集中
  • 特征工程泄漏:跨整个数据集而非仅在训练折叠内计算的聚合值
## 泄漏评估
| 检查项 | 状态 | 证据 |
|-------|------|------|
| 目标泄漏 | 清除 | 无从目标派生的特征 |
| 时间泄漏 | 关注 | 特征 X 使用 30 天前向平均值 |
| 训练测试污染 | 清除 | StandardScaler 仅在训练集上拟合 |
| 群组泄漏 | 关注 | 患者 ID 未用于分层分割 |

预期结果: 所有常见泄漏模式均已检查,状态为清除/关注。

失败处理: 若发现泄漏,通过重新运行去除泄漏特征来估计影响(如可能),或标记供分析师调查。

第 4 步:验证模型性能

对于预测模型:

  • 问题对应的适当指标(不仅仅是准确率——考虑精确率、召回率、F1、AUC、RMSE、MAE)
  • 交叉验证或留出策略已描述且适当
  • 训练集与测试/验证集性能已比较(过拟合检查)
  • 提供了基准比较(朴素模型、随机机会、先前方法)
  • 性能指标的置信区间或标准误差
  • 在相关子群体上评估了性能(公平性、边缘案例)

对于推断/解释模型:

  • 报告了模型拟合统计量(R²、AIC、BIC、偏差)
  • 系数解释正确(方向、量级、显著性)
  • 多重共线性已评估(VIF < 5–10)
  • 已识别有影响的观测值(Cook 距离、杠杆值)
  • 如测试了多个规格,进行了模型比较

预期结果: 模型验证适合用例(预测 vs 推断)。

失败处理: 若测试集性能与训练性能可疑地接近,标记潜在泄漏。

第 5 步:评估可重复性

## 可重复性清单
| 项目 | 状态 | 备注 |
|------|------|------|
| 代码无错误运行 | [是/否] | 在 [环境描述] 上测试 |
| 随机种子已设置 | [是/否] | [文件] 第 [N] 行 |
| 依赖项已记录 | [是/否] | requirements.txt / renv.lock 存在 |
| 数据加载可重复 | [是/否] | 路径是 [相对/绝对/URL] |
| 结果与报告值匹配 | [是/否] | 已验证:表 1 ✓,图 2 ✗(轻微差异) |
| 环境已记录 | [是/否] | 已指定 Python 3.11 / R 4.5.0 |

预期结果: 通过重新运行分析验证了可重复性(若数据不可用则从代码评估)。

失败处理: 若结果无法精确重现,确定差异是否在浮点数容差范围内或表明存在问题。

第 6 步:撰写评审报告

## 数据分析评审

### 整体评估
[1-2 句:分析是否可靠?是否支持结论?]

### 数据质量
[数据质量发现摘要,对结果的影响]

### 方法论问题
1. **[标题]**:[描述,在代码/报告中的位置,建议]
2. ...

### 优点
1. [做得好的地方]
2. ...

### 可重复性
[等级评估:金/银/铜/不透明,附理由]

### 建议
- [ ] [分析师的具体行动项目]

预期结果: 评审提供了可操作的反馈,并有对代码位置的具体引用。

失败处理: 若时间有限,优先处理数据质量和泄漏检查,而非风格问题。

验证清单

  • 数据质量已从完整性、一致性、唯一性、时效性、溯源方面评估
  • 每种所用方法的统计假设均已检验
  • 数据泄漏已系统性地评估
  • 模型性能已用适当指标和基准验证
  • 可重复性已评估(代码运行,结果匹配)
  • 反馈具体,引用了代码行或报告章节
  • 语气具有建设性和合作精神

常见问题

  • 只审查代码:分析计划和结论与实现同样重要。
  • 忽视数据质量:在劣质数据上运行复杂模型会产生自信但错误的答案。
  • 将复杂性等同于正确性:95% 准确率的随机森林可能存在数据泄漏;简单 t 检验可能是正确方法。
  • 不运行代码:尽可能执行代码以验证可重复性。阅读代码是不够的。
  • 见树不见林:不要因代码风格问题而忽略根本性的分析错误。

相关技能

  • review-research — 更广泛的研究方法论和论文评审
  • validate-statistical-output — 双重编程验证方法论
  • generate-statistical-tables — 出版级统计表格
  • review-software-architecture — 代码结构和设计评审

GitHub Repository

pjt222/agent-almanac
Path: i18n/zh-CN/skills/review-data-analysis
0
agentsagentskillsai-assisted-developmentclaude-codeskillsteams

Related Skills

llamaguard

Other

LlamaGuard is Meta's 7-8B parameter model for moderating LLM inputs and outputs across six safety categories like violence and hate speech. It offers 94-95% accuracy and can be deployed using vLLM, Hugging Face, or Amazon SageMaker. Use this skill to easily integrate content filtering and safety guardrails into your AI applications.

View skill

cost-optimization

Other

This Claude Skill helps developers optimize cloud costs through resource rightsizing, tagging strategies, and spending analysis. It provides a framework for reducing cloud expenses and implementing cost governance across AWS, Azure, and GCP. Use it when you need to analyze infrastructure costs, right-size resources, or meet budget constraints.

View skill

quantizing-models-bitsandbytes

Other

This skill quantizes LLMs to 8-bit or 4-bit precision using bitsandbytes, achieving 50-75% memory reduction with minimal accuracy loss. It's ideal for running larger models on limited GPU memory or accelerating inference, supporting formats like INT8, NF4, and FP4. The skill integrates with HuggingFace Transformers and enables QLoRA training and 8-bit optimizers.

View skill

dispatching-parallel-agents

Other

This Claude Skill dispatches multiple agents to investigate and fix 3+ independent problems concurrently. It is designed for scenarios involving unrelated failures that can be resolved without shared state or dependencies. The core capability is parallel problem-solving, assigning one agent per independent problem domain to maximize efficiency.

View skill