👇 连享会 · 推文导航 | www.lianxh.cn
🍎 Stata:Stata基础 | Stata绘图 | Stata程序 | Stata新命令 📘 论文:数据处理 | 结果输出 | 论文写作 | 数据分享 💹 计量:回归分析 | 交乘项-调节 | IV-GMM | 时间序列 | 面板数据 | 空间计量 | Probit-Logit | 分位数回归 ⛳ 专题:SFA-DEA | 生存分析 | 爬虫 | 机器学习 | 文本分析 🔃 因果:DID | RDD | 因果推断 | 合成控制法 | PSM-Matching 🔨 工具:工具软件 | Markdown | Python-R-Stata 🎧 课程:最新专题 | 计量专题 | 关于连享会
🍓 课程推荐:2024 机器学习与因果推断专题
主讲老师:司继春 (上海对外经贸大学) ;张宏亮(浙江大学)
课程时间:2024 年 11 月 9-10 日 ;16-17日
课程咨询:王老师 18903405450(微信)
课程特色 · 2024机器学习与因果推断:
懂原理、会应用。本次课程邀请了两位老师合作讲授,目的在于最大限度地实现理论与应用的有机结合。为期四天的课程,分成两个部分:第一部分讲解常用的机器学习算法和适用条件,以及文本分析和大语言模型;第二部分通过精讲 4-6 篇发表于 Top 期刊的论文,帮助大家理解各类机器学习算法的应用场景,以及它们与传统因果推断方法的巧妙结合。 以 Top 期刊论文为范例。目前多数人的困惑是不清楚如何将传统因果推断方法与机器学习结合起来。事实上,即便是 MIT 和 Harvard 的大牛们也都在「摸着石头过河」。为此,通过论文精讲和复现来学习这部分内容或许是目前最有效的方式了。张宏亮老师此前在浙江大学按照这一模式教授了「因果推断和机器学习」课程,效果甚佳:学生们能够逐渐建立起研究设计的理念,并在构造识别策略时适当地嵌入机器学习方法。
作者:李烨阳 (浙江大学)
邮箱:li_yeyang95@163.com
温馨提示: 文中链接在微信中无法生效。请点击底部「阅读原文」。或直接长按/扫描如下二维码,直达原文:
编者按:本文主要参考自下文,特此致谢!
Source:Oberfichtner M, Tauchmann H. Stacked linear regression analysis to facilitate testing of hypotheses across OLS regressions[J]. The Stata Journal, 2021, 21(2): 411-429. -PDF-
目录
1. 引言
2. 命令应用场景
3. 堆叠数据回归
4. 命令介绍
5. 应用实例
6. 相关推文
1. 引言
在连享会之前的推文中,已经对组间系数差异检验方法进行了较为系统的介绍,相关推文如下:
推文 | 主要介绍的方法 |
---|---|
Stata: 如何检验分组回归后的组间系数差异? | 系统性方法总结 引入交叉项 基于似无相关模型的检验方法 基于组合检验的方法 |
Stata:虚拟变量交乘项生成和检验的简便方法 | 引入交叉项 |
Stata:分组回归系数比较的新思路 | 基于自抽样获得组间系数差的经验分布 |
自己动手做组间系数差异检验-bootstrap-bdiff | 基于组合检验的方法 基于自抽样获得组间系数差的经验分布 |
在此基础上,本文主要介绍 Stata 的外部命令 stackreg
, 它通过堆叠数据回归分析和聚类稳健标准误估计的方法,进行基于似无相关模型的组间系数检验。与之前重点介绍的单方程的组间系数差异检验不同,该命令适用于方程组的组间系数差异联合显著性检验,同时该命令支持面板数据和多维聚类标准误,但只适用于普通最小二乘法。
2. 命令应用场景
stackreg
命令的核心功能是通过堆叠数据,来估计一个拥有多个因变量和相同自变量集的线性方程组。其中,方程组可以通过如下模型来刻画:
针对组间系数差异检验的问题,stackreg
命令的主要应用场景是对协变量进行平衡性检验 (此时 只有处理的分组变量),以及断点回归中的前定协变量的处理效应检验 (此时 是关于驱动变量的函数)。在这种情境下,如果单独对每个方程的组间系数差异进行显著性检验 (即平衡性检验),会存在多重假设检验偏误,造成错误拒绝原假设 (第 I 类错误) 的概率增大。
为了解决这一跨方程的联合显著性假设检验的问题,可以使用似无相关模型。一个常用的实操策略是使用 suest
命令。与 stackreg
相比,suest
在模型设定上具有更高的灵活性,例如可以组合不同模型类型 (OLS、Probit 等),而 stackreg
只允许 OLS。但 stackreg
在 OLS 回归方面更具有专精优势,它可以实现固定效应估计,允许多维聚类标准误,支持跨方程的参数约束。
3. 堆叠数据回归
堆叠数据回归分析 (stacked regression analysis) 需要先将数据堆叠并构造构造虚拟变量进行区分,然后在堆叠数据中运行一次回归命令得到联合估计结果。这里我们首先介绍何为 “堆叠数据”。假设待估计的方程组为:
原始数据的格式如下:
堆叠数据是指将因变量数据从 wide 格式转化为 long 格式 (通过使用 reshape
或 sreshape
命令实现)。在这里,我们对数据进行如下操作:
将堆叠后的因变量命名为 y; 原始数据中的每一个样本生成一个唯一标识,储存在变量 tempid 中; 用变量 exp 来标识每一份堆叠的数据 (即不同因变量对应的数据); 生成变量 one,该变量的数值均赋值为 1,用于联合估计时更方便地区分不同方程的截距项。
转换后的数据格式为:
1 | 1 | 1 | |||
2 | 1 | 1 | |||
3 | 1 | 1 | |||
1 | 2 | 1 | |||
2 | 2 | 1 | |||
3 | 2 | 1 |
这样,我们就可以在 Stata 中通过运行一次回归命令实现联合估计。代码基础格式如下:
reg y i.exp#c.xm i.exp#c.xn i.exp#c.one, noconstant
通过堆叠数据进行一次回归得到的系数点估计,与在原始数据中分别估计每一个方程得到的系数点估计是一致的。即上述命令得到的系数点估计与在原始数据中运行下面的命令是一致的:
reg ya xm xn
reg yb xm xn
reg yc xm xn
这里主要为了解释堆叠数据的实现原理,并没有对标准误进行相应校正处理。具体如何实现多维聚类,如何对标准误进行校正,读者可以参考 Oberfichtner 和 Tauchmann (2021)。如果是对面板数据进行固定效应回归分析,则需要先对数据进行去中心化处理 (在 Stata 中可以通过 xtdata
命令实现),处理后可以按照上述步骤进行后续分析。
需要注意的是,stackreg
和 xtstackreg
命令本身并不能进行组间系数差异的联合显著性检验,而只是为联合显著性检验奠定基础。在运行 stackreg
或 xtstackreg
命令之后,可以通过运行 test
或 testparm
命令进行跨方程的联合显著性检验。
4. 命令介绍
命令安装:
net sj 21-2 st0641 // 查看程序包
net install st0641.pkg, replace // 安装程序文件
net get st0641.pkg, replace // 下载作者提供的 dofiles 和 data
命令语法:
stackreg depvars = indepvars [if] [in] [weight] [, options]
xtstackreg depvars = indepvars [if] [in] [weight] [, options]
其中,depvars
指因变量列表,indepvars
指自变量列表,均可以包括因子变量。详细内容可以在 Stata 中输入 help stackreg
进行查询。可选项包括:
fe
:对面板数据 (需要先通过xtset
命令声明) 进行固定效应估计。xtstackreg
等价于stackreg
加入fe
选项;noconstant
:去掉常数项;constraints(numlist)
:加入线性约束。需要先通过constraint
声明线性约束的形式;nocommon
:允许由于某因变量有缺失值导致的不同因变量对应方程的观测值有差异。若不加入该选项,则默认只选取没有缺失值的样本纳入回归估计;cluster(clustvarlist)
:声明聚类标准误的聚类表示变量。运行多维聚类 (需安装cgmreg
外部命令)。若不加入该选项,则默认使用原始观测值的标识符作为聚类变量 (即上表中的变量 tempid);df(adjust|raw|areg)
:自由度调整类型,默认df(adjust)
;wald
:加入该选项后,后续运行test
或testparm
命令提供 Wald 检验而不是 F 检验;sreshape
: 加入该选项后,在数据堆叠步骤中使用sreshape
命令,默认使用reshape
命令;level(#)
:调整显著性水平;edittozero(#)
:指定估计方差协方差的元素在何种程度上接近 0 时将其设置为 0,默认值为edittozero (1)
;omitted
:加入该选项后,由于共线性而省略的变量将显示在结果中并标记为 omitted;emptycells
:加入该选项后,因子变量交互作用的空单元格将显示在结果中并标记为 empty;display_options
:与输出格式有关的选项,详见help estimation options##display_options
。
5. 应用实例
这里我们对 stackreg
帮助文件中提供的例 1 进行详细说明,更多应用实例可以参考帮助文件。数据来源为 Kiel 和 McClain (1995) 所提供数据的一个子集,包括马萨诸塞州 (North Andover) 1978 和 1981 年的住房价格与特征。
谣传垃圾焚化炉在 1979 年建立,因此将 1978 年作为基准年。在 1981 年开始建造垃圾焚化炉,到 1981 年底垃圾焚化炉会准备运营。基准回归采用了双重差分方法,研究建造垃圾焚化炉对房价的影响。变量 rprice 代表房价,变量 y81 代表指示年份是否为 1981 年的虚拟变量,变量 nearinc 代表住房是否靠近垃圾焚化炉的虚拟变量。age、c.age#c.age、intst、area、land、rooms、baths 是一组包含因子变量形式的协变量。
. use http://fmwww.bc.edu/ec-p/data/wooldridge/kielmc, clear
. reg rprice age c.age#c.age intst area land rooms baths y81##nearinc
通过 stackreg
和 testparm
命令进行协变量平衡性检验。即协变量 y81 和 nearinc 交乘项回归系数是否具有显著性差异,也就是 DID 方法中 post 与 treat 交乘项回归系数是否具有显著性差异。堆叠数据回归和联合显著性检验的命令如下:
. stackreg age c.age#c.age intst area land rooms baths = y81##nearinc // 堆叠数据回归
Stacked linear regression Number of obs = 321
------------------------------------------------------------------------------
| Clust. Robust
| Coefficient std. err. t P>|t| [95% conf. interval]
-------------+----------------------------------------------------------------
age |
y81 | -4.248 3.718 -1.14 0.254 -11.562 3.066
nearinc | 27.038 5.752 4.70 0.000 15.721 38.355
y81#nearinc | -7.588 7.670 -0.99 0.323 -22.678 7.503
_cons | 12.748 3.234 3.94 0.000 6.386 19.110
-------------+----------------------------------------------------------------
c.age#c.age |
y81 | -1021.601 590.497 -1.73 0.085 -2183.348 140.146
nearinc | 1401.814 942.009 1.49 0.138 -451.499 3255.127
y81#nearinc | -147.613 1065.374 -0.14 0.890 -2243.636 1948.410
_cons | 1432.650 560.521 2.56 0.011 329.879 2535.422
-------------+----------------------------------------------------------------
intst |
y81 | -2975.371 925.218 -3.22 0.001 -4795.650 -1155.091
nearinc | -1.56e+04 823.295 -19.01 0.000 -1.73e+04 -1.40e+04
y81#nearinc | 3325.371 1263.156 2.63 0.009 840.232 5810.509
_cons | 22024.390 601.913 36.59 0.000 20840.183 23208.597
-------------+----------------------------------------------------------------
area |
y81 | 276.548 80.609 3.43 0.001 117.957 435.139
nearinc | -240.113 119.971 -2.00 0.046 -476.145 -4.081
y81#nearinc | -148.891 192.206 -0.77 0.439 -527.038 229.257
_cons | 2074.756 45.928 45.17 0.000 1984.396 2165.116
-------------+----------------------------------------------------------------
land |
y81 | -1.23e+04 4863.831 -2.53 0.012 -2.19e+04 -2748.863
nearinc | -3.07e+04 7135.934 -4.31 0.000 -4.48e+04 -1.67e+04
y81#nearinc | 13641.960 7938.129 1.72 0.087 -1975.555 29259.475
_cons | 52569.057 4645.291 11.32 0.000 43429.888 61708.226
-------------+----------------------------------------------------------------
rooms |
y81 | -0.065 0.101 -0.64 0.525 -0.264 0.135
nearinc | -0.794 0.159 -5.00 0.000 -1.106 -0.481
y81#nearinc | 0.179 0.226 0.79 0.430 -0.266 0.624
_cons | 6.829 0.072 94.87 0.000 6.688 6.971
-------------+----------------------------------------------------------------
baths |
y81 | 0.086 0.091 0.95 0.344 -0.092 0.264
nearinc | -0.655 0.111 -5.90 0.000 -0.874 -0.437
y81#nearinc | -0.118 0.186 -0.64 0.525 -0.483 0.247
_cons | 2.512 0.061 41.51 0.000 2.393 2.631
------------------------------------------------------------------------------
. testparm y81#nearinc // 联合显著性检验
( 1) [age]1.y81#1.nearinc = 0
( 2) [c.age#c.age]1.y81#1.nearinc = 0
( 3) [intst]1.y81#1.nearinc = 0
( 4) [area]1.y81#1.nearinc = 0
( 5) [land]1.y81#1.nearinc = 0
( 6) [rooms]1.y81#1.nearinc = 0
( 7) [baths]1.y81#1.nearinc = 0
F( 7, 320) = 2.71
Prob > F = 0.0096
可以看出,结果拒绝了协变量在政策实施前后没有系统性差异的原假设。
6. 相关推文
Note:产生如下推文列表的 Stata 命令为:
lianxh 组间 分组, m
安装最新版lianxh
命令:
ssc install lianxh, replace
专题:Stata教程 Stata:自己动手做组间系数差异检验-bootstrap-bdiff 专题:Stata命令 品头论足-distcomp:组间分布差异检验 专题:数据处理 Stata数据处理:用-astile-快速创建分组 专题:Stata绘图 Stata绘图-可视化:组间差异比较散点图 Stata绘图-组间差异可视化:不良事件火山图、点阵图 forest-森林图:分组回归系数可视化 Stata绘图:用-bytwoway-实现快速分组绘图 专题:Stata程序 Stata:runby - 一切皆可分组计算! 专题:结果输出 sumup:快速呈现分组统计量 专题:回归分析 Stata:分组回归系数比较的新思路 Stata: 如何检验分组回归后的组间系数差异? Stata: 获取分组回归系数的三种方式 专题:倍分法DID 倍分法:DID是否需要随机分组?
🍓 课程推荐:2024 机器学习与因果推断专题
主讲老师:司继春 (上海对外经贸大学) ;张宏亮(浙江大学)
课程时间:2024 年 11 月 9-10 日 ;16-17日
课程咨询:王老师 18903405450(微信)
尊敬的老师 / 亲爱的同学们:
连享会致力于不断优化和丰富课程内容,以确保每位学员都能获得最有价值的学习体验。为了更精准地满足您的学习需求,我们诚挚地邀请您参与到我们的课程规划中来。请您在下面的问卷中,分享您 感兴趣的学习主题或您希望深入了解的知识领域 。您的每一条建议都是我们宝贵的资源,将直接影响到我们课程的改进和创新。我们期待您的反馈,因为您的参与和支持是我们不断前进的动力。感谢您抽出宝贵时间,与我们共同塑造更加精彩的学习旅程!https://www.wjx.cn/vm/YgPfdsJ.aspx# 再次感谢大家宝贵的意见!
New! Stata 搜索神器:
lianxh
和songbl
GIF 动图介绍
搜: 推文、数据分享、期刊论文、重现代码 ……
👉 安装:
. ssc install lianxh
. ssc install songbl
👉 使用:
. lianxh DID 倍分法
. songbl all
🍏 关于我们
连享会 ( www.lianxh.cn,推文列表) 由中山大学连玉君老师团队创办,定期分享实证分析经验。 直通车: 👉【百度一下: 连享会】即可直达连享会主页。亦可进一步添加 「知乎」,「b 站」,「面板数据」,「公开课」 等关键词细化搜索。