wcbregress:面板聚类标准误

发布时间:2021-04-25 阅读 6968

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

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

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

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

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

⛳ Stata 系列推文:

作者: 李硕清 (中山大学)
邮箱: 857532149@qq.com


目录


1. 背景介绍

在估计参数的聚类标准误差时,必须考虑总样本内不同样本群之间的相关性。但是,在许多程序中是默认忽略这种依赖性的,这会使计算得出的 OLS 标准误差会大大低估真实的 OLS 标准误差。

为了解决这个问题,我们应该使用允许异方差或聚类误差相关性存在的聚类稳健标准误 (CRVE)。需要注意的是,该稳健标准误使用的前提假设是样本中的样本簇数量要相当大,一般来说要超过 30 组。

1.1 低估偏误说明

我们先来求在 OLS 下聚类误差的大小。假设模型数据被分为 G 簇 (以下标 g 表示),每个簇有 Ng (以下标 i 表示) 个观察值。每个簇的系数的标准差是独立的,但簇间的干扰项是有关联的。具体来看,模型可以写成以下形式:

其中,β 是 k×1 的矢量,xig 是 k×1 的矢量,Xg 是 Ng×k 的矢量,X 是 N×k 的矢量,N=g0Ngyig 和 uig 是向量,yg 和 ug 是 Ng×1 的矢量,v 和 u 是 N×1 的矢量。

在该模型下,OLS 估计量为 β^=(XX)1Xy。同时在这个假设下,求得的参数对于各个簇是相互独立的,但残差在各簇间有相关关系。即在 E[ug]=0,E[ugug]=gG,E[uguh]=0hg 的条件下,我们可以得到:

这个方差比基于 OLS 方法的残差独立同分布假设下所求的方差 V[β^]=σu2(XX)1 更大,并且这个偏差还会随着样本簇的大小、回归元之间的关系、残差之间的关系的变化而变化。

为了解决低估的情况,可以使用聚类稳健误差估计 CRVE 方法。CRVE 方法以 G 为代价,并且允许簇间存在异方差,以及残差在各簇间有相关关系。CRVE 方法已经在很多 Stata 的回归命令中得到了使用 (这时会使 u~g=cu^gc 取 G/(G1)),但这个方法的前提是要求 G 趋近于无穷,然而当 G 过小的时候就会有下面的问题产生。

1.2 问题提出

当使用 CRVE 方法但 G 的数量较小 (小于 30) 时,如果使用传统的 Wald 检验来检验系数有效性,可能会产生过度拒绝的问题。具体来看,双边 Wald 检验的 H0:β1=β10,则有 Ha:β1β10,其中 β1 是向量 β 的组成成分。构造 WALD 检验统计量,并进行 t 检验:

其中,sβ^1 是 V^CR[β^] 的平方根。这个 t 检验在 H0 下是渐进于标准正态的,如果 |w|>za/2,则可以在 a 的显著条件下拒绝 H0。但是这个拒绝只有在 G 的条件下才是正确的,否则会引起过度拒绝。为了解决这个问题,我们引入新命令 wcbregress

2. 命令介绍

为了解决传统 Wald 检验过度拒绝的问题,很多计量学家提出了自己的想法。例如,Donald 和 Lang (2007) 选择不使用 OLS 估计量,而是新提出一个替代性的两步估计量,并使用 T(Gk1) 分布 (k1 是指非变量回归元的数目)。wcbregress 命令也使用了一种新的方法,即继续使用 CRVE 方法估计标准 OLS 估计量,但在计算参数有效性的时候提出全新的改进。

2.1 理论部分

  • Bootstrap 的引入。Bootstrap 方法 (自助法) 是从原始样本生成大量伪样本,并且对于每个伪样本,计算相应的统计量。然后,使用该统计量在伪样本中的分布来推断原始样本统计量的分布。Bootstrap 的方法并不是单一的,它会根据需要计算的统计量、生产的伪样本、以及推断的方法进行调整。

  • 多种统计方法的比较。对于聚类稳健参数的有效性判断,一般有下图所示的四大类方法、以及大类方法下相应的处理方法。经过蒙特卡罗模拟验证,研究人员发现,即使只有 6 个集群,使用 Wild Cluster Bootstrap 方法,得出的经验拒绝率非常接近理论值。

Source: Cameron A C, Gelbach J B, Miller D L. Bootstrap-based improvements for inference with clustered errors[J]. The Review of Economics and Statistics, 2008, 90(3): 414-427. -PDF-, -PDF2-, Table 1: Different Methods for Wald Test.

  • Wild Cluster Bootstrap 方法。对一个有多个标准差的回归模型,采用重抽样的方法比使用已有聚类数据要更好。我们可以保持回归元 X 在整个伪样本中不变,同时对残差进行重抽样以此来构建新的独立变量 y,该方法又称为 Wild Cluster Bootstrap 方法。 具体来讲就是从原有的残差样本里重抽样获得 u^1,....,u^G,因此伪样本可以得到是 (y^1,X1),....,(y^G,Xg),同时有 y^g=Xgβ^+u^g

2.2 语法结构

wcbregress 可以选择使用 CRVE 方法进行参数的稳健性求解,同时还会返回用 Wild Cluster Bootstrap 方法对参数进行的有效性检验的结果。这个命令依赖于 Stata 内置的 regress 命令,因此 regress的大多数选项都与 wcbregress 兼容。

*命令安装
ssc install wcbregress, replace
*语法结构
wcbregress depvar varlist [if] [in] [weight] [, options]
  • depvar:被解释变量;
  • varlist:不进入选择模型的解释变量;

options 具体如下:

  • group(varname):用于生成各变量簇的变量名称;
  • robust:稳健地使用 CRVE 方法求解系数;
  • vce(vcetype):获得稳健标准误;
  • nonconstant(varname):进行无常数项回归;
  • hascons:使用用户提供的常数项进行回归;
  • tsscons:计算一系列常数项的平方和;
  • level(#):设置置信区间,默认是 95%;
  • seed(#):设置随机数种子;
  • detail:显示中间命令输出;
  • rep(#):用于计算标准误差或置信区间的 bootstrap 复制数,默认是 500。

3. Stata 实例

接下来,我们以 Stata 自带的「auto.dta」数据为例,来演示命令 wcbregress 的使用方法。相关设定如下:

  • 假设价格 price 是行程英里数 mpg、头部空间 headroom、后备箱空间 trunk、车重 weight 等变量的函数;
  • 以 1978 年维修记录 rep78 为分类依据;
  • 置信区间设定为 99%。
. clear all

. sysuse auto.dta, clear
(1978 Automobile Data)

. wcbregress price mpg headroom trunk weight, group(rep78) level(99)

Wild Cluster Boostrap in progress (200 replications)
(each dot . indicates one replication)
----+--- 1 ---+--- 2 ---+--- 3 ---+--- 4 ---+--- 5 
..................................................    50
..................................................   100
..................................................   150
..................................................   200

Wild Cluster Bootstrap Linear regression
                                                Number of obs     = 74.000
                                                Replications      = 200.000
                                                R-squared         = 0.323
                                                Adj R-squared     = 0.283
                                                Root MSE          = 2497.033

----------------------------------------------------------------------------
 Panel A: Point Estimates and Wild Cluster Bootstrap Std. Err.   
----------------------------------------------------------------------------
          |              Bootstrap                        Normalized
    price |   Coef.      Std. Err.     z    P>|z|   [  99% Conf. Interval  ]
----------+-----------------------------------------------------------------
      mpg | -54.7915      66.9427    -0.82  0.413     -168.339        58.756
 headroom |-726.5434     243.1408    -2.99  0.003    -1150.295      -302.792
    trunk |  23.0425     104.3392    0.22   0.825     -150.260       196.345
   weight |   2.0119       1.1985    1.68   0.093       -0.080         4.104
    _cons |3114.9403    4283.5837    0.73   0.467    -4541.290     10771.170
----------------------------------------------------------------------------
 Panel B: Wild Cluster Bootstrap t-tests and Confidence Intervals  
----------------------------------------------------------------------------
          |  Bootstrap               [  99% Conf. Interval  ]
    price |   P>|t*|       [    Symmetric CI    ]   [    Asymmetric CI   ]
----------+-----------------------------------------------------------------
      mpg |   0.520          -177.168      67.585     -177.168      67.585
 headroom |   0.030         -1471.480      18.393    -1471.480      18.393
    trunk |   0.790          -336.623     382.708     -350.185     382.708
   weight |   0.500            -6.348      10.372       -4.879      10.372
    _cons |   0.560        -12662.700   18892.580   -13886.579   18892.580
----------------------------------------------------------------------------
* Disclaimer: This is a Beta version of the command. helloyzz@gmail.com

可以看出,wcbregress 命令使用 Wild Cluster Bootstrap 方法重复 200 次创建伪样本,并在 Panel A 报告相应的估计系数,以及 Bootstrap 标准差。与此同时,在 Panel B 里使用 t 检验来检测系数的有效性,并且得出相应系数的 p 值,该值即使在簇类样本量较少的情况下也相当准确。

将 Bootstrap 重复次数改为 50 次。

. wcbregress price mpg headroom trunk weight, group(rep78) rep(50) level(99)

Wild Cluster Boostrap in progress (50 replications)
(each dot . indicates one replication)
----+--- 1 ---+--- 2 ---+--- 3 ---+--- 4 ---+--- 5 
..................................................    50

Wild Cluster Bootstrap Linear regression
                                                Number of obs     = 74.000
                                                Replications      = 50.000
                                                R-squared         = 0.323
                                                Adj R-squared     = 0.283
                                                Root MSE          = 2497.033

----------------------------------------------------------------------------
 Panel A: Point Estimates and Wild Cluster Bootstrap Std. Err.   
----------------------------------------------------------------------------
          |              Bootstrap                        Normalized
    price |   Coef.      Std. Err.     z    P>|z|   [  99% Conf. Interval  ]
----------+-----------------------------------------------------------------
      mpg | -54.7915      66.9427    -0.82  0.413     -168.075        58.492
 headroom |-726.5434     243.1408    -2.99  0.003    -1107.982      -345.105
    trunk |  23.0425     104.3392    0.22   0.825     -141.675       187.760
   weight |   2.0119       1.1985    1.68   0.093       -0.016         4.039
    _cons |3114.9403    4283.5837    0.73   0.467    -4327.558     10557.439
----------------------------------------------------------------------------
 Panel B: Wild Cluster Bootstrap t-tests and Confidence Intervals  
----------------------------------------------------------------------------
          |  Bootstrap               [  99% Conf. Interval  ]
    price |   P>|t*|       [    Symmetric CI    ]   [    Asymmetric CI   ]
----------+-----------------------------------------------------------------
      mpg |   0.680          -167.708      58.125     -167.708      58.125
 headroom |   0.000         -1334.871    -118.216    -1334.871    -118.216
    trunk |   0.880          -323.061     369.146     -350.185     369.146
   weight |   0.360            -4.879       8.903       -2.962       8.903
    _cons |   0.680        -11104.649   17334.530   -11104.649   17334.530
----------------------------------------------------------------------------
* Disclaimer: This is a Beta version of the command. helloyzz@gmail.com

可以看出,重复次数即使调为 50 次后,系数估计并没有发生变化,但是有效性检验的 p 值发生较大变化。因此,要获得精确的检验结果,Bootstrap 的重复次数应该尽量的多。

添加稳健性估计选项和去常数项回归选项,同时展示系统存储的计算数据。

. wcbregress price mpg headroom trunk weight, group(rep78) rep(50) level(90) seed(2333) robust

Wild Cluster Boostrap in progress (50 replications)
(each dot . indicates one replication)
----+--- 1 ---+--- 2 ---+--- 3 ---+--- 4 ---+--- 5 
..................................................    50

Wild Cluster Bootstrap Linear regression
                                               Number of obs     = 74.000
                                               Replications      = 50.000
                                               R-squared         = 0.323
                                               Adj R-squared     = 0.283
                                               Root MSE          = 2497.033

---------------------------------------------------------------------------
 Panel A: Point Estimates and Wild Cluster Bootstrap Std. Err.   
---------------------------------------------------------------------------
          |             Bootstrap                        Normalized
    price |   Coef.     Std. Err.     z    P>|z|   [  90% Conf. Interval  ]
----------+----------------------------------------------------------------
      mpg | -54.7915     66.9427    -0.82  0.413     -181.047        71.464
 headroom |-726.5434    243.1408    -2.99  0.003    -1199.264      -253.823
    trunk |  23.0425    104.3392    0.22   0.825     -180.287       226.372
   weight |   2.0119      1.1985    1.68   0.093       -0.424         4.447
    _cons |3114.9403   4283.5837    0.73   0.467    -5429.827     11659.708
---------------------------------------------------------------------------

 Panel B: Wild Cluster Bootstrap t-tests and Confidence Intervals  
---------------------------------------------------------------------------
          |  Bootstrap              [  90% Conf. Interval  ]
    price |   P>|t*|      [    Symmetric CI    ]   [    Asymmetric CI   ]
----------+----------------------------------------------------------------
      mpg |   0.680         -169.098      59.515     -167.024      59.515
 headroom |   0.040        -1396.238     -56.849    -1284.111     -56.849
    trunk |   0.960         -313.770     359.855     -313.770     359.855
   weight |   0.480           -6.348      10.372       -4.879      10.372
    _cons |   0.800       -10710.728   16940.609   -13886.579   16940.609
---------------------------------------------------------------------------
* Disclaimer: This is a Beta version of the command. helloyzz@gmail.com
. ereturn list

scalars:
                  e(N) =  74
                 e(r2) =  .3225469262049001
               e(r2_a) =  .283274284245764
               e(rmse) =  2497.033035550464

macros:
            e(vcetype) : "Wild Cluster Bootstrap SE"
                e(cmd) : "wcbregress"
              e(title) : "Wild cluster bootstrap SE and T-tests for the linear regression"
               e(Brep) : "50"
         e(properties) : "b V"

matrices:
                  e(b) :  1 x 5
                  e(V) :  5 x 5
         e(WCB_pvalue) :  1 x 5
              e(WCB_V) :  1 x 5

functions:
             e(sample)  

可以看出,无常数项估计会对估计结果,以及有效性检验产生较大影响。在 Bootstrap 重复次数足够大的情况下,是否稳健地进行系数估计所得系数结果差别不大,但是会对有效性检验的 p 值产生产生影响,这反映了残差间的相关关系对系数估计的影响。

4. 结语

当所拥有的簇类数量较少的时候,原有聚类命令估计出的系数有效性很差。如何在簇类样本较少的情况下有效地估计系数,并避免在系数有效性检验时过度拒绝,是实证金融研究里一个重要的话题。

wcbregress 采用了 Wild Cluster Bootstrap 的自抽样方法,并使用 t 检验来判断系数有效性。其结果经验拒绝率非常接近理论值,而且即使只有 10 个以内的集群,在计算后也没有明显的效率损失。

5. 参考资料

  • Donald S G, Lang K. Inference with difference-in-differences and other panel data[J]. The review of Economics and Statistics, 2007, 89(2): 221-233. -PDF-, -PDF2-
  • Cameron A C, Gelbach J B, Miller D L. Bootstrap-based improvements for inference with clustered errors[J]. The Review of Economics and Statistics, 2008, 90(3): 414-427. -PDF-, -PDF2-

6. 相关推文

Note:产生如下推文列表的命令为:
lianxh 聚类 标准误 bootstrap 空间相关性, m
安装最新版 lianxh 命令:
ssc install lianxh, replace

相关课程

免费公开课

最新课程-直播课

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

课程主页

课程主页

关于我们

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

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

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

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

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