Stata:聚类标准误代码介绍
👇 连享会 · 推文导航 | www.lianxh.cn
🍎 Stata:Stata基础 | Stata绘图 | Stata程序 | Stata新命令 📘 论文:数据处理 | 结果输出 | 论文写作 | 数据分享 💹 计量:回归分析 | 交乘项-调节 | IV-GMM | 时间序列 | 面板数据 | 空间计量 | Probit-Logit | 分位数回归 ⛳ 专题:SFA-DEA | 生存分析 | 爬虫 | 机器学习 | 文本分析 🔃 因果:DID | RDD | 因果推断 | 合成控制法 | PSM-Matching 🔨 工具:工具软件 | Markdown | Python-R-Stata 🎧 课程:公开课-直播 | 计量专题 | 关于连享会
连享会课程 · 2023 五一论文班
作者:谢泽荟 (中山大学)
邮箱:xiezh39@mail2.sysu.edu.cn
编者按:本文部分内容参考自下文,特此致谢!
Source:Abadie A, Athey S, Imbens G W, et al. When should you adjust standard errors for clustering?[J]. The Quarterly Journal of Economics, 2023, 138(1): 1-35. PDF
温馨提示: 文中链接在微信中无法生效。请点击底部「阅读原文」。或直接长按/扫描如下二维码,直达原文:
目录
1. 引言
2. 是否聚类?聚类到什么层面?
3. Stata 代码汇总
3.1 一维聚类标准误
3.2 二维聚类标准误
3.3 crhdreg 命令
3.4 wcbregress 命令
4. 相关推文
1. 引言
标准误在统计推断中发挥着至关重要的作用,直接影响着系数的显著性和置信区间,并最终影响到假设检验的结论。因此,正确地估计标准误在实证分析的过程中显得尤为重要。
当干扰项满足独立同分布 (iid) 条件时, OLS 所估计的标准误是无偏的。但是当误差项之间存在相关性时,OLS 所估计的标准误是有偏的,不能很好地反映估计系数的真实变异性 (Petersen, 2009),故需要对标准误进行调整。在多种调整标准误的方式中,聚类调整标准误 (cluster) 是一种有效的方法 (Petersen, 2009)。
本文主要对是否聚类和聚类到什么层面这两个问题进行简要讨论,并对 Stata 中聚类调整标准误的实操代码进行汇总。
2. 是否聚类?聚类到什么层面?
聚类调整标准误的基本思想是放宽了随机误差项独立同分布的假定,允许组内个体的干扰项之间存在相关性,但不同组个体的干扰项之间彼此不相关。
尽管聚类后的标准误往往与聚类前存在较大差异,从而影响统计推断,但并非所有情况都需要聚类调整标准误。如果从大量人口中随机抽取单位样本,并且是否接受处理 (treatment) 在单位水平上是随机分配的,则不需要对最小二乘估计量的标准误进行聚类。即使结果变量存在组内相关性,聚类也不合适。在这种情况下,聚类可能会导致标准误过于保守 (增大),置信区间过宽。
当处理 (treatment) 的分配机制或抽样过程存在聚类性,则需要在该层面对标准误进行聚类。例如,某一政策的实施与否在地级市层面的决策,且抽样过程也是以地级市为单位 (尽管研究的个体单位可能是地级市中的企业),那么标准误就应该聚类到地级市层面。
针对面板数据的固定效应模型,聚类层面与固定效应模型并没有对应关系。一般而言聚类层级越高,对于相关性矩阵所施加的参数假设越少,结果越稳健。因此,如果本身控制了个体固定效应或者双向固定效应,为了结果更稳健,应该聚类到更高层面,例如村庄或县级。
3. Stata 代码汇总
3.1 一维聚类标准误
对标准误进行一维聚类调整:
* 截面数据,在公司层面进行聚类,以下两种写法等价
reg y x, cluster(id)
reg y x, vce(cluster id)
* 面板数据,在公司层面进行聚类,以下三种写法等价
xtset id year
xtreg y x, fe cluster(id)
xtreg y x, fe vce(cluster id)
xtreg y x, fe robust
3.2 二维聚类标准误
对标准误进行二维聚类调整,有以下几种方式:
lxhuse nlswork, clear
* cluster2 (Petersen-2009, RFS)
// 该命令没有帮助文件,所有功能都可以用 cgmreg 和 vce2way 代替
// 因此,建议日后不必使用该命令
cluster2 ln_wage $x, fcluster(idcode) tcluster(year)
* cgmreg (CGM2011, Mitchell Petersen's -cluster2.ado- 的升级版)
// 需手动下载:https://sites.google.com/site/judsoncaskey/data
// help cgmreg
cgmreg ln_wage $x, cluster(idcode year)
est store m4
* vce2way (CGM2011, 支持 Panel data, xtreg 等命令)
// ssc install vce2way
// help vce2way
vce2way reg ln_wage $x, cluster(idcode year)
est store m5
* vcemway (Gu and Yoo-2019, 该命令在 vce2way 的基础上扩展到多维)
// ssc install vcemway
// help vcemway
vcemway reg ln_wage $x, cluster(idcode year)
est store m6
* 结果对比
local m "m1 m2 m3 m4 m5 m6"
local mt "OLS Robust 1Clus 2_cgmreg 2_vce2way 2_vcemway"
esttab `m', mtitle(`mt') nogap b(%4.3f) se(%6.4f) brackets ///
star(* 0.1 ** 0.05 *** 0.01) s(N r2) compress
3.3 crhdreg 命令
* 命令安装
ssc install crhdreg, replace
* 语法结构
crhdreg depvar indepvarlist1 indepvarlist2 [if] [in] [, cluster1(varname) cluster2(varname)
iv(varname) dimension(real) folds(real) resample(real) median alpha(real) tol(real) maxiter(real)]
其中,
depvar
:指定回归的被解释变量。indepvarlist1
:指定回归的内生解释变量。indepvarlist2
:指定回归的外生解释变量,通常是控制变量。cluster1(varname)
:设置聚类变量。在单向或双向聚类中构建第一个聚类维度。不调用这个选项会自动导致执行更高维的 LS 回归或无聚类的高维 IV 回归。cluster2(varname)
:设置聚类变量。在单向或双向聚类中构建第二个聚类维度。如果调用了cluster1
而没有调用cluster2
,那么命令会执行的只有一种聚类方式 (以cluster1
选项设置的变量为主) 的高维 LS 回归或高维 IV 回归。iv(varname)
:设置indepvarlist1
的工具变量。当这一选项不被调动时,该命令将执行高维 LS 回归。dimension(real)
:设置indepvarlist1
中变量的数量,这些变量的系数将显示在输出表中。默认值是dimension(1)
。它必须是一个正整数,不大于包含在indepvarlist1
和indepvarlist2
中的变量总数。folds(real)
:设置双重/偏置机器学习中交叉拟合的折叠次数 K。在无聚类或单向聚类的情况下,默认值为folds(5)
。在双向聚类的情况下,默认值是folds(3)
。它必须是一个大于 1 的正整数。resample(real)
:设置双重/偏倚机器学习的精细样本调整的重采样次数。默认值是resample(10)
。它必须是一个正整数。median
:设置指示器,表示有限样本调整使用重新抽样的估计值的中位数。不调用这个选项会导致使用重新抽样的估计值的平均值。alpha(real)
:设置弹性网络算法中的惩罚权重。默认值是alpha(1)
,弹性网络算法是 LASSO (最小绝对收缩和选择操作)。如果这个选项被设置为alpha(0)
,那么弹性网络算法就变成了岭回归模型。此外,这个参数必须是一个介于 0 和 1 之间的实数。tol(real)
:设置公差作为弹性网络算法的数值解的停止标准。默认值是tol(0.000001)
。这个参数必须是严格的正实数。maxiter(real)
:设置弹性网数值解的最大迭代次数。默认值是maxiter(1000)
。这个参数必须是一个自然数。
以 Calvi et al. (2021) 使用是否加入美国退休金401k计划对个人净固定资产的影响进行举例。
401k 计划是指美国 1978 年《国内税收法》新增的第 401 条 k 项条款的规定,指代一种由雇员、雇主共同缴费建立起来的完全基金式的养老保险制度。但是,个人选择养老保险会与家庭、年龄相关。相似家庭规模的人群更容易同时选择是否参与养老保险制度,同一年龄层的个体也更容易同时选择是否加入养老保险计划。
如果只使用稳健性标准误,就有可能忽视个体之间的相关性,导致结果有偏。而如果只针对单一层面的相关性进行聚类,又有可能未能完全考虑另一层面的个体相关对回归结果造成的偏误。
因此,针对这种情况,Chiang et al. (2022) 提出了双向稳健性标准误的估算方式,通过 crhdreg
命令估计加入 401 计划对个人净固定资产所造成的影响。
. * 导入数据
. bcuse 401ksubs, clear
. * 被解释变量是个人净固定资产 (nettfa),
. * 解释变量是是否加入 401 计划 (p401k),
. * 控制变量是个人年度收入
. crhdreg nettfa p401k inc
. est store eq_LS
. crhdreg nettfa p401k inc, cluster1(fsize) // 引入聚类在家庭规模变量 (fsize) 的标准误
. est store eq_c1
. crhdreg nettfa p401k inc, cluster2(age) // 引入聚类在年龄层面 (age) 的标准误
. est store eq_c2
. crhdreg nettfa p401k inc, cluster1(fsize) cluster2(age)
. // 引入聚类在家庭规模层面 (fsize) 的标准误、以及聚类在年龄层面 (age) 的标准误
. est store eq_c1c2
. crhdreg nettfa p401k inc, iv(e401k) cluster1(fsize) cluster2(age)
. //考虑到 p401k 可能存在内生性,假设 e401k 是合适的工具变量
. est store eq_iv
. esttab eq_*
-----------------------------------------------------------------------------------
(1) (2) (3) (4) (5)
-----------------------------------------------------------------------------------
p401k 13.20*** 10.57*** 13.20*** 13.34** 8.501
(6.98) (4.85) (6.99) (2.95) (1.73)
-----------------------------------------------------------------------------------
N 9275 9275 9275 9275 9275
-----------------------------------------------------------------------------------
t statistics in parentheses
* p<0.05, ** p<0.01, *** p<0.001
3.4 wcbregress 命令
在估计参数的聚类标准误差时,必须考虑总样本内不同样本群之间的相关性。但是,在许多程序中默认忽略这种相关性,这会使计算出的 OLS 标准误大大低于真实的 OLS 标准误。为了解决这个问题,应使用允许异方差或聚类间误差相关性存在的聚类稳健标准误 (CRVE)。
需要注意的是,该稳健标准误使用的前提假设是样本中的样本簇数量要相当大,一般来说要超过 30 组。当使用 CRVE 方法但样本簇的数量较小 (小于 30) 时,如果使用传统的 Wald 检验来检验系数有效性,可能会产生过度拒绝的问题。为了解决这个问题,我们引入新命令 wcbregress
。
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。
. sysuse auto.dta, clear
. wcbregress price mpg headroom trunk weight, group(rep78) level(99)
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
----------------------------------------------------------------------------------------
4. 相关推文
Note:产生如下推文列表的 Stata 命令为:
lianxh 聚类, m
安装最新版lianxh
命令:
ssc install lianxh, replace
专题:Stata命令 Stata:允许时间效应序列相关的面板二维聚类标准误-xtregtwo Stata:双重机器学习-多维聚类标准误的估计方法-crhdreg Stata:聚类分析-cluster 专题:数据处理 Stata:原始聚类自助法(wild cluster bootstrap)-boottest 专题:回归分析 聚类异质性:使用summclust进行统计推断 Stata:聚类标准误的纠结 Stata:聚类调整标准误笔记 Stata:聚类调整后的标准误-Cluster-SE 小样本下OLS估计的纠偏聚类标准误 专题:面板数据 Stata:面板聚类标准误-自动确定最优聚类层级和数量-xtregcluster wcbregress:面板聚类标准误
课程推荐:基于机器学习的因果推断方法
主讲老师:司继春
🍓 课程主页:https://gitee.com/lianxh/YGqjp
New! Stata 搜索神器:
lianxh
和songbl
GIF 动图介绍
搜: 推文、数据分享、期刊论文、重现代码 ……
👉 安装:
. ssc install lianxh
. ssc install songbl
👉 使用:
. lianxh DID 倍分法
. songbl all
🍏 关于我们
连享会 ( www.lianxh.cn,推文列表) 由中山大学连玉君老师团队创办,定期分享实证分析经验。 直通车: 👉【百度一下: 连享会】即可直达连享会主页。亦可进一步添加 「知乎」,「b 站」,「面板数据」,「公开课」 等关键词细化搜索。