菜鸟科技网

stata gls命令如何正确使用?

gls广义最小二乘法 的缩写,是 Stata 中进行多元线性回归的一个强大工具,它的核心功能是处理模型中存在的异方差性 和/或自相关性 问题。

stata gls命令如何正确使用?-图1
(图片来源网络,侵删)

什么是 GLS?为什么需要它?

我们回顾一下标准的线性回归模型(OLS, 普通最小二乘法):

Y = Xβ + ε

OLS 的一个核心假设是误差项的同方差性,即 Var(ε|X) = σ²I,这意味着:

  1. 同方差: 对于所有观测值,误差项的方差都是常数 。
  2. 无自相关: 不同观测值之间的误差项是相互独立的(协方差为0)。

在现实世界的许多数据中,这个假设可能不成立,导致异方差性自相关性

stata gls命令如何正确使用?-图2
(图片来源网络,侵删)
  • 异方差性: 误差项的方差不是一个常数,在研究收入与消费时,高收入人群的消费波动性通常大于低收入人群。
  • 自相关性: 误差项在不同时间点或空间单元上相关,这在时间序列数据(如 GDP、股价)和面板数据(如各省份数据)中尤为常见。

OLS 模型存在异方差或自相关,会带来什么后果?

  1. 系数估计量仍然是无偏的。
  2. 它不再是“最优”的(不再是 BLUE - Best Linear Unbiased Estimator)。
  3. 最严重的问题:系数的标准误是有偏的,导致 t 统计量、F 统计量和 p 值不可靠,你可能会得出某个变量显著(p<0.05),但实际上它并不显著。

GLS 的作用:当误差项的方差-协方差矩阵 已知或可以估计时,GLS 通过对数据进行变换,将一个存在异方差/自相关的模型转换为一个满足 OLS 假设的新模型,从而得到有效(Efficient)且无偏的估计量。


gls 命令的基本语法

gls 命令位于 Stata 的 xt 套件中,因此需要先安装(如果尚未安装):

ssc install xtgee, replace

基本语法结构如下:

stata gls命令如何正确使用?-图3
(图片来源网络,侵删)
gls depvar [indepvars] [if] [in] [, options]

最关键的部分是 options,它告诉 Stata 如何处理误差项的结构。


gls 命令的核心选项:指定方差-协方差结构

gls 的强大之处在于其 vce() 选项,它允许你灵活地指定误差项的方差-协方差矩阵 的结构,以下是几种最常用的结构:

1 处理异方差性

当数据存在异方差但无自相关时(常见于横截面数据),可以使用 vce(independent) 选项。

语法:

gls y x1 x2, vce(independent)

作用

  • independent 告诉 Stata 假设不同观测值的误差项是相互独立的(无自相关),但它们的方差可以不同。
  • Stata 会使用一种方法(通常是可行的广义最小二乘法, FGLS)来估计每个观测值的独特方差,然后进行加权最小二乘回归。
  • 这会得到对异方差稳健的标准误,类似于 reg y x1 x2, vce(robust) 的效果,但 gls 的框架更为通用。

2 处理自相关性(时间序列数据)

当数据是时间序列且存在自相关时,可以使用 vce(ar#)vce(ma#) 选项。

语法 (自回归模型 AR):

gls y x1 x2, vce(ar1) // 假设一阶自相关
gls y x1 x2, vce(ar(1 2)) // 假设一阶和二阶自相关

作用

  • vce(ar1) 假设误差项遵循一阶自回归过程,即 εₜ = ρεₜ₋₁ + uₜuₜ 是白噪声。
  • Stata 会先估计自相关系数 ,然后对原始数据进行准差分变换:yₜ - ρyₜ₋₁x₁ₜ - ρx₁ₜ₋₁...,最后对变换后的数据使用 OLS,这就是Cochrane-Orcutt 或 Prais-Winsten 方法。

语法 (移动平均模型 MA):

gls y x1 x2, vce(ma1) // 假设一阶移动平均

作用

  • vce(ma1) 假设误差项遵循一阶移动平均过程,即 εₜ = uₜ + θuₜ₋₁
  • GLS 会找到合适的变换来消除这种 MA 结构。

3 处理同时存在异方差和自相关

这是最复杂也最常见的情况,尤其是在面板数据或时间序列中。

语法 (组合结构):

gls y x1 x2, vce(ar1) independent // AR(1) 误差 + 异方差

或者更简洁的写法:

gls y x1 x2, vce(ar1) // 通常默认允许异方差

作用

  • vce(ar1) 不仅处理了 AR(1) 自相关,其估计过程本身也允许方差在不同观测值之间变化,即同时处理了异方差和自相关。

gls vs. 其他相关命令

Stata 中处理异方差和自相关的命令不止一个,理解它们的区别很重要。

命令 主要用途 核心特点 适用数据类型
regress, vce(robust) 处理异方差 “三明治”估计量,它不改变系数估计值,只修正标准误,计算简单,但模型设定可能仍然有偏。 横截面数据
newey 处理自相关和异方差 专门为时间序列设计,使用 Newey-West 标准误,可以处理直到指定阶数的自相关和异方差。 时间序列数据
prais 处理 AR(1) 自相关 使用 Prais-Winsten 方法,是 gls, vce(ar1) 的一个特例,专注于处理 AR(1) 误差结构。 时间序列数据
gls 广义框架 最灵活,可以指定复杂的方差-协方差结构(如 AR, MA, 异方差等),并同时对系数和标准误进行重新估计,通常更有效率。 时间序列、面板数据、横截面数据

简单来说

  • 如果你只想快速得到对异方差稳健的 p 值,用 reg, vce(robust)
  • 如果你有时间序列数据,担心自相关和异方差,用 neweygls
  • 如果你确信误差是 AR(1) 结构,用 praisgls, vce(ar1)
  • 如果你需要处理非常复杂的误差结构(如面板数据中的组内相关和异方差),gls 是更好的选择。

完整示例

我们使用 Stata 自带的 airline.dta 数据集,该数据集是经典的乘客数量月度数据,存在明显的趋势和季节性,误差很可能存在自相关。

// 1. 加载数据
sysuse airline, clear
// 2. 绘图观察数据
line air, ytitle("Monthly Airline Passengers (1000s)") xtitle("Time")
// 3. 建立简单的 OLS 模型(作为对比)
regress air t
// 查看结果,记下系数和标准误
// 4. 使用 GLS 处理可能的自相关
// 我们假设误差项存在一阶自相关
gls air t, vce(ar1)
// 对比结果:
// 你会发现 "t" 的系数估计值可能会与 OLS 结果略有不同。
// 更重要的是,标准误会发生变化,t 统计量和 p 值也会相应改变。
// GLS 模型的 AIC/BIC 通常会更低,表明模型拟合得更好。
// 5. 使用 GLS 同时处理自相关和异方差
gls air t, vce(ar1) independent
// 对比 "gls air t, vce(ar1)" 和 "gls air t, vce(ar1) independent" 的输出
// 你会发现标准误等结果可能会有细微差别,后者明确允许异方差结构。
// 6. 使用 newey 命令进行对比(时间序列常用)
newey air t, lag(4) // lag(4) 表示处理到4阶自相关
// 比较 newey 和 gls 的结果,它们通常会非常接近,因为两者都是处理时间序列相关性的有效方法。

重要注意事项

  1. 模型设定是前提:GLS 只能修正由于误差项违反假设而导致的问题,如果你的模型遗漏了重要的变量、函数形式设定错误(如应该是对数形式而非线性),GLS 也无法得到正确的结果。“垃圾进,垃圾出” (Garbage in, garbage out) 的原则依然适用。
  2. vce() 选项的选择:选择正确的 vce() 结构至关重要,这通常基于经济理论、对数据的了解或残差诊断(如使用 predict residuals, residuals 然后对残差进行自相关或异方差检验)。
  3. gls vs. xtgee:对于面板数据,xtgee (Generalized Estimating Equations) 是 gls 的一个扩展,专门用于处理面板数据的聚类相关结构(如 exchangeable, ar, stationary 等),如果你的数据是面板数据,xtgee 通常是更自然、更方便的选择。
  4. 输出解读gls 的输出与 regress 类似,但请务必关注底部的 "Wald chi2(1)" 和 "Prob > chi2" 统计量,它们用来检验整个模型的联合显著性。

gls 是 Stata 中一个功能强大且灵活的命令,用于在误差项存在异方差性、自相关性或两者兼有的情况下进行有效的回归分析,它的核心在于通过 vce() 选项精确地指定误差项的方差-协方差结构,虽然 regress, vce(robust)newey 等命令在某些场景下更简单直接,但 gls 提供了一个更通用的框架,是高级计量经济学分析中的重要工具。

分享:
扫描分享到社交APP
上一篇
下一篇