Files
homeagent-sdk/tools/gengskill/docs/EXAMPLE_WALKTHROUGH.md

12 KiB
Raw Blame History

🧪 完整示例:从数据到报告的端到端演示

本文档通过一个完整的假数据检测案例,演示 Geng Skill 的全部使用流程。


场景设定

假设你在审阅一篇生物医学论文,论文声称:

"我们分别对小鼠进行了 Control、Treatment A、Treatment B 三组实验处理, 测量了各组的蛋白表达水平(相对定量)。结果显示 Treatment A 和 Treatment B 均显著提高了蛋白表达水平。"

论文提供了以下数据(摘自 Supplementary Table 1

sample_id,control_group,treatment_a,treatment_b,measurement
1,2.34,4.68,7.02,12.5
2,3.12,6.24,9.36,15.8
3,1.87,3.74,5.61,8.9
4,4.56,9.12,13.68,22.1
5,2.98,5.96,8.94,14.3
6,3.45,6.90,10.35,17.2
7,1.23,2.46,3.69,6.8
8,5.67,11.34,17.01,28.4
9,2.01,4.02,6.03,10.1
10,3.89,7.78,11.67,19.5
11,4.12,8.24,12.36,20.8
12,1.56,3.12,4.68,7.9
13,2.78,5.56,8.34,13.6
14,3.34,6.68,10.02,16.7
15,4.90,9.80,14.70,24.5
16,1.45,2.90,4.35,7.2
17,2.67,5.34,8.01,13.1
18,3.56,7.12,10.68,17.8
19,4.23,8.46,12.69,21.2
20,1.89,3.78,5.67,9.4

步骤 1初步目视检查

一位细心的审稿人可能注意到:

  • Treatment A 的数值似乎都是 Control 的两倍
  • Treatment B 的数值似乎都是 Control 的三倍

但仅凭目测无法确认。让我们用 Geng Skill 做系统化检测。


步骤 2运行检测

2.1 命令行一键检测

cd geng-skill/scripts
python3 geng_assess.py \
  --input ../examples/fake_data_demo.csv \
  --domain biomedical \
  --output ../report/

2.2 Python API 方式

import sys
sys.path.insert(0, 'scripts')

from last_digit_test import last_digit_test
from fixed_relation_test import fixed_relation_test
import csv

# 加载数据
with open('examples/fake_data_demo.csv') as f:
    rows = list(csv.DictReader(f))

control = [float(r['control_group']) for r in rows]
treat_a = [float(r['treatment_a']) for r in rows]
treat_b = [float(r['treatment_b']) for r in rows]

# 运行固定关系检测
result = fixed_relation_test(control, treat_a, 'Control', 'Treatment A')
print(f"风险评分: {result['risk_score']}/100")
print(f"解释: {result['interpretation']}")

步骤 3检测结果详解

Module 1: 末位数字检测

┌────────────────────────────────────────────────────────────────┐
│ 检测列: control_group                                          │
│ 末位数字分布: {0:0, 1:1, 2:2, 3:2, 4:2, 5:2, 6:3, 7:3, 8:2, 9:3} │
│ χ² = 4.00, p = 0.9114                                         │
│ 结果: ✅ 正常 — 末位数字分布与均匀分布无显著差异               │
│ 风险评分: 3.5/100                                              │
└────────────────────────────────────────────────────────────────┘

解读:造假者在编造 Control 组数据时,末位数字分布还算随机。这说明末位数字检测并非万能——它无法检测"有一定水平"的造假。

┌────────────────────────────────────────────────────────────────┐
│ 检测列: treatment_a                                            │
│ χ² = 21.00, p = 0.0127                                        │
│ 结果: ⚠️ 异常 — 末位数字分布存在偏离                          │
│ 风险评分: 47.5/100                                             │
└────────────────────────────────────────────────────────────────┘

解读Treatment A 的末位数字分布出现异常。这是因为 Control × 2 导致了末位数字的非均匀映射(如原数 .34 × 2 = .68,原数 .56 × 2 = .12)。


Module 4: 固定关系检测 (核心发现)

┌────────────────────────────────────────────────────────────────┐
│ 检测对: Control vs Treatment A                                 │
│                                                                │
│ 固定比值检测:                                                  │
│   mean_ratio = 2.000000                                        │
│   std_ratio  = 0.000000                                        │
│   → 🔴 完美固定比值!所有数据点 Treatment_A = Control × 2     │
│                                                                │
│ 线性关系检测:                                                  │
│   R² = 1.0000000000                                            │
│   slope = 2.0000                                               │
│   intercept = 0.000000                                         │
│   → 🔴 完美线性关系,零残差                                   │
│                                                                │
│ 风险评分: 95/100 — 极高风险                                    │
└────────────────────────────────────────────────────────────────┘

┌────────────────────────────────────────────────────────────────┐
│ 检测对: Control vs Treatment B                                 │
│                                                                │
│ 固定比值检测:                                                  │
│   mean_ratio = 3.000000                                        │
│   std_ratio  = 0.000000                                        │
│   → 🔴 完美固定比值!所有数据点 Treatment_B = Control × 3     │
│                                                                │
│ 风险评分: 95/100 — 极高风险                                    │
└────────────────────────────────────────────────────────────────┘

┌────────────────────────────────────────────────────────────────┐
│ 检测对: Treatment A vs Treatment B                             │
│                                                                │
│ 固定比值检测:                                                  │
│   mean_ratio = 1.500000                                        │
│   std_ratio  = 0.000000                                        │
│   → 🔴 完美固定比值Treatment_B = Treatment_A × 1.5          │
│                                                                │
│ 风险评分: 95/100 — 极高风险                                    │
└────────────────────────────────────────────────────────────────┘

解读:这是最致命的发现。三组"独立实验"数据之间存在精确的整数倍关系:

  • Treatment A = Control × 2.000(精确到小数点后所有位)
  • Treatment B = Control × 3.000(精确到小数点后所有位)
  • Treatment B = Treatment A × 1.500(精确到小数点后所有位)

在真实生物实验中,这种完美的整数倍关系概率趋近于零。 即使药物真的将蛋白表达提高了2倍每个样本的响应也会有生物学变异个体差异、实验误差等绝不可能所有20个样本都精确地是2.000倍。


综合评估

╔══════════════════════════════════════════════════════════════════╗
║                    📋 综合评估结果                               ║
╠══════════════════════════════════════════════════════════════════╣
║                                                                  ║
║  🔴 综合风险评分: 92/100 — 极高风险                             ║
║                                                                  ║
║  核心证据:                                                       ║
║  • 三组"独立实验"数据存在精确整数倍关系×2, ×3, ×1.5       ║
║  • R² = 1.0,残差为零                                           ║
║  • Treatment A 末位数字分布异常p = 0.013                    ║
║                                                                  ║
║  结论: 数据极大概率为从单一数据源Control组通过简单            ║
║  乘法运算生成,而非独立实验获得。                                ║
║                                                                  ║
╚══════════════════════════════════════════════════════════════════╝

步骤 4与正常数据对比

real_data_demo.csv(模拟的正常实验数据)运行同样的检测:

检测结果:
• 末位数字: ✅ 所有列 p > 0.05
• 本福特定律: ✅ 符合
• 固定关系: ✅ 无固定比值/差值ratio_std > 1.5
• 小数位一致性: ✅ 模式多样

综合风险评分: 8/100 — 🟢 低风险

步骤 5生成正式报告

运行完成后,report/ 目录包含:

report/
├── geng_assessment_report.json    # 机器可读完整报告
└── geng_assessment_report.md      # 人类可读 Markdown 报告

报告可直接用于:

  • 向期刊提交 Letter of Concern
  • 向机构科研诚信办公室提供技术证据
  • 审稿意见中引用具体检测结果

关键教训

教训 说明
单一检测不足以定论 末位数字检测对 Control 组未报警,但固定关系检测精准命中
多模块交叉验证更可靠 末位异常 + 固定比值 + 完美线性 = 综合证据链
异常不等于造假 需要排除合理解释(如数据预处理中的标准化操作)
上下文很重要 同样的"固定比值"在"原始数据 vs 标准化后数据"场景中是正常的
工具是辅助,人是决策者 最终判断需要领域专家结合实验设计做出

对审稿人/研究者的实用建议

何时应该怀疑数据?

  1. 不同实验组数据太"干净"——没有离群值、没有异常
  2. 多组数据的 error bar 高度一致
  3. 不同条件下的重复次数完全一致
  4. 数据点"太完美"地落在预期曲线上
  5. 补充材料中的原始数据与正文图表不匹配

何时应该运行 Geng Skill

  1. 📊 审阅高利害关系的论文(顶刊/基金/职称)
  2. 📊 收到学术不端举报后需要技术验证
  3. 📊 对自己团队数据做"造假预防"自查
  4. 📊 期刊编辑部建立投稿数据审查流程

Geng Skill v1.0.0 — 完整示例演示