作业 1:用 Monte Carlo 模拟理解 PSM-DID

机器学习与因果推断

发布于

2026年4月27日

作业目标

本次作业要求你使用 Monte Carlo 模拟研究 PSM-DID 方法的识别逻辑、优势、局限和适用场景。你需要自行构造数据生成过程,比较 PSM-DID、单独 PSM 和单独 DID 的估计表现,并结合模拟结果进行严格的理论解释。最后,你需要选择一篇使用 PSM-DID 的中文或英文经济学期刊论文,评价其方法适用性与结论可信度。

本作业对应课程前六讲内容:潜在结果框架、混淆变量、DAG、匹配、工具变量、面板数据与双重差分。

背景一:Monte Carlo 模拟是什么

Monte Carlo 模拟是一种用重复随机抽样来研究统计方法性质的工具。它的核心思想是:如果我们知道真实的数据生成过程,就可以在许多次重复实验中观察不同估计方法的表现。

在因果推断中,真实世界通常看不到反事实结果,因此无法直接知道估计量是否有偏。但在模拟中,你可以自行设定:

  • 真实处理效应 \(\tau\)
  • 个体特征 \(X_i\)
  • 未观测异质性 \(\alpha_i\)
  • 时间冲击 \(\lambda_t\)
  • 处理分配机制 \(D_i\)
  • 潜在结果 \(Y_i(1), Y_i(0)\)

这样,每次模拟都能比较估计值 \(\hat{\tau}\) 与真实值 \(\tau\) 的差异。

常见评价指标包括:

\[ Bias(\hat{\tau}) = E[\hat{\tau}] - \tau \]

\[ RMSE(\hat{\tau}) = \sqrt{E[(\hat{\tau} - \tau)^2]} \]

你也可以报告标准差、中位数偏误、置信区间覆盖率,或估计值分布图。请注意,Monte Carlo 不是简单地“跑很多次代码”,而是用可控的数据生成过程检验理论命题。

背景二:PSM-DID 的基本思想

PSM-DID 将倾向得分匹配和双重差分结合起来。它通常用于政策或项目在非随机分配下实施、但研究者可以观察到处理组和控制组在政策前后的结果时。

一个典型两期设定为:

  • \(D_i = 1\) 表示个体或地区 \(i\) 接受处理
  • \(T_i = 1\) 表示处理后时期,\(T_i = 0\) 表示处理前时期
  • \(Y_{it}\) 是结果变量
  • \(X_i\) 是处理前协变量

DID 估计量比较处理组和控制组在处理前后的变化:

\[ \hat{\tau}_{DID} = [\bar{Y}_{1,post} - \bar{Y}_{1,pre}] - [\bar{Y}_{0,post} - \bar{Y}_{0,pre}] \]

PSM-DID 的做法是先基于处理前协变量估计倾向得分:

\[ e(X_i) = P(D_i = 1 \mid X_i) \]

然后在共同支持区域内为处理组寻找可比的控制组,最后在匹配后的样本上进行 DID 估计。

PSM-DID 的关键假设

你在作业中需要清楚说明并检验以下假设:

  1. 处理前协变量可观测

    匹配只能平衡可观测的处理前变量。不要使用处理后变量进行匹配。

  2. 共同支持或重叠条件

    对处理组中的个体,必须存在倾向得分相近的控制组:

    \[ 0 < P(D_i=1 \mid X_i) < 1 \]

  3. 条件平行趋势

    在给定 \(X_i\) 或匹配后的可比样本中,如果没有处理,处理组和控制组的结果变化趋势应当相同:

    \[ E[Y_i(0,post)-Y_i(0,pre) \mid D_i=1, X_i] = E[Y_i(0,post)-Y_i(0,pre) \mid D_i=0, X_i] \]

  4. SUTVA 与无提前反应

    个体之间不存在处理溢出,且处理前结果没有受到未来处理预期的影响。

  5. 稳定样本与可比测量

    处理前后样本构成、变量定义和测量方式不应发生会污染识别的系统性变化。

任务一:自行设计数据生成过程

请设计一个面板数据或重复截面数据的模拟环境。最低要求如下:

  • 至少包含一个处理前协变量 \(X_i\)
  • 至少包含处理前和处理后两个时期
  • 明确写出处理分配机制 \(D_i\)
  • 明确写出潜在结果或观测结果生成方程
  • 明确设定真实处理效应 \(\tau\)
  • 至少重复模拟 500 次
  • 可以使用 Stata、Python 或 R

你需要至少设计三个场景:

场景 目的 建议设计
场景 A DID 表现较好的基准情形 处理组和控制组满足无条件平行趋势
场景 B PSM-DID 可能优于 DID 的情形 趋势差异与处理前协变量 \(X_i\) 有关,匹配后条件平行趋势成立
场景 C PSM-DID 也可能失败的情形 存在不可观测的时间变化混淆、共同支持不足、或使用错误匹配变量

你可以增加更多场景,但不能少于三个。

任务二:比较 PSM、DID 与 PSM-DID

在每个模拟场景中,请至少比较以下三类估计方法:

  1. 单独 PSM

    使用处理后结果或结果变化作为被解释变量,在匹配样本上比较处理组和控制组。

  2. 单独 DID

    不进行匹配,直接使用全部样本估计 DID。建议同时比较不控制协变量的基础 DID,以及控制处理前协变量的 DID 回归版本,说明两者在不同数据生成机制下的差异。

  3. PSM-DID

    先使用处理前协变量进行匹配,再在匹配样本上估计 DID。

建议报告下列结果:

  • 各方法估计值的平均值
  • Bias
  • RMSE
  • 标准差
  • 估计值分布图
  • 匹配前后协变量平衡情况
  • 倾向得分共同支持图

请不要只报告“哪个方法更准”。你需要说明在什么数据生成机制下,为什么它更准或更差。

任务三:解释模拟结果背后的理论原因

请围绕以下问题进行理论分析:

  1. 当处理选择只由可观测协变量决定时,PSM 为什么可能有效?
  2. 当存在时间不变的未观测异质性时,DID 为什么可能有效?
  3. 当趋势差异依赖于 \(X_i\) 时,为什么 PSM-DID 可能优于未匹配 DID?
  4. 当存在时间变化的未观测混淆时,为什么 PSM-DID 仍然可能失败?
  5. 匹配会改变估计对象吗?你的 PSM-DID 估计更接近 ATE 还是 ATT?
  6. 共同支持不足时,为什么偏误和方差都可能恶化?

你的解释必须和模拟设计逐一对应。不要把理论部分写成泛泛的教材复述。

任务四:评价一篇使用 PSM-DID 的经济学论文

请在主流中文或英文学术期刊中选择一篇使用 PSM-DID 的论文。论文可以来自经济学、金融、管理、公共政策、劳动、产业组织、环境经济学等相关领域。

你的评价至少应包括:

  • 研究问题和处理变量是什么?
  • 作者为什么使用 PSM-DID,而不是只用 PSM 或 DID?
  • 匹配变量是否都是处理前变量?
  • 是否报告共同支持和平衡性检验?
  • DID 的平行趋势假设是否可信?作者如何检验?
  • 是否存在不可观测的时间变化混淆或政策同时发生的问题?
  • 估计结果更接近 ATE 还是 ATT?
  • 根据你的模拟经验,这篇论文的识别策略最可能在哪些条件下可信,在哪些条件下脆弱?

请完整列出论文引用信息。

提交内容

请将全部材料推送到 GitHub 或 Gitee 仓库,并提交你的仓库克隆地址。仓库中应至少包含:

  1. 研究报告

    Markdown 格式,建议 3000-5000 字。报告应包含问题背景、模拟设计、结果展示、理论解释、文献评价和结论。可以同时导出 PDF 或 Word 作为补充,但 Markdown 文件是必交材料。

  2. 可复现代码

    Stata do 文件、R 脚本、R Markdown、Python 脚本或 Jupyter Notebook 均可。代码必须能够从头生成模拟数据、运行估计并输出主要图表。

  3. 结果图表

    如果图表已经包含在报告中,可以不单独提交;否则请放入 figures/ 文件夹。

  4. 论文材料

    提交所评价论文的题名、作者、期刊、年份、DOI 或稳定链接。

  5. AI 工具使用记录

    如果使用人工智能工具辅助编程、写作、调试或文献梳理,请保留全流程记录。记录应包括你的关键 prompt、工具或 agent 的主要输出、你如何判断和修改这些输出,以及最终哪些内容被采纳。要求根据你的记录,读者可以基本复现当时的对话过程或 agent 操作结果。

评分标准

项目 权重 评分要点
Monte Carlo 设计 25% 数据生成过程清楚,真实效应明确,场景设计能对应方法假设
方法实现 20% PSM、DID、PSM-DID 实现正确,代码可复现,结果指标完整
理论解释 25% 能严格解释模拟结果背后的识别逻辑、偏误来源和估计对象变化
文献评价 20% 能结合 PSM-DID 假设评价论文适用性和可信度
写作与呈现 10% 结构清晰,图表规范,引用完整,语言准确

技术提示

Stata 可考虑使用 teffects psmatchdidregressxtdidregressreghdfepsmatch2kmatch。R 可考虑使用 MatchItfixesttidyverse。Python 可考虑使用 pandasnumpystatsmodelsscikit-learn

你可以自行实现最近邻匹配,也可以使用已有包。无论使用哪种方式,都必须说明匹配方法、卡尺或邻居数、是否放回匹配,以及如何处理共同支持。

学术诚信

可以与同学讨论思路,但每位同学必须独立完成模拟设计、代码实现和报告写作。使用 AI 工具辅助编程或写作时,必须在报告末尾说明使用方式,并在仓库中提交完整 AI 使用记录。你需要对所有代码、结果解释和论文评价结论负责。

严禁复制他人代码、报告或论文评价。引用论文、教材、网页和代码片段时必须标注来源。

建议阅读

  • Rosenbaum, P. R., & Rubin, D. B. (1983). The central role of the propensity score in observational studies for causal effects.
  • Heckman, J. J., Ichimura, H., & Todd, P. E. (1997). Matching as an econometric evaluation estimator.
  • Smith, J. A., & Todd, P. E. (2005). Does matching overcome LaLonde’s critique of nonexperimental estimators?
  • Angrist, J. D., & Pischke, J. S. (2009). Mostly Harmless Econometrics.
  • Cunningham, S. (2021). Causal Inference: The Mixtape.