附录 H — 复现材料导览
这份笔记回答什么:这篇论文的复现包 (replication package) 怎么组织、主程序在哪、数据分几层、能复现到什么程度。
这正是大纲要点里的核心能力:看懂一个复现包的文件夹结构、
README、主脚本和输出,并能识别哪个是主程序、哪个是数据处理、哪个是出图出表。
H.1 如何生成这份笔记
这是一篇顶刊论文的复现包。这是它的
README.md和文件目录清单。请帮我写一份中文导览,面向第一次打开复现包的初学者,包含:
- 怎么开始跑——主程序 (入口脚本) 是哪一个?运行顺序是什么?
- 文件夹结构——每个主要目录 (code / data / output 等) 是干什么的?
- 数据分几层——原始数据、中间数据、最终结果分别放在哪、什么关系?
- 能复现到什么程度——有没有不公开的数据?缺了它还能跑哪些部分?
- 软件和依赖——需要什么软件、要装哪些包?
要求:只依据我给的
README和目录,不编造文件名;不确定的地方标出来让我核对。
两种用法:直接用提示词即可 (任意 AI 助手);想更稳定可调用课程 skill 03-replication-navigator(复现包导航)。skill 说明见《AI 工作流与 skills 上手》。
Lane 的复现包官方来源是 Harvard Dataverse。为配合本次课程,仓库暂时保留完整副本,位于 examples/Lane_2025_QJE_paper_codes/replicationpackage/;课程结束后的公开范围由维护者另行决定。若克隆后数据不完整,见课程数据集说明中的下载与放置步骤。下面的导览重点讲复现包的结构与读法。
以下为示例笔记 (已人工核对)。
H.2 一句话:这个包怎么跑起来
整个复现由一个入口脚本 master.R 驱动。你只要配置好 config.yml(告诉它你的 Stata 装在哪、版本几),然后运行 master.R,它会自动按顺序:先跑 Stata 分析,再用 R 出图出表。在一台较新的机器上,完整跑一遍大约一到两小时。
master.R ← 唯一入口,你运行的就是它
├─ 1. setup/setup.do 配置 Stata 环境、装 Stata 包
├─ 2. code/0_analysis/0_master_run_analysis.do 跑全部 Stata 分析
├─ 3. setup/setup.R 配置 R 环境、装 R 包
└─ 4. code/{1_figures,2_tables,3_appendix,4_suppappendix}/*.R 出图出表
识别主程序的窍门:复现包里名字带 master、main、0_ 前缀、run 的脚本,通常就是驱动别人的主程序;被它们反复 do 或 source 调用的,才是干具体活的子脚本。
H.3 文件夹结构:每个目录干什么
| 目录 | 作用 |
|---|---|
code/0_analysis/ |
Stata 分析脚本。顶层 0_master_run_analysis.do 是总驱动,下面分 1_main_scripts/(正文)、2_appendix_scripts/、3_suppappendix_scripts/ 和 subdofiles/(工具子程序)。 |
code/1_figures/、2_tables/ |
R 出图、出表脚本,各有自己的 0_master_run_*.R。 |
code/3_appendix/、4_suppappendix/ |
附录、补充附录的图表脚本。 |
data/ |
数据,分多层 (见下节)。 |
output/ |
最终生成的图和表 (跑之前是空的)。 |
setup/ |
环境配置与装包脚本 (Stata 一份、R 一份)。 |
documentation/ |
工作流说明 WORKFLOW.md 和各数据集的字段字典 (codebook)。 |
config.yml |
你要改的配置文件:填 Stata 路径和版本。 |
正文里哪个分析对应哪个脚本,README 给了对照表,例如 1_run_growth_analysis.do 对应主增长效应、2b_run_koreatrade_analysis.do 对应贸易结果、3b_run_doublerobust_analysis.do 对应双重稳健分析——读复现代码前先看这张对照表,能省很多时间。
H.4 数据的四层关系
这是大纲特别强调的一点:原始数据 → 中间数据 → 分析样本 → 图表结果,四者不是一堆文件,而是一条流水线。
| 层 | 在包里的位置 | 是什么 |
|---|---|---|
| 原始/输入数据 | data/input/、data/policydata/ 等 |
手工数字化的制造业普查、COMTRADE 贸易、政策立法等 (含派生的行业面板 .dta/.csv)。 |
| 中间数据 | data/intermediate_datasets/ |
由 Stata 分析运行时生成的中间结果 (跑之前是空的)。 |
| 预存结果 | data/included_datasets/ |
依赖非公开数据的那几个分析,作者把算好的结果预先存进来,好让你没有微观数据也能出图。 |
| 最终结果 | output/ |
R 脚本生成的正式图和表。 |
理解这条链,你就明白:改一个图的样式,不必重跑几小时的 Stata 分析——因为 R 出图读的是 Stata 产出的中间结果 (下节)。
H.5 能复现到什么程度:分级透明
复现不是全有或全无。这个包的可复现性是分级的,README 讲得很清楚:
- 完整复现——不行:少数分析用到韩国官方微观数据和购买的 UNIDO 数据,受许可限制不公开。
- 公开数据子集——可以:包内自带的制造业面板、COMTRADE、政策数据,都能完整跑。
- R 端图表——可以:全部能出,因为依赖受限数据的中间结果已被预存在
included_datasets/。 - 受限分析的代码审查——可以:那几个跑不了的脚本,代码完整保留,你仍能读懂它的逻辑。
作者用了两个很实用的设计:一个全局开关 RUN_MICRO(设为 0 就跳过依赖受限数据的分析),以及 config.yml 里的 skip_stata(没有 Stata 许可证时,只用预存中间结果也能出图)。这种缺数据也能部分复现的透明设计,正是一个专业复现包的标志。
H.6 软件与依赖
- 软件:Stata 17+(
xtdidregress需要)、R 4.3+(建议配 RStudio)。 - Stata 包:
reghdfe、ppmlhdfe、ftools、csdid、drdid、binscatter、estout、regsave等,主 do 文件会自动从 SSC 安装。 - R 包:约 36 个 (
ggplot2、data.table、dplyr、kableExtra等),setup.R自动装。 - 随机种子在 Stata 和 R 两端都设了,保证结果可复现。