计量小课:计量经济学基础
计量经济学计量小课

异方差到底是谁的方差不同?截面和面板中有什么不同表现?怎么检验和解决?

你研究\"教育对个人收入的影响\"。你用 OLS 跑了一个回归:

作者:计量科研导航站发布:2026-07-29★★

一、开篇:同一个回归模型,富人的工资波动和穷人的工资波动一样大吗?

你研究"教育对个人收入的影响"。你用 OLS 跑了一个回归:

Incomei=β0+β1Educationi+εi\text{Income}_i = \beta_0 + \beta_1 \cdot \text{Education}_i + \varepsilon_i

OLS 的标准假设之一是同方差性(Homoskedasticity):Var(εiXi)=σ2\text{Var}(\varepsilon_i \mid X_i) = \sigma^2,即误差项的方差是一个常数——无论这个人受教育程度是多少,他收入的不可解释部分的波动幅度是相同的。

但你想一想——这个假设合理吗?

一个只有小学学历的人,他的收入大概率只能在最低工资附近徘徊,波动范围很小——无论他怎么努力、无论运气好坏,收入的上限被他的学历锁死了。一个博士毕业的人呢?他可能在一家创业公司拿到高薪,也可能在学术界拿着一份不高但稳定的薪水,也可能在工业界拿着天价薪酬——他的收入波动范围远大于低学历者。换句话说:

Var(εEducation=6)Var(εEducation=20)\text{Var}(\varepsilon \mid \text{Education}=6) \ll \text{Var}(\varepsilon \mid \text{Education}=20)

这就是异方差(Heteroskedasticity)——误差项的方差在不同观测之间不是常数,而是系统性地依赖于某些变量的取值。

核心信息:异方差指的是"误差项 ε 的方差在不同的 X 取值处不同"——不是 Y 的方差,不是 X 的方差,而是 ε 的条件方差随 X 变化。在截面数据中,异方差通常表现为"误差的离散度随某个连续变量(如收入、企业规模)的增大而放大"。在面板数据中,异方差有两层——同一时点不同个体的误差方差不同(组间异方差),以及同一个体在不同时间的误差方差不同(组内异方差)。截面数据的标准解决方案是稳健标准误(White/Huber),面板数据的标准方案是聚类稳健标准误——把每个个体在不同时期的误差视为一个'簇',允许簇内任意相关和异方差。


二、异方差到底是谁的方差不同?——三个"不是"

2.1 不是 Y 的方差不同

Y 的方差可以随 X 变化——这是回归模型本身预测的。如果你的模型是 Income=1000+500Education\text{Income} = 1000 + 500 \cdot \text{Education},那么 Education = 20 的人的预测收入天然就比 Education = 6 的人高——Y 的条件均值不同,Y 的方差中有一部分被 X 解释了。这不是异方差——这是回归模型在工作。

2.2 不是 X 的方差不同

X 的方差是样本特征——教育年限在你的样本中是集中在 9—16 年还是分散在 0—22 年——这不影响 OLS 的经典假设。X 是可以有任意分布的。

2.3 异方差是 ε 的条件方差不同

Var(εiXi)常数\text{Var}(\varepsilon_i \mid X_i) \neq \text{常数}

用白话翻译:在你用 X 解释了 Y 的所有"可解释部分"之后,剩下的那个"不可解释的噪声"的波动幅度——在不同的 X 取值处不同。 这个噪声的波动幅度不应该系统性地依赖于 X 的大小。如果它依赖了,你就有异方差。


三、不用跑检验——从理论和逻辑上就能判断异方差的存在

在跑任何正式的异方差检验之前,你往往已经可以通过理论和常识推断——"这个数据几乎肯定存在异方差"。以下四种逻辑可以帮助你做出这个预先判断。

3.1 逻辑一:Y 的取值本身限制了误差的波动范围

如果你的 Y 是"计数""支出""收入"这类下限为零、上限没有硬约束的变量,Y 的绝对值越大,其自然波动幅度通常也越大。

  • 年收入 5000 元的人——误差最多让他的收入在 0 到 10000 之间摇摆。
  • 年收入 50 万元的人——误差可以让他的收入在 10 万到 500 万之间摇摆。

Y 的条件均值越大 → Y 的自然波动范围越大 → 误差的波动范围也越大 → 异方差。 这是截面数据中最常见的异方差模式——"喇叭形"(方差随条件均值增大而发散)。

相反,如果 Y 是"比例""百分比""考试成绩(0—100)"这类有明确上下限的变量,Y 在中间时波动最大,在两端接近 0 或 100% 时波动必然减小——这同样意味着异方差,但模式是"纺锤形"。

3.2 逻辑二:观测单位本身的大小差异巨大

在企业和行业数据中:

  • 小微企业(年营收 50 万)和华为(年营收 6000 亿)放在同一个回归里——小微企业的利润波动范围是一两万元,华为的利润波动范围是几十上百亿元。
  • 结论:只要你的样本中包含"体量"差异极大的观测单位,异方差几乎是必然的。 这也是为什么企业层面的实证研究几乎默认要使用稳健标准误。

类似地,在跨国比较中——卢森堡(人口 60 万)和美国(人口 3.3 亿)在同一个样本里,任何变量的波动量级都不可同日而语。

3.3 逻辑三:Y 是分组汇总数据

如果你的 Y 是"某省的人均 GDP""某行业的平均工资""某市的犯罪率"——每个观测本身就是一个组的均值。组的样本量不同(大省 vs 小省),均值的估计精度不同。样本量大的省,人均 GDP 的估计更精确(误差方差更小);样本量小的省,误差方差更大。

分组汇总数据几乎永远存在异方差——误差的方差和组的样本量成反比。 在这种情况下,使用加权最小二乘(WLS,权重 = 组的样本量)比 OLS + 稳健标准误更有效。

3.4 逻辑四:Y 是 0/1 变量(线性概率模型)

如前一篇文章所述,伯努利分布的方差是 p(1−p)——构造性异方差,必然存在。


四、截面数据中的异方差——表现形式、检验和解决

4.1 表现形式

截面数据中的异方差几乎总是以"误差方差随某个 X 或 Y^\hat{Y} 变化"的形式出现:

  • 喇叭形:Var(ε | X) 随 X 增大而增大(最常见的模式,如收入、企业规模数据)。
  • 纺锤形:Var(ε | X) 在 X 的中间最大,在两端最小(比例、考试成绩、饱和度指标)。
  • 不规则模式:方差在某些特定的 X 区间突然变化(如政策断点前后的不确定性不同)。

诊断工具rvfplot(残差 vs 拟合值图)是最直观的初始检查。如果残差的散布宽度在 Y^\hat{Y} 的不同位置明显不同 → 异方差的强烈信号。

4.2 检验方法

(a)Breusch-Pagan 检验(BP 检验)——最常用

H₀: 同方差(Var(εX)=σ2\text{Var}(\varepsilon \mid X) = \sigma^2)。

BP 检验将残差的平方 ei2e_i^2 对所有的 X 做回归。如果 X 能显著解释 ei2e_i^2 的变异 → 误差方差和 X 有关 → 拒绝同方差。

reg y x1 x2 x3
estat hettest          // 默认使用拟合值 ŷ
estat hettest, rhs     // 使用所有 X(而非拟合值)
estat hettest x1 x2    // 只对指定的 X 检验

BP 检验的局限:它假设异方差是 X 的线性函数。如果异方差的模式不是线性的(比如和 X² 有关),BP 检验可能会漏检。

(b)White 检验——更通用

White 检验将 ei2e_i^2 对 X、X² 和所有 X 之间的交叉项做回归。它不预设异方差的具体形式——因此更灵活,但在变量较多时消耗大量自由度,小样本中功效可能较低。

reg y x1 x2 x3
estat imtest, white

(c)实际操作建议

在实证论文中,BP 检验就足够了。你不需要把 BP、White 和 Goldfeld-Quandt 全部跑一遍——一个检验证明存在异方差,然后用稳健标准误处理。报告一句话:"Breusch-Pagan 检验拒绝同方差原假设(p < 0.01),因此全文使用异方差稳健标准误。"

4.3 解决方法

方法一:稳健标准误(Huber-White)——最常用

Var(β^)robust=(XX)1(i=1nei2XiXi)(XX)1\text{Var}(\hat{\beta})_{\text{robust}} = (X'X)^{-1} \left(\sum_{i=1}^n e_i^2 X_i X_i'\right)(X'X)^{-1}

这个公式的核心思想:不假设每个观测的误差方差相同(都是 σ²),而是让每个观测用自己的残差平方 ei2e_i^2 来估计自己的方差。 这被称为"三明治估计量"——X'X 是面包,中间的 ei2XiXi\sum e_i^2 X_i X_i' 是馅。

reg y x1 x2 x3, robust

关键事实:稳健标准误不改变系数估计——β^\hat{\beta} 和普通 OLS 完全相同。它只改变标准误(以及由此衍生的 t 值、p 值和置信区间)。在异方差存在时,稳健标准误给的 SE 比普通 OLS 更可靠。

方法二:加权最小二乘(WLS)——更有效但需要知道"权重"

如果你知道异方差的具体形式——比如 Var(εi)=σ2Xi2\text{Var}(\varepsilon_i) = \sigma^2 \cdot X_i^2——你可以用 1/Xᵢ 作为权重,让加权后的残差方差近似为常数。WLS 是 BLUE(在正确指定权重的前提下)——比 OLS + 稳健标准误更有效。

但在实践中,你很少确切知道异方差的形式——猜测错误的权重会让 WLS 比 OLS 更差。因此,OLS + 稳健标准误是实证中的默认方案,WLS 只在你有明确的先验理论(如分组数据用样本量加权)时才推荐使用。

方法三:取 ln——不一定是为了异方差,但常常有帮助

对 Y 取 ln 常常能缓解异方差——因为它将"绝对波动量级"压缩为"相对波动比例"。年收入 5000 元和 50 万元的绝对波动范围差了两个数量级,但在 ln 尺度上,两者的相对波动在比例意义上是可比的。这不是取 ln 的主要目的(主要目的是弹性和半弹性解读),但它是取 ln 的一个有益的"副作用"。


五、面板数据中的异方差——比截面多了一整个维度

5.1 面板数据中异方差的两种形态

在面板数据中,误差 εit\varepsilon_{it} 有两个维度——个体(i)和时间(t)。异方差也可以沿这两个维度展开:

(a)组间异方差(Groupwise Heteroskedasticity):不同个体的误差方差不同。

Var(εit)=σi2(每个个体有自己的方差)\text{Var}(\varepsilon_{it}) = \sigma_i^2 \quad \text{(每个个体有自己的方差)}

例如:在研究"企业 R&D 支出"的面板回归中,华为(大企业)的 R&D 支出波动远大于一家小科技公司——个体之间的方差不同。

(b)组内自相关(Serial Correlation / Within-Group Correlation):同一个体在不同时期的误差是相关的。

Cov(εit,εis)0ts\text{Cov}(\varepsilon_{it}, \varepsilon_{is}) \neq 0 \quad \text{(} t \neq s \text{)}

例如:华为今年的 R&D 支出和明年的 R&D 支出是相关的——因为企业的研发战略、管理风格、技术路径等不随时间变化的因素同时影响各期的 R&D 支出。

严格来说,组内自相关不属于"异方差"(异方差是方差不同,自相关是协方差不为零)——但在面板数据的实践中,这两者几乎总是一起出现、一起处理。

5.2 面板数据中异方差的表现——为什么比截面更隐蔽?

在截面数据中,你可以画一张 rvfplot 直观地看到残差是否发散。在面板数据中,情况更复杂:

  • 同一个体的残差在时间上"聚成一簇"——如果华为在各年的残差都为正(都高于模型的预测),这不意味着模型错了——它只是意味着华为有一些模型没有控制的"固定优势"(这正是固定效应模型要去除的)。
  • 如果使用固定效应模型(xtreg, fe),个体层面的不随时间变化的因素已经被消除了——剩下的残差中,仍然可能存在不同个体之间的方差差异(组间异方差)和同一个体内的时序相关。

5.3 检验方法

(a)组间异方差检验——修正的 Wald 检验

在固定效应模型之后:

xtreg y x1 x2, fe
ssc install xttest3
xttest3

H₀: σi2=σ2\sigma_i^2 = \sigma^2 对所有 i(组间同方差)。p < 0.05 → 存在组间异方差。

(b)组内自相关检验——Wooldridge 检验

ssc install xtserial
xtserial y x1 x2

H₀: 无一阶自相关。p < 0.05 → 存在组内自相关。

(c)同时检验组间异方差和组内自相关——Breusch-Pagan LM 检验

在随机效应模型之后:

xtreg y x1 x2, re
xttest0

这个检验比较随机效应和混合 OLS 的适用性——它本质上是在检验个体效应(σu2\sigma_u^2)是否为零。如果个体效应显著存在 → 同一个体不同期的误差相关(因为它们共享个体效应 uᵢ)。

5.4 解决方法

方法一:聚类稳健标准误(Clustered Standard Errors)——面板实证的行业标准

Var(β^)cluster=(XX)1(i=1nXiε^iε^iXi)(XX)1\text{Var}(\hat{\beta})_{\text{cluster}} = (X'X)^{-1} \left(\sum_{i=1}^n X_i' \hat{\varepsilon}_i \hat{\varepsilon}_i' X_i\right)(X'X)^{-1}

核心思想:允许同一个体(i)在不同时期(t)的误差之间存在任意形式的相关和异方差——不需要假设它们独立,不需要假设它们同方差。 每个个体被视为一个"簇(Cluster)",簇内的误差可以任意关联,簇之间的误差视为独立。

xtreg y x1 x2, fe cluster(id)    // 个体层面聚类
reg y x1 x2, cluster(id)         // OLS + 聚类标准误

聚类的层级选择

  • 聚类到个体层面(cluster(id))——最常用、最稳健的选择。
  • 如果你的处理变量在更高的层级上变化(比如"省"层面的政策),你应该聚类到那个更高的层级(cluster(province))——因为同一个省内不同个体的误差可能是相关的。
  • 如果 T 很小(比如 T = 2 或 3),聚类到个体层面的标准误可能被低估——此时可以使用 Bootstrap 标准误或 wild bootstrap。

方法二:FGLS(可行广义最小二乘)——更有效但更脆弱

FGLS(Feasible Generalized Least Squares)先估计异方差和自相关的结构,然后用这个估计来做加权。xtgls 命令可以实现。

xtgls y x1 x2, panels(heteroskedastic) corr(ar1)

FGLS 在正确指定方差结构时比 OLS + 聚类标准误更有效。但如果你猜错了方差结构,FGLS 的标准误可能被严重低估——你会"过度显著"。

因此,在经济学实证中,OLS/FE + 聚类稳健标准误是绝对的主流。FGLS 在 T 很大、N 较小(如宏观面板——20 个国家、50 年的数据)时更常见。


六、截面 vs 面板——异方差处理方案速查

截面数据 面板数据
异方差的典型表现 Var(εᵢ) 随 Xᵢ 或 Ŷᵢ 变化(喇叭形) 组间异方差 + 组内自相关(双重结构)
首选检验 Breusch-Pagan(estat hettest 修正 Wald(组间)+ Wooldridge(自相关)
首选解决方案 OLS + 稳健标准误(robust FE + 聚类到个体层面(cluster(id)
常用备选方案 取 ln(有时自然缓解异方差) FGLS(T 大 N 小时更常见)
几乎总是需要吗? 企业/收入/规模数据 → 几乎总是 面板数据 → 几乎总是需要聚类标准误
Stata 一行命令 reg y x, robust xtreg y x, fe cluster(id)

七、常见误区

7.1 误区一:异方差导致系数有偏

不对。 异方差只影响标准误的估计——不影响系数的无偏性。在 Cov(X, ε) = 0 的假设下,OLS 在异方差存在时仍然是无偏且一致的。你不需要"修正"系数——你只需要"修正"标准误。

这也是为什么使用稳健标准误后,系数表中的 Coefficient 列完全不变,只有 Std. Err.、t、p、CI 会变。

7.2 误区二:BP 检验不显著 → 不需要稳健标准误

BP 检验不显著只意味着你没有检测到线性形式的异方差——不一定意味着同方差成立。在样本量不是特别大时,BP 检验的功效有限。在实证中,如果你的数据类型天然易有异方差(企业数据、收入数据、分组数据、0/1 因变量),即使 BP 不显著,使用稳健标准误也是审稿人认可的良好实践。

7.3 误区三:面板数据中,固定效应已经解决了异方差

固定效应消除的是不随时间变化的个体异质性(uᵢ 被去除了)。它不消除 εit\varepsilon_{it} 中的异方差——不同的个体在去除固定效应后仍然可能有不同的误差方差(组间异方差),同一个体的不同时期误差仍然可能相关(组内自相关)。FE 之后仍然需要聚类标准误。

7.4 误区四:聚类标准误在聚类数太少时也有效

聚类标准误的渐近理论依赖于"聚类数 → ∞"。如果聚类数太少(比如只有 10 个省份),聚类标准误会严重低估真实的标准误。经验法则:聚类数 < 20 → 谨慎使用聚类标准误;聚类数 < 10 → 考虑使用 wild bootstrap 或更保守的推断方法。


八、总结

异方差的六条核心知识

  1. 异方差是 ε 的条件方差随 X 变化——不是 Y 的方差,不是 X 的方差。 它说的是"在控制了 X 之后,剩余噪声的波动幅度不是统一的"。

  2. 你不需要等检验结果才知道异方差存在。 如果你的数据涉及收入、企业规模、跨国比较、分组汇总、或 Y 是 0/1——从理论和逻辑上,异方差几乎必然存在。

  3. 截面数据:BP 检验 + 稳健标准误。 这是实证中最标准的组合——检验确认存在异方差,robust 修正标准误。系数不变,推断变可靠。

  4. 面板数据:组间异方差 + 组内自相关 = 双重问题。 标准方案是聚类到个体层面的稳健标准误(cluster(id))——允许每个个体内部的误差任意相关、任意异方差。

  5. OLS + 稳健/聚类标准误 > WLS/FGLS(在大多数实证场景中)。 稳健标准误不要求你知道异方差的具体形式——你不需要猜测"方差和哪个 X 的几次方成正比"。

  6. 异方差不导致偏误——只导致标准误不可靠。 你不需要"修正系数"——你只需要让推断变得诚实。


一句话收尾

"异方差不是你数据的'缺陷'——它是你数据中天然存在的、关于'不确定性在不同位置不是均等的'这一事实的诚实反映。富人的收入波动比穷人大、大企业的利润波动比小企业大、大国的经济波动比小国大——这不是模型的问题,这是世界本来的样子。你需要做的不是'消除'它,而是用稳健标准误告诉读者:我考虑了这种不均等的不确定性,我的推断仍然是诚实的。"


九、B站/公众号呈现建议

  • B站视频:建议用"喇叭口"作为贯穿全篇的视觉隐喻。开场:一张散点图——X 轴是教育年限,Y 轴是收入。数据点呈喇叭形——低教育端紧紧聚在底部,高教育端散开成一个大的喇叭口。旁白:"同方差假设说——不管你受教育多少年,你的收入在'不可解释'部分的波动幅度是一样的。这张图说——显然不是。"第一幕"谁的方差?":画面上三条曲线——Y 的方差曲线(随 X 上升——这不是异方差,这是回归在起作用)、X 的方差曲线(不随 X 变化——这不是异方差)、ε 的方差曲线(随 X 上升——就是它!)。高亮第三条。旁白:"异方差不是 Y 的方差不同,不是 X 的方差不同——是你控制 X 之后,剩余噪声的波动在不同的 X 处不同。"第二幕"截面 vs 面板":左边画面——截面数据的喇叭形散点图,标注"BP 检验 + robust"。右边画面——面板数据的三维图(个体 × 时间 × Y),同一个体的各期数据点被一个彩色气泡框住。气泡有大有小(组间异方差),气泡内的点彼此靠近(组内自相关)。标注"聚类标准误 = 以个体为单位的'任意异方差 + 任意自相关'"。第三幕"如何解决":一个工具箱动画——robust(三明治图标)、聚类标准误(一簇数据点被框在一起)、取 ln(数值被压缩的对数曲线)、WLS(天平,一端加权的图标)。前三件工具被点亮,旁白:"前两个是实证中的主力——不需要猜异方差的形式。"
  • 公众号:异方差的"三个不是"(不是 Y 的方差、不是 X 的方差、是 ε 的条件方差)建议做成图解。截面 vs 面板的检验 + 解决方案对比表做成核心信息图。聚类标准误的原理("每个个体是一个簇,簇内任意相关,簇间独立")建议用一个简化的五个体三时期数据矩阵的可视化。四种逻辑(Y 本身的取值限制 / 观测单位体量差异大 / 分组汇总数据 / 0/1 因变量)建议做成"场景推断卡"。误区四则做成警告卡。Stata 命令速查(截面:reg, robust + estat hettest;面板:xtreg, fe cluster(id) + xttest3 + xtserial)制成代码块卡片。
  • 推荐标题
    • 主标题:《异方差到底是谁的方差不同?——截面和面板中怎么发现、怎么解决?》
    • 备选标题:《富人的收入波动比穷人大——这是异方差,不是数据错了》
    • 新媒体标题:《你的残差是喇叭形的吗?——异方差从理论判断到检验的完整指南》
  • 金句提炼

    "异方差不是模型出了问题——是世界本来如此。富人的收入波动就是比穷人大,大企业的利润波动就是比小企业大。你需要做的不是假装这种不同不存在,而是用稳健标准误诚实地告诉读者:我考虑了。"

    "稳健标准误不改变系数——它改变的是你对系数的'信心'。系数还是那个系数,但你现在给它配了一个更诚实的标准误。"

    "面板数据的异方差有两层——不同个体的波动幅度不同(组间异方差),同一个体的各期波动彼此牵连(组内自相关)。聚类标准误用一句话回应了这两层问题:'我以个体为单位,允许内部任意乱来。'"

    "Breusch-Pagan 检验不显著,不意味着同方差成立——可能只是你的样本量还没大到能让检验发现它。在收入、企业、跨国数据中,把 robust 当成默认选项——它不是过度保守,是诚实。"