Stata:RDD与RKD的最优模型选择-pzms
👇 连享会 · 推文导航 | www.lianxh.cn
🍎 Stata:Stata基础 | Stata绘图 | Stata程序 | Stata新命令 📘 论文:数据处理 | 结果输出 | 论文写作 | 数据分享 💹 计量:回归分析 | 交乘项-调节 | IV-GMM | 时间序列 | 面板数据 | 空间计量 | Probit-Logit | 分位数回归 ⛳ 专题:SFA-DEA | 生存分析 | 爬虫 | 机器学习 | 文本分析 🔃 因果:DID | RDD | 因果推断 | 合成控制法 | PSM-Matching 🔨 工具:工具软件 | Markdown | Python-R-Stata 🎧 课程:公开课-直播 | 计量专题 | 关于连享会
连享会 · 2022 面板数据因果推断专题
作者:高净鹤 (东北财经大学)
邮箱:jh.gaook@gmail.com
编者按:本文主要参考自下文,特此致谢!
Source:Kettlewell N, Siminski P. Optimal model selection in RDD and related settings using placebo zones[J]. Life Course Centre Working Paper, 2020 (21). -PDF-
温馨提示: 文中链接在微信中无法生效。请点击底部「阅读原文」。或直接长按/扫描如下二维码,直达原文:
目录
1. 简介
2. 理论背景
3. Stata 实操
3.1 命令介绍
3.2 命令应用
4. 注意事项
4.1 在模糊 RDD 和 RKD 上的应用
4.2 如何为安慰剂区检验设定最大的带宽?
4.3 允许异质性的处理效应
5. 相关推文
1. 简介
断点回归 (RDD) 和拐点回归 (RKD) 是实证经济学中重要的工具。然而,估计方法的变化是多维度的,如带宽、函数形式、核密度、协变量等,并且在阈值两侧也可以不一致,这使得研究中在实证中通常要面临许多潜在估计方案的选择。在特定的应用情境下,估计值可能会因研究人员的选择而存在较大差异。虽然在模型选择过程中存在各种指导准则,但这些准则通常只针对其中一个维度。
本文提出了一种用于 RDD、RKD 和相关 IV 估计模型选择的新方法。该方法允许产生带宽、多项式和任何其他选择参数的最佳组合。同时,这种方法还可以告知模型类别的选择 (例如 RDD 与 cohort-IV) ,以及任何其他选择,包括协变量、核密度或其他权重等。
2. 理论背景
参考精确 RDD 模型,考虑一个随机样本 ,,其中 和 分别为接受和未接受处理的潜在产出。处理 由超过 这一阈值的驱动变量所决定,即 。因此观察到的样本 满足 。
感兴趣的参数是在阈值处的平均处理效应 。 的候选估计方式有很多,在一些充分的条件下,本文的模型选择方法最终收敛于 的所有估计方式中具有最低 的估计方式,那么该方法是渐进最优的。随着安慰剂区重复次数 趋于无穷大,连续安慰剂阈值之间的距离保持不变。
为了建立渐进最优性,就要证明对于每一种候选估计方式,阈值估计的 与每个相关安慰剂估计的 相同,即要证明:
其中,其中 是每个安慰剂阈值的位置, 是用于此估计方式的带宽。对于每个候选估计方式,我们观察每个 的 。因为 ,所以 。如果等式 (1) 成立,那么 与 无关,且 。
本文在以下假设条件下证明等式 (1) 成立:
是均匀分布的; 和 同方差; 和 关于 的条件期望是连续的、平滑的,并且四阶导数为零; 平均处理效应关于 的二阶导数为零。
考虑一组局部线性候选估计方式,每个估计量具有独特的对称带宽 。 表示带宽为 的局部线性估计的处理效应。估计的处理效应是 。其中 和 可以使用阈值两侧的两个独立线性回归来估计。为简单起见,去掉下标 ,这些回归方程为:
类似地,定义 为在安慰剂阈值 (真正的断点为零) 处的断点估计,使用的是与上述相同的局部线性估计和带宽。,其中 和 是来自以下回归的估计:
任意估计方式的处理效应的 为:
对于每一个局部线性回归, 是两个回归 (式 2 和式 3) 的方差及估计量偏差的函数:
假设 (3) 和 (4) 意味着真正的 DGP,采用以下形式:
换句话说,这些假设意味着 CEF 可以是全局立方的,在阈值处有潜在的断点 和拐点 。在 CEF 条件下, 和 是式 (2) 和 (3) 中线性回归的省略变量,而 和 。因此使用线性模型估计 和 是有偏差的。使用遗漏变量偏差公式:
其中, 是 对 估计的常数项:
是 对 估计的常数项:
同样,
因此,
然而,,,因此
。接下来证明 ,对于 。替换 ,式 (4) 和 (5) 等价于:
式 (8) 中的 DGP 可以表示为:
展开式 (17) 并且合并同类项:
其中,,,。式 (18) 也可以做类似的展开。式 (15)、(16)、(19) 分别等价于式 (2)、(3)、(8)。
如上所示,RDD 估计值的偏差仅与真实 DGP 的 CEF 三阶导数成正比。式 (19) 中的三阶导数 与式 (9) 中的相同,因此对于 。
在给定假设 (1) 和 (2) 的情况下,很容易证明 。因此,,在假设 (1)-(4) 下,本文的方法满足渐进最优性。
🍎 连享会 · 2022 面板数据因果推断专题课程
👇 点击下方海报可了解课程详情!
👇 也可扫码获取课程介绍
3. Stata 实操
3.1 命令介绍
命令安装:
net des pzms
net install pzms.pkg, replace
net get pzms.pkg, replace // 范例数据
命令语法
pzms depvar runvar [if] [in], maxbw(real) [options]
其中,maxbw(real)
用于估计的最大带宽。options
包括:
c(#)
:处理效应的断点值,默认为零。minbw(#)
:用于估计的最小带宽,未指定时被设置为0.1*maxbw
。pzrange(# #)
:安慰剂区的范围,在用maxbw
中指定的值划分该范围时,必须在其内部包括c(#)
。默认值是驱动变量的全部范围。p(#)
:估计时要考虑的多项式阶数,默认为 1,即线性候选模型;当指定为 2 时,将同时考虑线性和二次项。deriv(#)
:指定候选模型的导数阶数,精确 RDD 默认是 0,精确 RKD 默认为 1。pzstenum(#)
:要执行的安慰剂区迭代的次数,为最大迭代次数。如果还指定了pzstepsize
,则不能使用pzstepnum
。如果pzstepnum
和pzstepsize
都没有指定,则默认值为 50。pzstepsize(#)
:连续安慰剂阈值之间的距离,如果还指定了pzstepnum
,则不能使用pzstepsize
。bwstepnum(#)
:最大带宽maxbw
和最小带宽minbw
之间的带宽数。如果没有指定bwstepnum
或bwstepsize
,则默认为 20。bwstepsize(#)
:考虑的候选估计之间的带宽增加 (以驱动变量为单位)。nolog
:不显示迭代计数。vce(string)
:指定标准误的类型。可以使用任何可用于 Stata 命令回归的vce
。默认是同方差标准误差。covs(varlist)
:指定要包含在候选模型中的协变量。如果选择了这个选项,将为每一级多项式p(#)
、有和没有协变量都估计一个模型。例如,如果指定p(2)
,将有四个模型进行比较,即无协变量的线性模型、有协变量的线性模型、无协变量的二次模型和有协变量的二次模型。kernel(string)
:核密度类型。支持均匀核密度uniform
和三角核密度triangular
。默认为uniform
。weight(varname)
:指定分析权重。除mcustom#
中指定的模型外,该权重将应用于考虑的每个模型。collapse(string)
:实现算法之前在驱动变量的水平上折叠数据。如果指定了collapse(weight)
,则估算值将根据折叠箱对应的观测数进行加权。如果不希望在数据折叠时对观测频率使用权重,则使用collapse(noweight)
。当驱动变量是离散的,并且有许多观测值或安慰剂区迭代时,折叠选项可以大大提高速度,而不会影响估计。bwlfix(#)
:在阈值左侧固定带宽长度。当受数据限制,如左侧带宽较短,右侧带宽较长时,或者研究非对称带宽,通常使用该选项。bwrfix(#)
:在阈值右侧固定带宽长度。donut(# #)
:生成一个核密度图,描述最优模型的安慰剂估计的分布。该图使用 Stata 的kdensity
命令和默认设置。pzplot
:删除指定范围内的观测值。第一个#
指定在该值内的驱动变量的观察值将被删除。第二个#
指定在这个驱动变量的值中,在临界值右边的观察值将被删除。mcustom#(# #, mcustom_options)
:自定义特性候选集模型。通过使用mcustom1()
,mcustom2()
等,可以指定多达 10 个自定义模型。mcustom
中的第一个参数是处理阈值左侧的多项式阶数,第二个参数是右侧的多项式阶数。例如,如果想估计一个左边是线性的,右边是二次的模型,可以指定mcustom(1 2)
。mcustom_options
包括:covs(varlist)
:指定要包含在自定义模型中的协变量。kernel(kernal type)
:在自定义模型中核密度类型。支持均匀和三角。默认为uniform
。weight(varname)
:在自定义模型中指定分析权重。
3.2 命令应用
虽然该方法可用于在一系列维度上变化的候选估计之间进行选择,但它的主要用途是帮助 RDD 估计选择带宽和多项式阶数。
. * 使用默认设置进行模型选择和估计
. use pzms_example_data.dta, clear
. pzms y x, maxbw(0.99)
Estimated Treatment Effect Using Optimal Model Observations: 1330
Threshold: 0
vce:
---------------------------------------------------------------------------
Inference method | Coef. Std. Err. t P>|t| [95% Conf. Interval]
-------------------+-------------------------------------------------------
Homoscedastic | .29204 .01644 17.768 0.0000 0.2598 0.3243
KS rand. infer. | .29204 .013 22.466 0.0000 0.2611 0.3230
---------------------------------------------------------------------------
. * 二阶多项式和聚类标准误
. pzms y x, maxbw(0.99) p(2) vce(cluster x)
Estimated Treatment Effect Using Optimal Model Observations: 1330
Threshold: 0
vce: cluster x
---------------------------------------------------------------------------
Inference method | Coef. Std. Err. t P>|t| [95% Conf. Interval]
-------------------+-------------------------------------------------------
Robust | .29204 .01587 18.4 0.0000 0.2606 0.3234
KS rand. infer. | .29204 .013 22.466 0.0000 0.2611 0.3230
---------------------------------------------------------------------------
. * 增加带宽数和安慰剂阈值的距离
. pzms y x, maxbw(0.99) p(2) vce(cluster x) bwstepnum(25) pzstepsize(0.02)
Estimated Treatment Effect Using Optimal Model Observations: 1310
Threshold: 0
vce: cluster x
---------------------------------------------------------------------------
Inference method | Coef. Std. Err. t P>|t| [95% Conf. Interval]
-------------------+-------------------------------------------------------
Robust | .29196 .01614 18.089 0.0000 0.2600 0.3239
KS rand. infer. | .29196 .01235 23.645 0.0000 0.2653 0.3186
---------------------------------------------------------------------------
. * 考虑一个具有三角核的自定义线性函数模型,并利用最优模型绘制安慰剂估计
. pzms y x, maxbw(0.99) p(2) vce(cluster x) bwstepnum(25) ///
> pzstepsize(0.02) mcustom(1 1, kernel(triangular)) pzplot
Estimated Treatment Effect Using Optimal Model Observations: 1610
Threshold: 0
vce: cluster x
---------------------------------------------------------------------------
Inference method | Coef. Std. Err. t P>|t| [95% Conf. Interval]
-------------------+-------------------------------------------------------
Robust | .29787 .01592 18.712 0.0000 0.2664 0.3293
KS rand. infer. | .29787 .0122 24.41 0.0000 0.2721 0.3236
---------------------------------------------------------------------------
4. 注意事项
本文的方法不应被视为能毫无问题地自动选择客观最佳模型。接下来将讨论一些复杂情况和使用该方法的建议。
4.1 在模糊 RDD 和 RKD 上的应用
对于模糊 RDD 和 RKD 这些依赖于第一阶段设计的模型来说,在安慰剂区内可能不存在处理变量和驱动变量之间的第一阶段关系。在这样的模型中,一种可行的做法是,使用本文的方法为简化形式的断点 (或拐点) 选择一个估计模型,即阈值范围内结果变量的断点 (或拐点)。
4.2 如何为安慰剂区检验设定最大的带宽?
本文的方法必须为估计模型选择最大带宽,当不存在自然约束时,建议在选择最大带宽之前对数据进行检查。对于给定的模型类型,一个关键的考虑因素是处理效应估计值和带宽之间的关系。当选择某一个带宽时,处理效应发生明显变化,可以选择该带宽作为最大带宽。
4.3 允许异质性的处理效应
对不同类别的模型进行比较是困难的,因为不同类别的模型通常估计不同的参数。例如,模糊 RDD 模型估计 LATE,而 RKD 估计 MTE,本文的方法可用于比较这些模型的表现。因此使用该方法时应考虑潜在处理效应异质性的影响。考虑到将处理效应异质性施加到安慰剂区的情况,在 Kettlewell 和 Siminski (2020) 中,作者演示了如何解决这个问题。
5. 相关推文
Note:产生如下推文列表的 Stata 命令为:
lianxh 断点, m
安装最新版lianxh
命令:
ssc install lianxh, replace
专题:Stata绘图 Stata绘图:世行可视化案例-条形图-密度函数图-地图-断点回归图-散点图 专题:断点回归RDD Stata:聚束效应-bunching-另类断点回归 倒U型+RDD:利用断点回归检验 U 形关系 Stata:基于大带宽的断点分位数回归稳健推断-rdqte Stata:RDD-DID-断点回归与倍分法完美结合 RDD断点回归:多个断点多个分配变量如何处理 Stata+R:一文读懂精确断点回归-RDD RDD:离散变量可以作为断点回归的分配变量吗? RDD:断点回归可以加入控制变量吗? 断点回归RDD:样本少时如何做? Stata:断点回归分析-RDD-文献和命令 Stata:两本断点回归分析-RDD-易懂教程 Stata:时间断点回归RDD的几个要点 Stata:断点回归分析-(RDD)-文献和命令 Stata:断点回归RDD简明教程 RDD:断点回归的非参数估计及Stata实现 Stata: 两本断点回归分析 (RDD) 易懂教程 Stata: 断点回归 (RDD) 中的平滑性检验 Stata 新命令:多断点 RDD 分析 - rdmc RDD 最新进展:多断点 RDD、多分配变量 RDD
课程推荐:因果推断实用计量方法
主讲老师:邱嘉平教授
🍓 课程主页:https://gitee.com/lianxh/YGqjp
New! Stata 搜索神器:
lianxh
和songbl
GIF 动图介绍
搜: 推文、数据分享、期刊论文、重现代码 ……
👉 安装:
. ssc install lianxh
. ssc install songbl
👉 使用:
. lianxh DID 倍分法
. songbl all
🍏 关于我们
连享会 ( www.lianxh.cn,推文列表) 由中山大学连玉君老师团队创办,定期分享实证分析经验。 直通车: 👉【百度一下: 连享会】即可直达连享会主页。亦可进一步添加 「知乎」,「b 站」,「面板数据」,「公开课」 等关键词细化搜索。