以数据集 nerlove.dta 为例,演示如何在 Stata 中处理异方差。
此数据集包括以下变量:
tc ( 总成本 ) ;
q ( 总产量 ) ;
pl ( 工资率 ) ;
pk ( 资本的使用成本 ) ;
pf ( 燃料价格 ) ;
相应的对数值 lntc 、 lnq 、 lnpl 、 lnpk 、 lnpf
1.画残差图
- 通过观察残差图,如果残差随着拟合值或某个解释变量的变化而呈现系统性的变化趋势(如增大或减小),则可能表明存在异方差性。异方差性意味着误差项的方差不是常数,而是随着某些变量的变化而变化。
首先,以 OLS 估计对数形式的成本函数:
use nerlove.dta,clear
reg lntc lnq lnpl lnpk lnpf
完成回归后,可使用以下命令得到残差图:
rvfplot (residual-versus-fitted plot)
rvpplot varname (residual-versus-predictor plot)
varname :是变量的名字,把它代称自己数据的名字。
- 初步考察异方差,画残差与拟合值的散点图: rvfplot当总成本 (lntc 的拟合值 ) 较小时,扰动项的方差较大。
- 考察残差与解释变量 lnq 的散点图: rvpplot lnq当产量 (lnq) 越小时,扰动项的方差越大。初步判断是复杂性的异方差
2.BP检验
- BP检验的基本思想是通过检验残差的平方与自变量之间是否存在显著的相关关系来判断模型的异方差性。在标准的线性回归模型中,假设误差项(即残差)的方差是恒定的。然而,在实际应用中,这一假设可能不成立,即存在异方差性。BP检验通过构建一个辅助回归模型来检验这种异方差性。
在 Stata 中完成回归后,可使用以下命令进行 BP检验:
hettest // 对所有变量进行 BP 检验
或:estat hettest,iid rhs
其中,“ estat ”指 post-estimation statistics( 估计后统计量 ),即在完成估计后所计算的后续统计量。
“hettest” 表示 heteroskedasticity test 。
选择项 ”iid” 表示仅假定数据为 iid (独立同分布),而无须正态假定。
选择项”rhs”表示使用方程右边的全部解释变量进行辅助回归,默认使用拟合值 进行辅助回归。
如想指定使用某些解释变量进行辅助回归,可使用命令:
hettest variable // 对指定变量进行 BP 检验
或: estat hettest [varlist],iid
其中, ”[varlist]” 为指定的变量清单;而 ”[ ]”表示其中的内容可出现在命令中,也可不出现。
- 回到 Nerlove(1963)的例子:
- quietly reg lntc lnq lnpl lnpk lnpf //其中,前缀(prefix) ”quietly”表示执行此命令,但不在Stata的结果窗口显示运行结果
- 首先,使用拟合值 进行 BP 检验: estat hettest, iid
- 其次,使用所有解释变量进行 BP 检验: estat hettest, iid rhs
- 最后,使用变量 lnq 进行 BP 检验: estat hettest lnq,iid
各种形式 BP 检验的 𝑝 值都等于 0.0000,故强烈拒绝同方差的原假设,认为存在异方差。
3.怀特检验
- 基本思想是如果模型存在异方差性,那么残差的平方应该与模型的解释变量有关。
- 构造一个辅助回归模型,以残差的平方作为因变量,将原始回归模型中的解释变量及其平方项和交叉项作为自变量。如果辅助回归模型的解释变量对残差平方没有影响,即原假设成立,那么辅助回归模型的R平方应该很小。
在 Stata 完成回归后,可使用如下命令进行怀特检验:
whitetst
或: estat imtest,white
其中, ”imtest” 指 information matrix test( 信息矩阵检验 ) 。
- 继续以Nerlove(1963)为例:
- estat imtest,white
4.稳健标准误
稳健标准误在 Stata 中十分简单,在命令 reg之后加选择项加“ robust ”即可
reg lntc lnq lnpl lnpk lnpf, robust // 截面数据
reg lntc lnq lnpl lnpk lnpf, vce(hc2) // 小样本下,更稳健
reg lntc lnq lnpl lnpk lnpf, vce(hc3) // 小样本下,更稳健
混合截面数据或面板数据,应使用 vce (cluster clustvar) 选项。
5.FGLS (可行的GLS估计量)
纠正异方差的 FGLS 程序:
① 利用估计模型 𝑦 = 𝛽 0 + 𝛽 1 𝑥 1 + 𝛽 2 𝑥 2 + ⋯ + 𝛽 𝑘 𝑥 𝑘 + 𝜇 得到 OLS 的残差
② 对残差 进行平方,然后再取自然对数得到 log()
③ 利用log()对 𝑥 1 , 𝑥2, … . , 𝑥𝑘进行回归,得到拟合值
④ 获得拟合值的指数:
⑤ 以 1/ 为权数,用 WLS 估计方程 𝑦 = 𝛽 0 + 𝛽 1 𝑥 1 + 𝛽 2 𝑥 2 + ⋯ + 𝛽 𝑘 𝑥 𝑘 + 𝜇
得到扰动项方差的估计值 后,可作为权重进行 WLS 估计。
假设 存储在变量 var 上,可通过如下 Stata 命令来实现 WLS :
reg y x1 x2 x3 [aw=1/var]
其中,“ aw” 表示 analytical weight ,为扰动项方差 (不是标准差 ) 的倒数。
- 继续以 Nerlove(1963)为例。
- 首先计算残差,并记为 e1 :quietly reg lntc lnq lnpl lnpk lnpfpredict e1,residual
- 其次,生成残差的平方,并记为 e2:gen e2=e1^2
- 将残差平方取对数,gen lne2=log(e2)
- 假设 为变量 lnq 的线性函数,进行辅助回归:reg lne2 lnq lnpl lnpk lnpf
- 计算辅助回归的拟合值,并记为 lne2f:predict lne2f
- 去掉对数后,即得到方差的估计值,并记为 e2f :gen e2f=exp(lne2f)
- 使用方差估计值的倒数作为权重,进行 WLS 回归:reg lntc lnq lnpl lnpk lnpf [aw=1/e2f]
使用 OLS 时,变量 lnpl 的 𝑝 值为 0.13 ,在 10%的水平上也不显著;使用 WLS 后,该变量的 𝑝值变为 0.002 ,在 1% 的水平上显著不为 0 。
由于 Nerlove(1963)数据存在明显的异方差,使用WLS 后提高了估计效率。
- 如担心条件方差函数的设定不准确,导致加权后的新扰动项仍有异方差,可使用稳健标准误进行 WLS 估计: reg lntc lnq lnpl lnpk lnpf [aw=1/e2f],r
无论是否使用稳健标准误, WLS 的回归系数都相同,但标准误有所不同。