提升社会科学领域的计算可重复性 (computational reproducibility:用同一份数据 + 同一套代码 + 同一流程,能复现出论文中的表、图、系数),不是单靠"把代码传上网"就能解决的,而是研究流程、制度激励、工具环境和学科文化一起改。
下面按"作者 → 期刊/机构 → 教学与生态"三层给可操作框架。
一、作者层:把"可复现"写进研究流水线
1. 项目一开始就用可复现结构
推荐目录:
project/
├── data/
│ ├── raw/ # 原始数据,只读
│ ├── interim/ # 中间数据
│ └── analysis/ # 最终分析数据
├── code/
│ ├── 01_clean.do / .R / .py
│ ├── 02_construct_variables.R
│ └── 03_analysis.R
├── outputs/
│ ├── tables/
│ └── figures/
├── docs/
│ └── README.md
├── environment.yml / renv.lock / requirements.txt
└── master_run.R / run_all.do
核心原则:一个主脚本可从原始数据跑出所有结果。
2. 数据:可获取、可理解、可合规
-
公开数据:给 DOI、版本、下载日期、清洗步骤。
-
受限数据(调查、行政、平台、问卷):至少提供
-
数据字典(codebook)
-
变量构造规则
-
访问路径与申请方式
-
脱敏/聚合后的可复现替代集
-
-
不用"最终数据集从天而降",要保留
raw → analysis的转换脚本。
3. 代码:不是"能跑",而是"别人能跑"
最低要求:
-
无手动改 Excel、无隐藏单元格、无"本地路径 C:/Users/xxx"
-
随机过程设种子(
set.seed/np.random.seed) -
主脚本从头跑到尾
-
跑两次结果一致(stability)
-
输出表/图与正文一一对应
进阶:
-
R 用
renv,Python 用venv/poetry/conda,记锁文件 -
复杂依赖用
Docker -
用 R Markdown / Quarto / Jupyter 做"代码+结果+文字"一体
4. 预注册与透明报告
-
实验/RCT:AEA Registry、EGAP、OSF、AsPredicted
-
观察性研究/元分析:OSF、PROSPERO
-
区分验证性分析 和探索性分析,别把事后解释包装成事前假设
-
用 TOP Guidelines 自查:数据、代码、材料、分析计划、报告清单
二、期刊 / 基金 / 机构层:把可复现变成硬约束
很多社科可重复性差,不是作者不会,而是**"做了没奖励,不做没代价"**。
1. 期刊政策(最有效)
-
投稿时交:数据说明 + 代码 + README + 输出日志
-
录用前做 computational check:第三方用作者包复现主结果
-
发"可复现徽章 / Reproducible Research Seal"
-
接受 Registered Reports:先审设计,结果不显著也发
例子:
-
World Bank:DIME Analytics 做独立复现验证,给可复现印章
-
国内《经济研究》《经济学季刊》《管理世界》《经济科学》等已推代码/数据政策
2. 基金与考核
-
基金结题必须交 replication package
-
晋升/考核中承认"复现研究、数据论文、代码仓库、预注册"
-
把"被复现次数 / 数据包引用"纳入影响力指标
3. 受限数据场景的折中
不是"要么全公开,要么不可复现":
-
受控访问仓库(data enclave)
-
虚拟复现(作者在干净环境跑,审核员远程看日志)
-
合成数据 / 加噪数据 / 聚合数据
-
详细伪代码 + 中间统计量
三、社科特有难点:不能只套自然科学模板
| 难点 | 表现 | 对策 |
|---|---|---|
| 数据不可公开 | 问卷、访谈、平台数据、政府行政数据 | 受控库、虚拟验证、透明化流程 |
| 定性研究 | 编码、语境、解释依赖人工 | 共享编码手册、匿名转录、active citation |
| 观察性数据 | 样本、权重、固定效应、稳健性设定多 | 多宇宙分析(multiverse)、很多分析师(many analysts) |
| 网络/空间自相关 | 个体不独立 | 复现时固定网络/地理边界 |
| 软件生态杂 | Stata/R/Python/MATLAB/Excel 混用 | README 写清版本,Excel 必须留步骤 |
四、用 AI 提效,但别制造"伪可复现"
AI 可帮:
-
自动写 README、codebook、变量说明
-
检查路径/硬编码/缺失依赖
-
生成复现检查清单
-
把 Stata 脚本转 R/Python 草稿
但 AI 不能代替:
-
真实跑通
-
随机种子管理
-
数据权限确认
-
对"为什么这样构造变量"的方法论解释
可复现不是"AI 说能跑",是陌生人在别处真跑出一样的数。
五、可落地的"社科可复现成熟度模型"
0 级:只有论文,无数据无代码
1 级:有代码,但跑不通 / 路径写死
2 级:有数据说明 + 代码 + README,他人可复现主结果
3 级:原始→分析全流水线 + 环境锁定 + 预注册
4 级:独立审核员复现通过 + 受限数据有合规方案
5 级:可复现作为知识基础设施(被复现、被复用、被教学)
六、一句话总结
社会科学计算可重复性的关键,不是"更聪明的方法",而是把经验研究当成可交付的工程产品:数据有来源、代码有顺序、环境有锁定、结果有人复现、制度给奖励。