软件应用 | Stata 17的新功能(二):使用Wild Cluster Bootstrap估计DID的标准误
The following article is from 计量经济学及Stata应用 Author 陈强
本文转载自公众号计量经济学及Stata应用
作者:陈强
上期推文介绍了Stata 17的双重差分法命令xtdidregress,以及使用此DID官方命令的几大理由,包括获得正确的标准误。
由于DID本质上为面板数据的双向固定效应模型,故一般使用聚类稳健标准误(cluster-robust standard errors)进行统计推断。然而,若聚类数目太小,则会导致偏差;因为大样本理论要求聚类数目足够大,才能保证所估计的标准误收敛到真实的标准误。Stata 17的DID官方命令提供了在这种情况下估计标准误的两种有效方法,即“野聚类自助法”(wild cluster bootstrap)与“加总法”(aggregation)。
以Stata 17手册所提供的模拟数据smallg.dta为例。首先,载入数据,并设为面板。
. use https://www.stata-press.com/data/r17/smallg,clear
(Simulated data with a small number of groups)
. xtset id year
Panel variable: id (strongly balanced)
Time variable: year, 2011 to 2015
Delta: 1 unit
结果显示,这是一个从2011年至2015年的五期平衡面板。考察此面板数据的基本统计特征:
. xtsum
上表显示,样本中共有2000位个体,故样本容量为2000 x 5 = 10000。更直观地,察看前10个观测值。
. list in 1/10
其中,outcome为结果变量(被解释变量),treated为处理变量(treatment variable,即DID的交互项),x为一个连续的协变量,而b为一个离散的协变量(类别变量)。变量county表示样本中的2000位个体分属不同的县。
下面,考察类别变量county与b的取值分布。
. tab county b
结果表明,变量county的取值为1,2,3,4,5,6,分别对应于6个县;而变量b的取值为1,2,3。进一步,考察处理变量treated在每个县的统计特征。
. bysort county: sum treated
结果显示,处理变量treated在第3-6个县的均值都是0,故第3-6个县的所有个体都属于控制组(从未受到政策冲击);反之,第1-2个县的所有个体均属于处理组。
聚类到个体的DID估计
使用DID的官方命令进行估计,可输入以下语句:
. xtdidregress (outcome x i.b) (treated), group(id) time(year)
其中,必选项“group(id)”指定在计算聚类稳健标准误时,以表示个体的变量id作为聚类变量。
结果显示,平均处理效应(ATET)的点估计为-0.939(此模拟数据的真实处理效应为-1),聚类稳健标准误为0.0963,p值为0.000,而95%的置信区间为[-1.128, -0.750]。也可以使用命令xtreg,手工进行DID估计,所得结果完全一样:
. xtreg outcome treated x i.b i.year, fe r
聚类到县级的DID估计
考虑到同一县不同个体的扰动项之间可能存在相关性(比如,受到同一县级政策的影响),下面以变量county为聚类变量,再次进行DID估计:
. xtdidregress (outcome x i.b) (treated), group(county) time(year)
其中,必选项“group(county)”表示将标准误聚类到县级。
然而,由于样本中只有6个县,聚类到县级的标准误可能存在较大偏差。此时,我们面临着一个两难处境。若聚类到个体层面,虽然聚类数目达到2000个,可满足大样本理论的要求,但忽略了同一县不同个体之间的相关性,可能导致偏差。另一方面,若聚类到县级,虽然考虑了同一县不同个体之间的相关性,但聚类数目仅为6个,也会导致偏差。
幸运的是,计量经济学的最新进展提供了在聚类数目有限情况下依然有效的两种标准误计算方法,并可以通过Stata 17的DID官方命令来轻松地实现。
野聚类自助法
方法之一为使用“野聚类自助法”(wild cluster bootstrap)。其中,“聚类自助法”(cluster bootstrap)意味着,在进行自助抽样时,每次须以“聚类”(cluster)为基本单位进行自助抽样,以保持聚类内部的相关性结构。而所谓“野自助法”(wild bootstrap)则意味着,在自助抽样时,保持协变量不变,而对残差进行自助抽样。
最初的野自助法主要针对异方差的数据所设计(参见《高级计量经济学及Stata应用》,陈强,2014年,第2版,第354页),后来学者将其推广到聚类数据(不同聚类的扰动项方差可以不同)。
当扰动项存在异方差时,若使用常规的成对自助法(pairs bootstrap),即每次随机抽取
具体而言,若抽到某个残差
其中,
对于随机权重
而自助残差的方差也维持了扰动项的异方差特点:
一种常见做法是让随机权重
容易验证,Rademacher的期望为0而方差为1。
在Stata 17中,使用野聚类自助法估计DID标准误的命令为:
. xtdidregress (outcome x i.b) (treated), group(county) time(year) wildbootstrap(rseed(123))
其中,选择项“group(county) wildbootstrap(rseed(123))”表示以county为聚类变量,使用野聚类自助法计算标准误;而“rseed(123)”表示将随机数种子设为“123”,以保证结果的可重复性。默认的权重选项为“errorweight(rademacher)”,故可省略。
结果显示,默认进行了1000次自助抽样(1000 replications)。然而,输出结果并未显示标准误。这是因为在使用野聚类自助法时,其实是通过自助样本进行假设检验,得到自助p值(bootstrap p value),进而计算相应的置信区间。在此例,使用野聚类自助法所得到的p值为0.032,有所增大(若使用传统的聚类稳健标准误,则p值为0)。
进一步,所得置信区间的置信度为96.9%,而非传统的95%置信区间。这是因为,在根据自助p值计算置信区间时,由于自助估计量可能有重叠(两个或多个自助估计量
然而,本例中的聚类数目仅为6。在聚类数目不超过10的情况下,文献一般建议使用Webb权重。此时,随机权重服从一个特别的六点分布,取值分别为
Webb权重在以上六个点的取值概率均为
下面,使用Webb误差权重,进行野聚类自助法估计:
. xtdidregress (outcome x i.b) (treated), group(county) time(year) wildbootstrap(rseed(123) errorweight(webb))
其中,选择项“errorweight(webb)”表示使用Webb权重进行野聚类自助抽样。Stata提供的其他权重选项包括“errorweight(mammen)”(权重服从一个特别的两点分布)、“errorweight(normal)”(权重服从标准正态分布)以及“errorweight(gamma)”(权重服从Gamma分布),但并不常用;详见help didregress##wildopts。
结果显示,使用选择项“errorweight(webb)”所得的p值降为0.004,而这次得到了95%的置信区间。
然而,使用野聚类自助法也有缺点。比如,自助抽样可能比较费时;而且,使用不同的随机数种子与误差权重(error weight),所得结果也不尽相同。为此,Stata 17还提供了另外一种“加总法”(aggregation),也适用于聚类数目很少的情形,将在下期推文介绍。
参考文献
陈强,《高级计量经济学及Stata应用》,第2版,高等教育出版社,2014年
陈强,《计量经济学及Stata应用》,高等教育出版社,2015年
陈强,《机器学习及R应用》,高等教育出版社,2020年11月,472页,双色印刷
陈强,《机器学习及Python应用》,高等教育出版社,2021年3月,632页,双色印刷
点击搜索你感兴趣的内容吧
往期推荐
数据Seminar
这里是大数据、分析技术与学术研究的三叉路口
欢迎扫描👇二维码添加关注