Files
..

Geng Skill Banner

🔬 Geng Skill — 学术数据打假检测工具

用数据说话,让造假无所遁形 · Inspired by "耿同学讲故事"

Python 3.8+ MIT License Version 2.0.0 Tests Passing

Quick StartHow It WorksInput ModesDetection ModulesExampleDocumentation


🌟 这是什么?

Geng Skill 是一套基于统计学原理的学术论文数据造假检测工具包。

2026 年 4 月起,科普博主"耿同学讲故事"凭一台电脑和几个统计方法,连续揪出多所 985 高校顶尖学者的论文造假——同济大学 Nature 论文院长免职、南开大学 Nature 子刊正在调查……他证明了一件事:造假的数据一定会留下统计学破绽。

本项目将"耿同学"的技术方法论系统化、工具化,让任何人都能一键检测论文数据是否存在造假嫌疑。

💡 核心原理:真实实验数据具有随机性;人为编造的数据会呈现不自然的数学规律。


🚀 快速开始

# 克隆仓库
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 种检测算法,并按嫌疑程度从高到低排列结果。


🧠 工作原理

System Architecture

系统分为三层:

第一层 · 数据输入 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 检测报告,精确标注每个可疑数据点。


📥 三种输入模式

Workflow

模式一:论文 PDF 输入

直接从 PDF 论文中提取数据表格:

python3 scripts/input_pipeline.py --input paper.pdf --mode extract

模式二Excel / CSV 原始数据

处理从论文下载的 Supplementary Data

python3 scripts/input_pipeline.py --input supplementary_data.xlsx --mode extract
python3 scripts/input_pipeline.py --input table_s1.csv --mode extract

模式三Scale 自动扫描 (推荐)

让工具自己去找问题。 无需指定检测哪些列、用哪些方法——全部自动:

python3 scripts/input_pipeline.py --input data.csv --mode scale

Scale 模式会:

  1. 自动识别所有数值列
  2. 运行 6 大检测模块
  3. 交叉验证各模块结果
  4. 输出 suspicion_ranking(嫌疑排名榜)

🔬 检测模块

固定关系检测(核心 · 耿同学的看家本领)

这是最致命的检测手段。如果两组"独立实验"数据之间存在完美的固定数学关系(比如每个样本 Treatment = Control × 2.0),那几乎可以断定是造假。

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 最少)。人为编造的数据会偏离:

from benford_test import benford_test
result = benford_test(values)

GRIM 测试

对于整数取值的数据(如李克特量表 15 分),给定样本量 n并非所有均值都是数学上可能的

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数据如下

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 模式自动检测

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 在 Claude / Cursor / GPT / Codex / Jupyter / Docker 等平台上的使用方法
DATA_SOURCES.md 学术参考文献、数据标准、伦理合规框架
ANNOTATIONS.md 系统架构、API 接口规范、代码注释标准
EXAMPLE_WALKTHROUGH.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


让学术回归诚信,让数据说出真相。
Let academic integrity prevail. Let data speak the truth.