定义#
异方差指回归误差项的方差不恒定,会随条件变化。线性回归的标准假设之一是同方差:不管自变量取什么值,误差的散布程度都一样。现实里这条经常不成立,比如市场平静期个股偏离拟合线很少,动荡期一下子偏离很多。
异方差的后果很具体:系数估计本身仍然是无偏的,也就是平均而言没有系统性偏差;但估计不再是最有效的,更麻烦的是标准误算错了。标准误一错,t 值、p 值、置信区间跟着错,你会对一个其实不可靠的系数信心十足。
公式#
同方差假设写作 对所有 成立;异方差就是 随观测而变。
常用的诊断是 Breusch-Pagan 检验,做法是:先用 OLS 估计原模型得到残差,再用残差的平方对自变量做回归,然后计算 LM 统计量
其中 是第二个回归的解释平方和, 是自变量个数。原假设是「同方差」,p 值小于 0.05 就拒绝它,认定存在异方差。
算一笔账#
假设把某只股票的收益对市场收益回归,得到 10 期残差。前 5 期市场平静,残差是 −0.5、+0.5、−0.5、+0.5、−0.5;后 5 期市场动荡,残差是 −2、+2、−2、+2、−2(单位:%)。
前半段残差平方的均值 ;后半段 。
两段的残差方差相差 16 倍。如果直接用全样本的普通标准误,等于把两种截然不同的不确定性平均成一个数——对平静期高估了误差,对动荡期严重低估了误差,而后者恰恰是你最需要判断准确的时候。
常见问题#
有了异方差,回归结果还能用吗?#
系数本身还能用,它仍然是无偏的。不能直接用的是显著性结论:p 值和置信区间建立在标准误上,标准误错了它们就都不可信。最省事的补救是改用稳健标准误(例如 HC3),系数不变,只把误差估计换成对异方差稳健的版本。
怎么知道自己的模型有没有异方差?#
先看残差图:残差随预测值变大而呈喇叭口散开,就是典型信号。再做 Breusch-Pagan 检验确认,p 值小于 0.05 说明存在异方差;p 值大只是无法拒绝同方差,不等于证明了同方差。
除了稳健标准误,还有别的办法吗?#
有。对正数数据做对数变换常能压平方差;分布偏离正态时可以试 Box-Cox 变换,但要注意 λ 需要优化选择,而且系数解释要做逆变换;时间序列数据可以考虑差分,代价是改变了数据的含义和长度。