Stata:堆叠回归及组间差异联合检验

发布时间:2022-06-08 阅读 2243

Stata连享会   主页 || 视频 || 推文 || 知乎 || Bilibili 站

温馨提示: 定期 清理浏览器缓存,可以获得最佳浏览体验。

New! lianxh 命令发布了:
随时搜索推文、Stata 资源。安装:
. ssc install lianxh
详情参见帮助文件 (有惊喜):
. help lianxh
连享会新命令:cnssc, ihelp, rdbalance, gitee, installpkg

课程详情 https://gitee.com/lianxh/Course

课程主页 https://gitee.com/lianxh/Course

⛳ Stata 系列推文:

PDF下载 - 推文合集

作者:李烨阳 (浙江大学)
邮箱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. 引言

在连享会之前的推文中,已经对组间系数差异检验方法进行了较为系统的介绍,相关推文如下:

推文 主要介绍的方法
Stata: 如何检验分组回归后的组间系数差异? 系统性方法总结
引入交叉项
基于似无相关模型的检验方法
基于组合检验的方法
Stata:虚拟变量交乘项生成和检验的简便方法 引入交叉项
Stata:分组回归系数比较的新思路 基于自抽样获得组间系数差的经验分布
自己动手做组间系数差异检验-bootstrap-bdiff 基于组合检验的方法
基于自抽样获得组间系数差的经验分布

在此基础上,本文主要介绍 Stata 的外部命令 stackreg, 它通过堆叠数据回归分析和聚类稳健标准误估计的方法,进行基于似无相关模型的组间系数检验。与之前重点介绍的单方程的组间系数差异检验不同,该命令适用于方程组的组间系数差异联合显著性检验,同时该命令支持面板数据和多维聚类标准误,但只适用于普通最小二乘法。

2. 命令应用场景

stackreg 命令的核心功能是通过堆叠数据,来估计一个拥有多个因变量和相同自变量集的线性方程组。其中,方程组可以通过如下模型来刻画:

针对组间系数差异检验的问题,stackreg 命令的主要应用场景是对协变量进行平衡性检验 (此时 xi 只有处理的分组变量),以及断点回归中的前定协变量的处理效应检验 (此时 xi 是关于驱动变量的函数)。在这种情境下,如果单独对每个方程的组间系数差异进行显著性检验 (即平衡性检验),会存在多重假设检验偏误,造成错误拒绝原假设 (第 I 类错误) 的概率增大。

为了解决这一跨方程的联合显著性假设检验的问题,可以使用似无相关模型。一个常用的实操策略是使用 suest 命令。与 stackreg 相比,suest 在模型设定上具有更高的灵活性,例如可以组合不同模型类型 (OLS、Probit 等),而 stackreg 只允许 OLS。但 stackreg 在 OLS 回归方面更具有专精优势,它可以实现固定效应估计,允许多维聚类标准误,支持跨方程的参数约束。

3. 堆叠数据回归

堆叠数据回归分析 (stacked regression analysis) 需要先将数据堆叠并构造构造虚拟变量进行区分,然后在堆叠数据中运行一次回归命令得到联合估计结果。这里我们首先介绍何为 “堆叠数据”。假设待估计的方程组为:

原始数据的格式如下:

yaya ybyb ycyc xmxm xnxn
ya1 yb1 yc1 xm1 xn1
ya2 yb2 yc2 xm2 xn2

堆叠数据是指将因变量数据从 wide 格式转化为 long 格式 (通过使用 reshapesreshape 命令实现)。在这里,我们对数据进行如下操作:

  • 将堆叠后的因变量命名为 y
  • 原始数据中的每一个样本生成一个唯一标识,储存在变量 tempid 中;
  • 用变量 exp 来标识每一份堆叠的数据 (即不同因变量对应的数据);
  • 生成变量 one,该变量的数值均赋值为 1,用于联合估计时更方便地区分不同方程的截距项。

转换后的数据格式为:

expexp tempidtempid yy xmxm xnxn oneone
1 1 ya1 xm1 xn1 1
2 1 yb1 xm1 xn1 1
3 1 yc1 xm1 xn1 1
1 2 ya2 xm2 xn2 1
2 2 yb2 xm2 xn2 1
3 2 yc2 xm2 xn2 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 命令实现),处理后可以按照上述步骤进行后续分析。

需要注意的是,stackregxtstackreg 命令本身并不能进行组间系数差异的联合显著性检验,而只是为联合显著性检验奠定基础。在运行 stackregxtstackreg 命令之后,可以通过运行 testtestparm 命令进行跨方程的联合显著性检验。

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:加入该选项后,后续运行 testtestparm 命令提供 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 代表住房是否靠近垃圾焚化炉的虚拟变量。agec.age#c.ageintstarealandroomsbaths 是一组包含因子变量形式的协变量。

. 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

通过 stackregtestparm 命令进行协变量平衡性检验。即协变量 y81nearinc 交乘项回归系数是否具有显著性差异,也就是 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

相关课程

免费公开课

最新课程-直播课

专题 嘉宾 直播/回看视频
最新专题 文本分析、机器学习、效率专题、生存分析等
研究设计 连玉君 我的特斯拉-实证研究设计-幻灯片-
面板模型 连玉君 动态面板模型-幻灯片-
面板模型 连玉君 直击面板数据模型 [免费公开课,2小时]
  • Note: 部分课程的资料,PPT 等可以前往 连享会-直播课 主页查看,下载。

课程主页

课程主页

关于我们

  • Stata连享会 由中山大学连玉君老师团队创办,定期分享实证分析经验。
  • 连享会-主页知乎专栏,700+ 推文,实证分析不再抓狂。直播间 有很多视频课程,可以随时观看。
  • 公众号关键词搜索/回复 功能已经上线。大家可以在公众号左下角点击键盘图标,输入简要关键词,以便快速呈现历史推文,获取工具软件和数据下载。常见关键词:课程, 直播, 视频, 客服, 模型设定, 研究设计, stata, plus, 绘图, 编程, 面板, 论文重现, 可视化, RDD, DID, PSM, 合成控制法

连享会小程序:扫一扫,看推文,看视频……

扫码加入连享会微信群,提问交流更方便

✏ 连享会-常见问题解答:
https://gitee.com/lianxh/Course/wikis

New! lianxhsongbl 命令发布了:
随时搜索连享会推文、Stata 资源,安装命令如下:
. ssc install lianxh
使用详情参见帮助文件 (有惊喜):
. help lianxh