mirror of
https://gitcode.com/JianFeeeee/homeagent-sdk.git
synced 2026-09-20 08:58:03 +00:00
12 KiB
12 KiB
🧪 完整示例:从数据到报告的端到端演示
本文档通过一个完整的假数据检测案例,演示 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 标准化后数据"场景中是正常的 |
| 工具是辅助,人是决策者 | 最终判断需要领域专家结合实验设计做出 |
对审稿人/研究者的实用建议
何时应该怀疑数据?
- ✋ 不同实验组数据太"干净"——没有离群值、没有异常
- ✋ 多组数据的 error bar 高度一致
- ✋ 不同条件下的重复次数完全一致
- ✋ 数据点"太完美"地落在预期曲线上
- ✋ 补充材料中的原始数据与正文图表不匹配
何时应该运行 Geng Skill?
- 📊 审阅高利害关系的论文(顶刊/基金/职称)
- 📊 收到学术不端举报后需要技术验证
- 📊 对自己团队数据做"造假预防"自查
- 📊 期刊编辑部建立投稿数据审查流程
Geng Skill v1.0.0 — 完整示例演示