简介+案例+检验方法+解决方法+异方差代码
关于异方差我们必须注意到这样一个事实:即便误差具有一致的方差,最小二乘残差仍有不等的方差。我们可以通过对学生残差(主要是排除一些异常值,让数据平稳一些)根据拟合值绘制散点图来辨别之。当然我们也有统计的办法如Breusch-Pagan检验。
在R中,扩展包lmtest中的Breusch-Pagan检验。或者利用car包中的ncv.test()函数。二者工作的原理都是相同的。在回归之后,我们可以对拟合的模型采用bptest()函数
这将得到检验的“学生化的”(studentized)结果。如果为了保持与其他软件结论的一致性(包括ncv.test()),我们可以设置studentize=FALSE
1、案例
我们来看一个例子:以下数据取自伍德里奇的《计量经济学导论》均保留原数据名
2、异方差检验方法
方法1
残差图
方法2
ncvTest生成计分检验,原假设为误差方差不变,备择假设为误差方差随拟合值水平的变化而变化
library(car)
ncvTest(fit) #This test is often called the Breusch-Pagan test
spreadLevelPlot创建标准化残差绝对值与拟合值的散点图;若输出结果建议幂次变换(suggested power transformation)接近1,则异方差不明显,即不需要进行变换;若幂次变换为0.5,则用根号y代替y;若幂次变换为0,则用对数变换。
spreadLevelPlot(fit)
方法3
方法4
其他方法
bartlett.test
LiMcLeod{portes}可以进行多元的Portmanteau Q检验
protest{portes}可以进行一元的Portmanteau Q检验
3、解决方法:
方法1
NeweyWest()函数可以进行异方差和自相关稳健性Newey—West估计
library(sandwich)
NeweyWest(fit)
neweywest <- coeftest(fit, vcov = NeweyWest(fit))
print(neweywest)
hccm(fit) #car packages 协方差阵
vcovHAC(fit) #sandwich packages 协方差阵
vcov(fit)
方法2
加权最小二乘(lm模型换成gls模型)
4、异方差的计算代码
——yujun7654321的博客