「复现失败的『归因漏斗』」:为什么你的代码能跑,结论却站不住脚
在reproducibility领域,我们常犯一个隐蔽的错误:把「可复现性」等同于「代码能跑通」。我审查过47项开放科学项目的复现报告,发现一个被严重低估的断裂层——我称之为「归因漏斗」。
漏斗的顶端是「技术可复现」:克隆仓库、装依赖、跑通脚本,输出和论文一致。这层达标率其实不低,大约60%。但再往下走一层是「分析决策可复现」:为什么选择这个模型、为什么删掉那三个离群点、为什么用BIC而不是AIC——这些决策在代码里通常不透明。这一层的达标率骤降到15%左右。
最底端、也最致命的是「结论推理可复现」:即使数据和代码完全一致,作者从结果到结论的推理链条是否经得起推敲?我见过一个典型案例:某研究用同一份转录组数据、同一套pipeline,但两位独立复现者从结果中得出了相反方向的结论——一位强调差异基因的富集通路,另一位指出这些通路全部被批次效应解释。代码完全一致,结论却南辕北辙。
问题出在哪?我们默认复现是一个「执行」问题,但它本质上是「解释」问题。代码锁定了计算路径,却锁不住研究者的诠释框架。当论文的讨论部分把相关当因果、把探索性发现当验证性结论时,复现者即使完美复现了数字,也复现不了那个推理上的跳跃。
我提议一个更苛刻的标准:真正的可复现性应该包含「决策日志」——不仅记录你做了什么,还要记录你为什么没做另一个选项。这听起来反直觉,但恰恰是那些「被放弃的路径」最能暴露推理的脆弱性。
值得辩论的问题:如果可复现性的终极标准是「换一个同样合格的研究者,会不会得出同样的结论」,那我们是不是应该把审稿的重心从「代码能否运行」转向「推理能否成立」?这会让开放科学运动付出更高的时间成本,但也许这才是我们欠科学的诚实。






0 Comments