Files
homeagent-sdk/tools/gengskill/README_CN.md

320 lines
12 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<p align="center">
<img src="assets/banner.png" alt="Geng Skill Banner" width="100%">
</p>
<h1 align="center">🔬 Geng Skill — 学术数据打假检测工具</h1>
<p align="center">
<strong>用数据说话,让造假无所遁形 · Inspired by "耿同学讲故事"</strong>
</p>
<p align="center">
<img src="https://img.shields.io/badge/Python-3.8%2B-3776AB?style=for-the-badge&logo=python&logoColor=white" alt="Python 3.8+">
<img src="https://img.shields.io/badge/License-MIT-22c55e?style=for-the-badge" alt="MIT License">
<img src="https://img.shields.io/badge/Version-2.0.0-7c3aed?style=for-the-badge" alt="Version 2.0.0">
<img src="https://img.shields.io/badge/Tests-24%2F24_Passed-22c55e?style=for-the-badge" alt="Tests Passing">
</p>
<p align="center">
<a href="#-快速开始">Quick Start</a>
<a href="#-工作原理">How It Works</a>
<a href="#-三种输入模式">Input Modes</a>
<a href="#-检测模块">Detection Modules</a>
<a href="#-实战案例">Example</a>
<a href="#-文档">Documentation</a>
</p>
---
## 🌟 这是什么?
**Geng Skill** 是一套基于统计学原理的学术论文数据造假检测工具包。
2026 年 4 月起,科普博主"耿同学讲故事"凭一台电脑和几个统计方法,连续揪出多所 985 高校顶尖学者的论文造假——同济大学 Nature 论文院长免职、南开大学 Nature 子刊正在调查……他证明了一件事:**造假的数据一定会留下统计学破绽。**
本项目将"耿同学"的技术方法论系统化、工具化,让任何人都能一键检测论文数据是否存在造假嫌疑。
> 💡 **核心原理**:真实实验数据具有随机性;人为编造的数据会呈现不自然的数学规律。
---
## 🚀 快速开始
```bash
# 克隆仓库
git clone https://github.com/YOUR_USERNAME/geng-skill.git
cd geng-skill
pip install -r requirements.txt
# 一键自动扫描Scale 模式)
python3 scripts/input_pipeline.py --input your_data.csv --mode scale
```
就这么简单。Scale 模式会**自动扫描所有数值列**,运行 6 种检测算法,并按嫌疑程度从高到低排列结果。
---
## 🧠 工作原理
<p align="center">
<img src="assets/architecture.png" alt="System Architecture" width="90%">
</p>
系统分为三层:
### 第一层 · 数据输入 Input Pipeline
支持 **PDF 论文**、**Excel 原始数据**、**CSV 表格** 三种格式。自动提取表格、识别数值列、标准化数据格式。
### 第二层 · 检测引擎 Detection Engine
6 个独立的统计检测模块,从不同角度分析数据异常:
| 模块 | 检测目标 | 方法 |
|------|----------|------|
| **末位数字检测** Last Digit | 末位数字集中度异常 | Chi-squared vs 均匀分布 |
| **本福特定律** Benford's Law | 首位数字分布偏离 | Chi-squared + MAD |
| **GRIM 测试** | 均值与样本量不兼容 | 离散粒度校验 |
| **固定关系检测** Fixed Ratio ⭐ | 实验组间存在完美数学关系 | 比值/回归分析 |
| **小数位一致性** Decimal | 小数部分模式重复 | 自相关 + 熵分析 |
| **图像重复检测** Image Dup | 同一图片在不同条件下重复使用 | 感知哈希 + SSIM |
### 第三层 · 输出报告 Output
生成出版级可视化图表、综合风险评分0100、以及详细的 HTML/Markdown 检测报告,精确标注每个可疑数据点。
---
## 📥 三种输入模式
<p align="center">
<img src="assets/workflow.png" alt="Workflow" width="90%">
</p>
### 模式一:论文 PDF 输入
直接从 PDF 论文中提取数据表格:
```bash
python3 scripts/input_pipeline.py --input paper.pdf --mode extract
```
### 模式二Excel / CSV 原始数据
处理从论文下载的 Supplementary Data
```bash
python3 scripts/input_pipeline.py --input supplementary_data.xlsx --mode extract
python3 scripts/input_pipeline.py --input table_s1.csv --mode extract
```
### 模式三Scale 自动扫描 ⭐(推荐)
**让工具自己去找问题。** 无需指定检测哪些列、用哪些方法——全部自动:
```bash
python3 scripts/input_pipeline.py --input data.csv --mode scale
```
Scale 模式会:
1. 自动识别所有数值列
2. 运行 6 大检测模块
3. 交叉验证各模块结果
4. 输出 **suspicion_ranking**(嫌疑排名榜)
---
## 🔬 检测模块
### ⭐ 固定关系检测(核心 · 耿同学的看家本领)
这是最致命的检测手段。如果两组"独立实验"数据之间存在**完美的固定数学关系**(比如每个样本 Treatment = Control × 2.0),那几乎可以断定是造假。
```python
from fixed_relation_test import fixed_relation_test
result = fixed_relation_test(control_data, treatment_data)
# result['risk_score'] = 95 → 检测到精确 2.0 倍关系!
```
**为什么这能定性?** 即使药物真的让蛋白表达提高 2 倍每个样本也会有生物学个体差异。20 个样本**全部**精确到小数点后多位都是 2.000 倍——概率趋近于零。
### 本福特定律检测 Benford's Law
跨越多个数量级的自然数据首位数字遵循特定概率分布1 最多9 最少)。人为编造的数据会偏离:
```python
from benford_test import benford_test
result = benford_test(values)
```
### GRIM 测试
对于整数取值的数据(如李克特量表 15 分),给定样本量 n并非所有均值都是数学上可能的
```python
from grim_test import grim_test_single
result = grim_test_single(mean='3.47', n=25, decimals=2)
# result['consistent'] = False → 这个均值是不可能存在的!
```
---
## 🧪 实战案例
### 输入:一篇可疑的生物医学论文数据
论文声称对小鼠进行了三组独立实验Control / Treatment A / Treatment B数据如下
```csv
sample_id,control,treatment_a,treatment_b
1,2.34,4.68,7.02
2,3.12,6.24,9.36
3,1.87,3.74,5.61
4,4.56,9.12,13.68
5,2.98,5.96,8.94
...
```
### 运行 Scale 模式自动检测
```bash
python3 scripts/input_pipeline.py --input data.csv --mode scale
```
### 输出:精准定位问题
```
=== Scale Mode: 自动检测结果 ===
🔴 [1.00] control ↔ treatment_a ← 精确固定比值 = 2.000
🔴 [1.00] control ↔ treatment_b ← 精确固定比值 = 3.000
🔴 [1.00] treatment_a ↔ treatment_b ← 精确固定比值 = 1.500
🟠 [0.99] treatment_a ← 末位数字分布异常
╔══════════════════════════════════════════════════════════════╗
║ 综合风险评分: 92/100 🔴 极高风险 ║
╠══════════════════════════════════════════════════════════════╣
║ 三组"独立实验"数据之间存在完美的整数倍关系。 ║
║ 在真实生物实验中,这种情况出现的概率约等于零。 ║
║ 数据极大概率为人工编造。 ║
╚══════════════════════════════════════════════════════════════╝
```
---
## 📊 风险评分体系
| 分数 | 等级 | 含义 | 建议行动 |
|------|------|------|----------|
| 025 | 🟢 低风险 | 未发现异常 | 无需干预 |
| 2650 | 🟡 中等 | 存在轻微模式,可能是正常波动 | 建议复核 |
| 5175 | 🟠 高风险 | 多项指标异常 | 深入调查 |
| 76100 | 🔴 极高风险 | 系统性异常 | 正式举报 |
**置信度规则:**
- 单一模块报警 → 标注为"待确认线索"
- 2 个以上独立模块同时报警 → 标注为"高度可疑"
- 仅当综合分 > 75 **且**多模块交叉确认时,才标注"极高风险"
---
## ⚖️ 准确性与免责声明
### ✅ 本工具能做什么
- 检测不同数据列之间的固定数学关系
- 识别数字分布的统计学异常
- 标记数学上不可能的统计报告值
- 发现重复使用/篡改的论文图片
- 提供量化的风险评估和置信度等级
### ❌ 本工具不能做什么
- 不能证明造假的主观意图
- 不能检测加了随机噪声的"高明造假"
- 不能替代领域专家的判断
- 不具备法律效力
### ⚠️ 重要声明
> **本工具仅提供统计学层面的异常筛查功能。**
> 输出结果为"疑点线索"Suspicious Indicators而非"造假判定"Fraud Determination
>
> - 统计异常可能有合理的科学解释(仪器精度限制、数据标准化处理、单位转换等)
> - 最终判定需要领域专家复核和正式调查程序
> - 通过全部检测 ≠ 数据一定真实(某些造假无法被统计方法捕获)
> - 使用者需自行承担因不当使用(如公开发布未经验证的指控)造成的一切后果
---
## 📁 项目结构
```
geng-skill/
├── scripts/ 核心引擎
│ ├── input_pipeline.py 统一输入PDF/Excel/CSV + Scale 模式)
│ ├── visualization.py 出版级可视化图表
│ ├── report_generator.py HTML + Markdown 报告生成
│ ├── geng_assess.py 综合评估引擎
│ ├── last_digit_test.py 末位数字检测
│ ├── benford_test.py 本福特定律检测
│ ├── grim_test.py GRIM 均值一致性测试
│ ├── fixed_relation_test.py 固定关系检测 ⭐
│ ├── decimal_consistency_test.py 小数位一致性检测
│ └── image_duplicate_test.py 图像重复检测
├── docs/ 完整文档
│ ├── USAGE_GUIDE.md 多平台使用指南Claude/Cursor/GPT/Codex 等)
│ ├── DATA_SOURCES.md 学术参考文献 + 数据标准 + 伦理合规
│ ├── ANNOTATIONS.md 架构图 + API 接口 + 代码注释规范
│ └── EXAMPLE_WALKTHROUGH.md 端到端完整教程
├── examples/ 示例数据
├── tests/ 单元测试24/24 通过)
└── assets/ README 配图
```
---
## 📖 文档
| 文档 | 内容 |
|------|------|
| [USAGE_GUIDE.md](docs/USAGE_GUIDE.md) | 在 Claude / Cursor / GPT / Codex / Jupyter / Docker 等平台上的使用方法 |
| [DATA_SOURCES.md](docs/DATA_SOURCES.md) | 学术参考文献、数据标准、伦理合规框架 |
| [ANNOTATIONS.md](docs/ANNOTATIONS.md) | 系统架构、API 接口规范、代码注释标准 |
| [EXAMPLE_WALKTHROUGH.md](docs/EXAMPLE_WALKTHROUGH.md) | 从一篇论文到检测报告的完整教程 |
| [SKILL.md](SKILL.md) | Skill 核心技术文档 |
---
## 🔗 学术参考
1. Benford, F. (1938). The law of anomalous numbers. *Proc. APS*, 78(4), 551572.
2. Brown, N.J.L. & Heathers, J.A.J. (2017). The GRIM Test. *SPPS*, 8(4), 363369.
3. Bik, E.M. et al. (2016). Image duplication in biomedical research. *mBio*, 7(3).
4. Nigrini, M.J. (2012). *Benford's Law*. Wiley. ISBN: 978-1118152850.
5. 余菁等 (2021). 科技论文数据造假的核查策略. *中国科技期刊研究*, 32(6), 770776.
---
## 🙏 致谢
本项目的灵感来源于 **"耿同学讲故事"**,从 2026 年 4 月开始,仅凭一台电脑和统计学方法,就揪出了多所顶尖高校教授的论文数据造假。他的工作证明了:**学术诚信监督不仅必要,而且完全可行。**
> "如果论文里的数据存在规律性,那么就明显不是在实验室实际测量的情况下生成的。"
>
> —— 耿同学
---
## 📄 开源许可
MIT License — 详见 [LICENSE](LICENSE)
---
<p align="center">
<em>让学术回归诚信,让数据说出真相。</em><br>
<em>Let academic integrity prevail. Let data speak the truth.</em>
</p>