🍓 课程推荐:2024 空间计量专题
主讲老师:范巧 (兰州大学)
课程时间:2024 年 10 月 2-4 日 (三天)
课程咨询:王老师 18903405450(微信)
作者:刘潍嘉 (兰州大学)
邮箱:weijialiu99@163.com
温馨提示: 文中链接在微信中无法生效。请点击底部「阅读原文」。或直接长按/扫描如下二维码,直达原文:
编者按:本文整理自 Fernando Rios-Avila 撰写的「Linear Regressions, OLS and Standard Errors」,特此致谢!
目录
1. 介绍
2. 我们的估计有多精确?
3. 同方差标准误
4. 稳健标准误
5. 单向聚类标准误差
6. 双向聚类标准误差
7. 如何估计 ?
8. Stata 案例
9. 结论
10. 参考文献
11. 相关推文
1. 介绍
线性回归 (Linear Regression,简称 LR) 是经济学家分析数据的基本工具。在众多参数估计方法中,普通最小二乘法 (Ordinary Least Squares,简称 OLS ) 最常用。当满足特定假设条件时,OLS 可以提供无偏和一致的估计结果。OLS 的一个优势是它容易应用并提供直接的解决方案。
考虑以下线性模型 (矩阵形式) ,并假设所有经典 LR 假设成立:
在这种情况下,OLS 估计量 为:
这可能是一个仅凭记忆就知道的公式,我们还可以从这里推导出估计值 和真实 之间的关系。
简单地说,如果 ,那么 是无偏的。
2. 我们的估计有多精确?
最后一个表达式有一个附加值。它显示估计的系数 可以在样本之间变化,同时也为我们提供了衡量该估计精确度的线索。具体来说,如果将 应用于方程的两边,我们将得到:
假设 是固定的,我们可以将这个方程重新写成我们习惯使用的方差协方差矩阵形式:
其中, 不一定是 的总体方差。相反,它是一个 方差协方差矩阵,将样本中所有观察的信息结合起来。
这可能会有点不太直观,并需要稍微扩展一下思维。在横截面样本中,我们只观察一个单位一次,但从理论上讲,我们观察到的只是该单位众多可能状态之一。在每一个可能状态中,该单位可能会有不同的 值。因此,如果我们能够看到所有这些状态,就有可能获得单位自身不可观测的方差 ,以及与其他单位的相关性 。
但我们可以做一个变形,用 替换 ,这样我们就得到了更传统的公式:
这通常被称为三明治公式。其中,
是面包。 是生菜。 是三明治最好的部分,肉!当然, 根据我们使用的肉的种类,我们会有不同种类的三明治。而在这种情况下,则对应了不同类型的标准误。
我们将从这个表达式中得到的不同类型的标准误。在接下来的内容中,我将省略任何自由度的修正,以简化一些表达式。
3. 同方差标准误
我们在计量经济学教程中学到的第一种标准误是基于同方差假设和无相关性的标准误。这意味着:
影响单位 的不可观测的误差 与影响单位 的不可观测误差是完全独立的。 对于不可观测的误差,其大小或变化在所有个体中都是一样的。
通过数学表达:
这将简化矩阵 为:
当然,这也将系数 的方差-协方差简化为:
4. 稳健标准误
接下来是稳健标准误差,也被称为 Huber-White 稳健标准误差。与前一种情况相比,它放宽了一个假设,明确地允许误差的方差在个体之间是不同的,但是仍然要求个体之间没有相关性。
这并不意味着在比较两个单位时方差总是会不同,只是它们可能不同。在这些条件下,我们可以在一定程度上简化 矩阵。
5. 单向聚类标准误差
聚类标准误放宽了关于如何估计方差协方差矩阵的另一个假设。与稳健标准误相比,聚类标准误假设不可观测变量在单位之间不一定是独立的。
例如,同一家庭的人会有类似的经历,因此他们的不可观测变量会有相关性。类似地,同一教室的学生也是如此,因为他们有着相同的课堂学习经历,或者同一公司的员工,因为他们处于相同的工作环境。
当然,我们仍然需要对数据施加一些限制。
首先,像大多数软件在几年前一直强制要求的那样,我们假设只有一个维度可以将个体相互关联起来。 其次,我们仍然需要假设,如果个体不属于同一 “群体”,它们的误差仍然是独立的。
为了在数学上表示这一点,让我定义一个函数 ,它给出了单位 所属的群体。换句话说,如果单位 属于群体 ,那么 。通过这个函数,我们可以定义个体之间的相关性如下:
在这种情况下, 矩阵将与我们用于稳健标准误差的矩阵非常相似。它仍然是分块对角矩阵,主对角线上的分块元素不为零 ,对角线以外的所有元素都为零:
我们可以举个例子使其可视化:
clear
set scheme white2
color_style tableau
set seed 1
set obs 50
gen r1=runiformint(1,4)
gen r2=runiformint(1,4)
gen id=_n
sort r1 r2
qui:mata:
r1=st_data(.,"r1")
r2=st_data(.,"r2")
rr1=J(rows(r1)*rows(r2),4,0)
k=0
for(i=1;i<=50;i++){
for(j=1;j<=50;j++){
if ((r1[i]==r1[j]) | (r2[i]==r2[j])) {
k++
rr1[k,]=(51-i,j,(r1[i]==r1[j]),(r2[i]==r2[j]))
}
}
}
rr1=rr1[1..k,]
end
getmata rr1*=rr1, replace force
two (scatter rr11 rr12 if rr13==1, ms(s) msize(2.1)) ///
(scatter rr11 rr12 if 51-rr11 == rr12, ms(s) msize(2.1) color(gs1)), ///
aspect(1) legend(off) xtitle("") ytitle("") yscale(off) xscale(off)
在这个图中,蓝色的方块表示我们允许同一组或聚类中的观察之间存在一些非零相关性。隐含地,我们也允许主对角线上的所有元素 (黑色部分) 不为零,这就是为什么聚类标准误差也对异方差性具有稳健性。
6. 双向聚类标准误差
对于双向,甚至多向的聚类标准误,情况如何呢?
正如我上面提到的,一维聚类标准误允许个体的未观察误差在彼此之间存在相关性,但前提是它们属于同一组。如果它们来自不同的组,那么不应该存在相关性。一维聚类标准误差假设人们只能通过一组聚类连接。
相对来讲,这个假设实际上也过强了。例如,人们往往通过许多渠道相互关联。我的未观察因素可能与我妻子和女儿的未观察因素相关,因为我们属于同一个家庭。然而,它们也可能与我的同事相关,因为我们都在同一个工作场所工作,因此有类似的经历。我也不能忽视我的研究生同学,因为我们有共同的经历 (因此未观察因素相关) 。而这其中一些关联是新的和独特的,也还有一些可能是重叠的。
因此,双向或多向聚类标准误差适用于这种更复杂的情况。具体而言,如果两个个体至少属于一个共同的组别,那么我们将假设未观察因素的相关性不为零。然而,我们往往无法区分哪种关联是导致这种相关性的关联。
为了从数学上说明这一点,定义函数 ,它表示在集合 (聚类变量) 中,一个单位属于哪个群体,如果 和 没有以任何方式连接 (基于聚类变量), 的值为零,否则为 1。
在这种情况下,如果 ,则 。从而, 矩阵将不再是块对角线,因为主对角线 (和块对角线) 之外的元素将不同于零。
我们再将其可视化:
two (scatter rr11 rr12 if rr13==1, ms(s) msize(2.1)), aspect(1) legend(off) ///
xtitle("") ytitle("") yscale(off) xscale(off) name(m1, replace)
two (scatter rr11 rr12 if rr14==1, ms(s) msize(2.1)), aspect(1) legend(off) ///
xtitle("") ytitle("") yscale(off) xscale(off) name(m2, replace)
two (scatter rr11 rr12 if rr14==1 | rr13==1, ms(s) msize(2.1)), aspect(1) ///
legend(off) xtitle("") ytitle("") yscale(off) xscale(off) name(m3, replace)
第一幅和第二幅图可视化了基于第一个和第二个聚类变量的相关关系,而图第三幅图将前两者进行结合。为了估计标准误差,我们需要使蓝色单元格不等于零,只对“无相关”的部分对施加零条件。
7. 如何估计 ?
到目前为止,我已经说明了应该如何考虑和选取标准误的估计。但你也可能对实际的方法感兴趣。具体来说,我们如何估算 和 。
估计方法实际上非常直接!由于每个单位在横截面中只出现一次,因此我们对各项的最优估计如下:
其中 是特定单位的未观察分量。所以基本上就是这样!一旦有了 ,我们只需要定义想要使用的假设 (同方差误差、异方差误差或聚类误差),确定哪些元素被假设为零,然后就完成了!
虽然,这里描述的内容在技术上是正确的,但与大多数软件中的实现方式相比,它的应用有两个限制。
完全忽略了自由度的作用和相应的修正。 这里描述的 的估计只适用于小数据集,因为它将创建一个 矩阵。这很容易占用计算机的内存运行等资源。
关于第 2 点。虽然还有其他简化数学的方法,但从不受限制的 的角度思考有助于理解数据中聚类和双向聚类的作用。
8. Stata 案例
在这里,我们将使用一个小案例来实现 4 种估计标准误差的方法。由于使用不受限制的 矩阵,所以我们将使用一个非常小的数据集:auto.dta。
** Load Data, create clusters and a constant
sysuse auto, clear
set seed 1
replace price = price / 1000
gen one = 1
gen c1 = runiformint(1,5)
gen c2 = runiformint(1,5)
** Load Data to Mata to easy manipulation
mata: y = st_data(.,"price")
mata: x = st_data(.,"mpg one")
** estimate betas, ixx, and erros
mata: xx = cross(x,x); ixx = invsym(xx);xy=cross(x,y)
mata: b = ixx * xy ; e = y:-x*b
同方差标准误:
mata: omega_0 = I(74)*mean(e:^2)
mata: vcv_0 = ixx * x' * omega_0 * x * ixx
mata: svcv_0 = diagonal(vcv_0):^.5;svcv_0
1
+---------------+
1 | .0523545211 |
2 | 1.154882583 |
+---------------+
稳健标准误:
mata: omega_1 = (e*e'):*I(74)
mata: vcv_1 = ixx * x' * omega_1 * x * ixx
mata: svcv_1 = diagonal(vcv_1):^.5;svcv_1
1
+---------------+
1 | .0566949707 |
2 | 1.35766526 |
+---------------+
单向聚类标准误:
mata: cc = st_data(.,"c1 c2")
mata: i1 = J(1,74,cc[,1]):==J(74,1,cc[,1]')
mata: i2 = J(1,74,cc[,2]):==J(74,1,cc[,2]')
mata: omega_2a = (e*e'):*i1; omega_2b = (e*e'):*i2
mata: vcv_2a = ixx * x' * omega_2a * x * ixx
mata: vcv_2b = ixx * x' * omega_2b * x * ixx
mata: svcv_2a = diagonal(vcv_2a):^.5
mata: svcv_2b = diagonal(vcv_2b):^.5
mata: svcv_2a, svcv_2b
1 2
+-----------------------------+
1 | .0816625514 .0293288459 |
2 | 2.010064686 .6935766918 |
+-----------------------------+
双向聚类标准误:
mata: i3 = i1:|i2
mata: omega_3 = (e*e'):*i3
mata: vcv_3 = ixx * x' * omega_3 * x * ixx
mata: svcv_3 = diagonal(vcv_3):^.5; svcv_3
1
+---------------+
1 | .0595359543 |
2 | 1.523244536 |
+---------------+
但对于双向聚类标准误,也有更常用的公式:
** First we need to create a variable that combines both clusters
mata: i4 = i1:&i2
mata: omega_4 = (e*e'):*i4
mata: vcv_aux = ixx * x' * omega_4 * x * ixx
mata: vcv_4 = vcv_2a + vcv_2b - vcv_aux
mata: svcv_4 = diagonal(vcv_4):^.5; svcv_4
1
+---------------+
1 | .0595359543 |
2 | 1.523244536 |
+---------------+
9. 结论
在本文中,我们简要介绍了从线性回归模型中对于不同类型的标准误的估计。
虽然大多数教科书已经涵盖了同方差、异方差和单向聚类误差下的标准误的基础知识,但我还没有看到一种直观的方法来理解单向聚类标准误差。
正如我在这里所展示的,双向或多向聚类标准误差的思想是允许个体之间的任意相关性,如果他们至少有一个共同的组别(一个聚类变量)。
现在,人们可能会尝试使用这种方法来允许所有单元之间的无约束关联。毕竟,我们都以某种方式联系在一起。然而,由于我们没有看到真正的未观测方差-协方差矩阵,如果不对 施加限制,则无法识别 的方差。
10. 参考文献
Abadie, Alberto, Susan Athey, Guido W Imbens, and Jeffrey M Wooldridge. 2022. “When Should You Adjust Standard Errors for Clustering?” The Quarterly Journal of Economics 138 (1): 1–35. -Link-
Cameron, A. Colin, Jonah B. Gelbach, and Douglas L. Miller. 2011. “Robust Inference With Multiway Clustering.” Journal of Business & Economic Statistics 29 (2): 238–49. -Link-
MacKinnon, James G., Morten Ørregaard Nielsen, and Matthew D. Webb. 2023. “Cluster-Robust Inference: A Guide to Empirical Practice.” Journal of Econometrics 232 (2): 272–99. -Link-
11. 相关推文
Note:产生如下推文列表的 Stata 命令为:
lianxh 标准误, m
安装最新版lianxh
命令:
ssc install lianxh, replace
专题:Stata教程 Stata:聚类标准误代码介绍 专题:Stata命令 Stata:允许时间效应序列相关的面板二维聚类标准误-xtregtwo Stata:双重机器学习-多维聚类标准误的估计方法-crhdreg 专题:回归分析 Stata:标准误!标准误! Stata:聚类标准误的纠结 acreg:允许干扰项随意相关的稳健性标准误 Stata:聚类调整标准误笔记 Stata:聚类调整后的标准误-Cluster-SE 小样本下OLS估计的纠偏聚类标准误 专题:面板数据 Stata:面板聚类标准误-自动确定最优聚类层级和数量-xtregcluster wcbregress:面板聚类标准误 专题:倍分法DID 倍分法(DID)的标准误:不能忽略空间相关性
🍓 课程推荐:2024 空间计量专题
主讲老师:范巧 (兰州大学)
课程时间:2024 年 10 月 2-4 日 (三天)
课程咨询:王老师 18903405450(微信)
🍉 扫码加入连享会微信群,提问交流更方便