AI 能不能复现一篇实证论文?美国经济学会负责数据与代码检查的编辑团队(AEA Data Editor)的公开工作材料,已经给出了一个值得认真看的例子。在其复现模板中,可以找到面向 AI 的代码检查说明,以及协助运行复现包、整理复现报告的任务说明。AI 被安排处理的事情很具体:阅读作者材料,检查程序能否执行,将输出与论文对应起来,再把发现写进报告。
这套模板与期刊的数据代码检查有直接联系:AEA 的官方 FAQ将它列为检查流程的参考,并说明会在合理的时间与计算资源范围内运行代码、核对输出。但模板提供了 AI 协作方法,并不意味着所有论文都已交给 AI 自动复现。尤其值得注意的是,报告整理说明明确把最终批准留给人。AI 可以参与复现工作,检查结论仍需要有人负责。
这个例子的价值在于,它把一个宽泛的问题变成了可以逐项核对的任务。判断 AI 是否有用,要看它能否找到正确的计算入口、完成有依据的运行、解释结果之间的差异,并交付一份研究者能够检查的记录。仅仅生成一段看起来合理的程序,或者宣布“复现成功”,都不足以回答这些问题。
复现论文,首先要明确复现什么
一篇实证论文通常同时包含研究问题、数据处理、统计计算和结果解释。拿到作者的数据与代码,在相应条件下重新得到论文中的图表,是其中一类任务;重新收集数据,检验同一结论是否仍然成立,则是另一类任务。美国国家科学院等机构的报告区分了这两种含义:前者侧重计算可复现性,后者关注使用新数据的独立重复研究。讨论 AI 论文复现时,需要先说明自己指的是哪一种。
AEA 模板中的运行与结果核对,主要对应前一种情形。作者交出材料,检查者沿着这些材料重做计算,判断论文报告的结果能否得到支持。即使每个系数都一致,也只说明这套材料能够产生相应输出。变量能否代表研究概念、识别假设是否可信、结论能否推广到其他人群,仍需要进一步论证。计算复现为这些讨论提供基础,却不能代替它们。
反过来,结果没有对上,也不能直接推出研究造假。软件版本、随机计算、文件缺失、运行顺序或未说明的数据处理,都可能造成差异。有些差异来自记录不完整,有些需要作者解释,还有些可能暴露实质性错误。复现工作的第一步是确定差异发生在哪里、影响了什么;在原因尚未查明时,给整篇论文下结论会超过现有证据。
AI 先要找到正确的材料和计算入口
复现包里有代码,并不代表检查者已经知道应该运行什么。一份项目可能同时保留数据清理程序、早期分析、正式回归、附录检验和作图文件。如果 AI 随便挑一个文件开始执行,即使得到了结果,也未必是在复现论文最终使用的分析。入口程序、运行顺序和图表对应关系,决定了后续检查有没有明确对象。
AEA 的复现运行说明要求先阅读作者说明、盘点代码,并寻找作者提供的主程序。这类工作适合由 AI 辅助:它可以把分散在说明文件和程序中的信息整理出来,列出数据输入、依赖软件和预期输出,指出缺失的步骤。遇到没有说明的条件,应把它列为待确认事项;自行猜一个顺序再顺利运行,并不能证明猜测与作者的实际计算一致。
数据是否可得也需要单独处理。实证研究可能使用受限微观数据、商业数据库或只能在指定环境中访问的材料。本地目录里没有某个文件,不一定意味着作者没有提供数据;检查者可能尚未取得权限,或者拿到的只是完整存档的一部分。AI 需要根据数据说明、文件清单和授权范围判断能检查到哪一步。无法取得的材料,应明确记录为当前无法验证,不能用模拟数据替换后宣称已经复现原结果。
程序运行结束,还要检查实际完成了什么
代码执行比材料整理更接近复现目标,但“进程结束”仍然是一个过于粗糙的判断。在多层脚本中,外层程序可能正常退出,内部统计命令却已经报错;计算也可能因内存不足或运行时间限制而中断。文件夹中留下的图表还可能来自上一次运行。若只看退出状态或是否存在输出文件,就容易把不完整的计算当成成功。
AEA 模板专门提醒检查日志、结束标记和实际执行的命令,这体现了 AI 可以承担的一类细致工作:把运行记录与预期步骤对照起来。缺少软件依赖、读不到输入文件、某条命令失败、计算资源不足,应该分别报告,因为解决办法不同。一次失败需要更多内存,与程序的模型设定有误,是两件不同的事;报告混在一起,作者和检查者都难以继续处理。
修复也需要保留边界。把作者电脑上的绝对路径改为当前目录,通常不改变统计分析;删除一批观测、改换标准误或替换估计方法,则可能改变研究结果。AI 为了让程序跑通而修改后者,会让复现对象发生变化。任何修改都应留下记录,涉及样本、变量或估计设定的调整,更需要明确确认其理由。保留原程序与修改后的版本,才能说明最后得到的结果究竟来自哪里。
对上论文中的结果,才有可讨论的复现证据
设想论文某张表报告了一个核心解释变量的回归系数。AI 运行代码后,发现新结果与表中的数字不同。如果只要求它“修到一致”,它可能尝试改变量、换样本或调整模型,直到输出接近目标。这种做法只是在寻找一个能生成目标数字的程序,已经偏离了核对作者材料的任务。
更有意义的检查,是先确定比较的两边是否对应同一个分析:论文中的这一列使用了哪些样本、控制变量和固定效应,标准误如何计算,程序生成的是正文结果还是附录结果。若系数相近而标准误明显不同,就需要查看推断设定;若样本量先发生变化,则要沿着缺失值处理、合并与筛选步骤检查。每个差异都应指向可以继续核对的条件,而不是靠猜测补上一个解释。
即使两个结果只差在末位小数,也需要结合计算性质判断。确定性的计算、带随机模拟的估计,以及迭代求解的算法,对环境和随机状态的敏感程度并不相同。合理的比较应说明精度与条件,不能默认所有差异都无关紧要,也不能要求所有算法在任何环境中逐位一致。AI 可以整理差异、定位相关代码;差异是否改变论文的论证,需要研究者依据具体分析判断。
| 已获得的证据 | 可以支持的判断 | 还需要核对什么 |
|---|---|---|
| 找到了作者说明的入口和输入文件 | 可以开始按指定流程运行 | 数据权限、版本与依赖是否满足 |
| 日志显示预定步骤完成 | 本次运行完成了这些计算 | 输出是否为本次生成、是否对应论文 |
| 某张表的样本量、系数和标准误一致 | 这一结果在所记录条件下得到复现 | 其他表格、图形和附录结果 |
| 改动模型后得到了接近的数字 | 修改后的程序产生了这些结果 | 修改是否有依据,是否仍是原分析 |
| 受限数据无法取得 | 当前检查存在明确的材料限制 | 获得授权后能否继续验证 |
复现报告需要让别人能够继续核查
AI 的交付物不应只有一句“成功”或“失败”。一份有用的报告需要说明:检查的是哪个版本的材料,使用了什么环境,执行了哪些入口,对照了哪些图表,发现哪些差异,以及哪些部分没有完成。对于每项结论,都应能找到对应的日志、输出或代码位置。研究者拿到报告之后,应当可以检查结论,或者从尚未解决的地方继续工作。
例如,“表 2 已复现”应有实际比对支持;如果只运行了生成表 2 的程序,却没有读到论文中的表格,就只能说明程序运行到了这一步。同样,“未复现附录图”需要区分程序出错、材料不足和时间不够。前者可能需要修复,中间一种需要补充材料,最后一种则可能只是本轮工作尚未覆盖。保留这些区别,比给整份复现包贴一个笼统标签更有帮助。
AEA 的报告整理任务把初步发现汇总为可供审核的材料,并保留人工批准。这种安排也适用于研究者自己的工作:AI 可以帮助查找、执行和整理,人依据证据决定如何处理问题。需要特别留意的是,该模板主要面向 AEA Data Editor 的内部工作,包含相应环境与流程约定。阅读它能够借鉴检查方法,但不能据此认为下载模板就获得了相同的数据访问条件或完整审核能力。
作者怎样让自己的论文更容易被复现?
对论文作者来说,准备复现包的关键,是让另一位研究者不必猜测你的计算过程。AEA 的数据与代码政策要求适用论文提供支持复现的材料和说明,并为非公开数据规定相应处理方式。作者需要交代数据来源与访问条件、运行环境、执行方法,以及程序和论文结果之间的关系。整理工作可以参考其推荐的社会科学数据编辑 README 模板。
如果一个项目已经能从明确的入口生成最终结果,AI 就更容易帮忙核对说明和程序是否一致,寻找遗漏的依赖,整理各张图表的生成位置。如果项目依赖作者记忆中的手工操作,或者正式结果与探索阶段的输出混放,换成 AI 检查也不会让这些信息自动出现。作者先把研究过程说明白,既降低合作者接手的成本,也给自动化检查提供了可靠条件。
一个适合交给 AI 的复现请求,可以明确为:依据现有说明识别运行条件,按授权范围执行原程序,对照指定的论文图表,记录差异与修改,无法验证的部分单独列出。这样安排之后,交付标准就有了具体对象。检查者能够区分实际完成的计算、尚待解释的结果和未覆盖的材料,不必从一段笼统的“任务完成”中推断发生过什么。
AI 参与论文复现的价值,最终体现在这些可核对的工作上。它能否减少整理材料、执行程序和逐项比较的负担,可以通过实际记录检验。至于论文的结论是否成立,还需要把计算证据放回研究问题、方法和假设中讨论。AEA 的例子提供了一种务实的起点:把复现拆成有证据的任务,让 AI 参与执行,让研究者能够审核。