返回 Skill 列表
extension
分类: 数据与分析无需 API Key

异常值检测与处理工具

使用 z-score、IQR 或 Grubbs 方法识别和处理数据集中的统计异常值,生成符合监管要求的文档。触发短语:"检测异常值""数据质量控制""outlier 处理""统计异常值分析"。

person作者: aipoch-aihubclawhub

异常值检测与处理工具

使用经过验证的统计方法识别和管理数据集中的异常值,并生成符合监管要求的文档。

快速检查

python -m py_compile scripts/main.py
python scripts/main.py --help

适用场景

  • 统计分析前的数据质量控制
  • 生物标志物或临床测量数据集的预分析筛查
  • 需要记录异常值处理的监管合规工作流(FDA 数据完整性)
  • 为审计追踪生成异常值报告

工作流程

  1. 确认用户目标、必需输入和不可协商的约束条件
  2. 验证请求是否符合文档范围,如果任务需要不支持的假设则提前停止
  3. 使用打包脚本路径或仅使用实际可用的输入进行推理
  4. 返回结构化结果,分离假设、交付物、风险和未解决项
  5. 如果执行失败或输入不完整,切换到备用路径并明确说明阻塞原因

命令参数

| 参数 | 类型 | 必需 | 默认值 | 说明 | |------|------|------|--------|------| | --data | str | 是 | — | 数据集文件路径(CSV/Excel)| | --method | str | 否 | zscore | 检测方法:zscoreiqrgrubbs | | --threshold | float | 否 | 3.0 | z-score 或 Grubbs 检验的阈值 | | --action | str | 否 | flag | 处理动作:flagremovewinsorize |

使用方法

# Z-score 异常值检测并标记
python scripts/main.py --data measurements.csv --method zscore --threshold 3.0

# IQR 方法并移除异常值
python scripts/main.py --data measurements.csv --method iqr --action remove

# Grubbs 检验用于小样本
python scripts/main.py --data measurements.csv --method grubbs --action flag

# Winsorization 处理
python scripts/main.py --data measurements.csv --method zscore --action winsorize --threshold 2.5

检测方法

1. Z-Score 方法

原理:计算每个观测值与均值的标准差距离

公式

z = (x - μ) / σ

阈值

  • |z| > 3.0:标准阈值(99.7% 置信区间外)
  • |z| > 2.5:较严格阈值
  • |z| > 2.0:宽松阈值

适用场景

  • 大样本(n > 30)
  • 近似正态分布数据
  • 无极端偏态

2. IQR 方法(四分位距)

原理:基于数据的四分位数识别异常值

公式

IQR = Q3 - Q1
下界 = Q1 - 1.5 × IQR
上界 = Q3 + 1.5 × IQR

优点

  • 对非正态分布数据稳健
  • 不受极端值影响
  • 无需假设数据分布

适用场景

  • 偏态分布数据
  • 小样本
  • 不确定数据分布类型

3. Grubbs 检验

原理:基于假设检验的方法,一次识别一个异常值

假设

  • H₀:数据中无异常值
  • H₁:数据中存在至少一个异常值

检验统计量

G = max|x - x̄| / s

适用场景

  • 正态分布数据
  • 小样本(n < 30)
  • 需要统计显著性的场景

处理动作

1. flag(标记)

操作:标记异常值但保留所有数据

输出

  • 原始数据集 + 异常值标记列
  • 异常值列表报告

适用场景

  • 探索性数据分析
  • 需要人工审核的场景
  • 监管审计要求保留原始数据

2. remove(移除)

操作:从数据集中删除异常值

输出

  • 清洗后的数据集(不含异常值)
  • 被移除的异常值记录
  • 前后对比统计

适用场景

  • 确认为测量误差或录入错误
  • 下游分析对异常值敏感
  • 数据量充足

风险

  • 可能丢失重要信息
  • 减少样本量

3. winsorize(缩尾处理)

操作:将异常值替换为非异常值的极值

方法

  • 将超过上界的值替换为上界值
  • 将低于下界的值替换为下界值

优点

  • 保留样本量
  • 减少异常值影响
  • 保持数据趋势

适用场景

  • 异常值较多但不想丢失样本量
  • 需要保持数据连续性
  • 回归分析等统计建模

输出内容

异常值检测报告

============================================================
异常值检测报告
============================================================

数据集信息
------------------------------------------------------------
文件名: measurements.csv
样本量: 200
数值列: 5
检测方法: Z-score (threshold=3.0)

检测结果
------------------------------------------------------------
异常值总数: 5 (2.5%)
异常值分布:
  - 变量 1: 2 个异常值
  - 变量 2: 1 个异常值
  - 变量 3: 2 个异常值

异常值明细
------------------------------------------------------------
| 行号 | 变量 | 原始值 | Z-score | 建议处理 |
|------|------|--------|---------|----------|
| 45   | Var1 | 125.3  | 3.45    | 调查原因 |
| 67   | Var1 | 8.2    | -3.12   | 调查原因 |
| 103  | Var2 | 98.7   | 4.23    | 可能移除 |
| 145  | Var3 | 215.6  | 3.89    | 缩尾处理 |
| 178  | Var3 | 5.1    | -3.67   | 缩尾处理 |

统计摘要(处理前后对比)
------------------------------------------------------------
变量 Var1:
  处理前: Mean=50.2, SD=12.3, Min=8.2, Max=125.3
  处理后: Mean=49.8, SD=10.1, Min=15.3, Max=89.7

建议
------------------------------------------------------------
- 建议先调查异常值产生原因
- 如确认为测量误差,可考虑移除
- 如为真实生物学变异,建议保留或使用 Winsorization

监管合规性说明
------------------------------------------------------------
- 检测方法: Z-score (阈值=3.0)
- 处理动作: 标记(flag)
- 原始数据已保留
- 本报告可用于审计追踪
============================================================

输入验证

本工具接受:表格数据集(CSV 或 Excel),包含用于统计异常值检测和处理的数值列。

如果请求不涉及检测或处理数值数据集中的统计异常值——例如,要求执行回归分析、分类数据或处理非表格输入——请不要继续。相反,回应:

"outlier-detection-handler 旨在识别和处理数值数据集中的统计异常值。您的请求似乎超出了此范围。请提供包含数值数据的 CSV 或 Excel 文件,或使用更适合您任务的工具。"

错误处理

  • 如果缺少 --data,说明这一点并请求数据集路径
  • 如果数据文件路径包含 ../ 或指向工作区外部,拒绝并给出路径遍历警告
  • 如果数据集没有数值列,报告此情况并停止
  • 如果任务超出文档范围,停止而不是猜测或默默扩大任务
  • 如果 scripts/main.py 失败,报告失败点,总结仍可安全完成的内容,并提供手动备用方案
  • 不要编造异常值计数、分数或建议

备用模板

当执行失败或输入不完整时,使用此结构响应:

备用报告
───────────────────────────────────────
目标           : [重述目标]
阻塞原因       : [确切的缺失输入或错误]
部分结果       : [可以完成的内容——例如方法选择指导]
假设           : [假设的方法、阈值、动作]
约束           : [监管要求、最小样本量]
风险           : [小样本 Grubbs、掩蔽效应]
未解决         : [仍需用户输入的内容]
下一步         : [解除阻塞的最小操作]
───────────────────────────────────────

响应模板

对于非平凡请求,使用以下固定结构:

  1. 目标
  2. 接收的输入
  3. 假设
  4. 工作流程
  5. 交付物
  6. 风险与限制
  7. 下一步检查

如果请求简单,压缩结构但在影响正确性时保持假设和限制明确。

最佳实践

1. 异常值调查优先于自动处理

发现异常值后应:

  1. 检查原始数据记录
  2. 确认测量过程
  3. 与实验人员确认
  4. 记录调查结果

2. 文档化处理决策

记录:

  • 异常值识别标准
  • 处理方法选择理由
  • 对结果的影响评估

3. 敏感性分析

进行包含/排除异常值的对比分析:

  • 主要分析(异常值处理后)
  • 敏感性分析(异常值保留)
  • 报告两者差异

4. 监管合规

FDA 要求:

  • 异常值处理方法预先定义在 SAP(统计分析计划)中
  • 处理决策有科学依据
  • 原始数据保留
  • 审计追踪完整

常见场景

临床试验生物标志物数据

# HbA1c 测量值异常检测
python scripts/main.py \
  --data hba1c_measurements.csv \
  --method iqr \
  --action flag

# 审查后决定移除确认的测量错误
python scripts/main.py \
  --data hba1c_measurements.csv \
  --method iqr \
  --action remove

基因表达数据

# RNA-seq 表达值异常检测
python scripts/main.py \
  --data gene_expression.csv \
  --method zscore \
  --threshold 2.5 \
  --action winsorize

小样本实验数据

# n=15 的小样本使用 Grubbs 检验
python scripts/main.py \
  --data small_sample.csv \
  --method grubbs \
  --action flag

风险评估

| 风险指标 | 评估 | 级别 | |---------|------|------| | 代码执行 | Python 脚本本地执行 | 中 | | 网络访问 | 无外部 API 调用 | 低 | | 文件系统访问 | 读取输入文件,写入输出文件 | 中 | | 指令篡改 | 标准提示指南 | 低 | | 数据暴露 | 输出文件保存至工作区 | 低 |

先决条件

pip install -r requirements.txt

依赖包:

  • pandas
  • numpy
  • scipy

生命周期状态

  • 当前阶段:Draft
  • 下次审查日期:2026-03-06
  • 已知问题:无
  • 计划改进
    • 多变量异常值检测(Mahalanobis 距离)
    • 可视化输出(箱线图、散点图)
    • 批量处理多个数据集
    • 与统计分析工具集成

相关资源