一个把 耿同学(耿洪伟,2026 年掀起中国学术打假风暴的退学博士)数据打假方法论 工具化的命令行筛查器:读论文的补充材料(Supplementary Information)Excel/CSV, 用法证统计学判断里面的数字像「自然测量产生」还是「人工填写/篡改」。
⚠️ 铁律:只出预警,绝非定论;只针对论文数据,不针对任何个人。 所有统计异常都可能源自笔误、四舍五入、未披露的样本剔除、单位错误或合法派生列。 结果仅用于人工复核线索;如需追究请走期刊编辑 / 机构科研诚信办公室(RIO) 的保密渠道 (COPE 规范),切勿据此公开指控(有诽谤风险)。
| 检测 | 抓什么 | 对应案例 |
|---|---|---|
| T01 混合小数位 | 整列大多同精度、极少数不同(195只小鼠2位、1只1位) | 同济·王平 |
| T02 末位数字集中 | 某列末位数字异常集中(整列尾数全是5) | 同济·王平 |
| T03 相同小数尾 | 大量整数部分不同的值后两位却相同(64组) | 南开·陈佺 |
| T04 列间固定差/比 | 两列几乎每行相差固定常数(精准相差0.3) | 同济·王平 |
| T05 等差/等比数列 | 某列构成精确等差(公差0.43) | 上海大学·苏佳灿 |
| T06 精确/近似重复 | 高精度值精确重复,或复制后微调末位(红/绿) | 中山·康铁邦/邝栋明 |
| T07 单列过多相同 | 单列大量值完全相同(13中8同) | 上海大学·苏佳灿 |
扩展项(T08-T18):Benford、末位等值对、GRIM/GRIMMER、Carlisle 基线表等,需 scipy/scrutiny。
- 耿同学传播的
(0.01)^64概率是错的(未做多重比较校正,差约 57 个数量级)。本工具 T03 用「最大单元格 Poisson 尾 + Bonferroni×100」给出校正后的概率。 - 列分类 + 良性网格探测先行:剂量/时间设计轴、ID列、派生列、百分比/计数列会被排除或降权, 这是控制误报的头号防线。
- 独立组收敛:同测一类信号的检测(如 T02/T03 同属"数字组")只算一票; 强预警(RED) 需要 ≥2 个独立组同时报警——单个 flag 永远到不了顶档。
- 数据质量诚实:丢失尾随零精度时,相关检测自动跳过而非瞎猜。
零外部依赖即可跑核心检测(只需 Python3 + numpy + openpyxl,多数机器自带):
python3 -m geng_pro selftest # 合成脏/干净数据自测
python3 -m geng_pro scan path/to/SI.xlsx # 扫单个文件,出文本报告
python3 -m geng_pro scan SI.xlsx --json --out r.json
python3 -m geng_pro tests # 列出检测电池组可选增强(Benford / GRIM 等扩展项):pip install scipy scrutiny benford_py。
python3 -m geng_pro queue-status # 看队列进度
python3 -m geng_pro queue-next # 处理队列中下一篇 (幂等)
python3 -m geng_pro dashboard # 生成只对论文的 dashboard.htmlqueue.jsonl 每行一篇论文({id,title,doi,url,file})。queue-next 每次只处理一篇、
已处理的自动跳过——天然适合 Ralph Loop 逐篇推进 backlog。见 ralph/RALPH.md。
数据与结果默认存放 ~/.geng/(queue.jsonl / results/*.json / results/dashboard.html)。
数据管道(task#4,从 OpenAlex 自动拉论文+SI)会用 OpenAlex 的「polite pool」。 把你自己的邮箱设进环境变量可拿到更好的限流:
export GENG_MAILTO=you@example.com。