在我们以前做线性回归的时候,总是公式上手直接套,并没有考虑到能够利用线性回归先要满足零均值、同方差、无自相关以及正态分布等假定,假设数据不符合同方差假定,那么残差的方差会被严重低估,从而使得伪错误的几率上升,整个模型的拟合精度会大幅下降。
那么我们如何去检测数据是否存在异方差呢p>
在R语言里面,我们可以通过统计检验、图形法来找出答案。
例子数据是R内置的cars数据集,先利用lm函数来建立模型:
lmMod
#导入包
library(e1071)
library(caret) # 含box-cox 转换的包
library(lmtest) # 检验异方差的bp检验包
library(gvlma) # 线性模型的全局验证
bptest(lmMod) # Breusch-Pagan 检验
studentized Breusch-Pagan test
data: lmMod
BP = 3.2149, df = 1, p-value = 0.07297
这里结果中的p值大于0.05表示零假设(同方差检验)可以被拒绝,因此存在异方差,再通过线性模型假设(gvlma)的全局验证来确认这个结论。
gvlma(lmMod) # 验证线性回归的假设是否成立。
# Call:
gvlma(x = lmMod)
Value p-value Decision
Global Stat 15.801 0.003298 Assumptions NOT satisfied!
Skewness 6.528 0.010621 Assumptions NOT satisfied!
Kurtosis 1.661 0.197449 Assumptions acceptable.
Link Function 2.329 0.126998 Assumptions acceptable.
Heteroscedasticity 5.283 0.021530 Assumptions NOT satisfied!#验证上述结论
既然同方差不满足,来看看在图形方面数据是怎么表现的。
par(mfrow=c(2,2)) # 将图片切为四份
plot(lmMod)
图形如下:
在左上图中,残差变得更随机了,具有更直的平滑线,这意味着残差的方差不随着拟合值的增加而改变,这意味着去除了异方差性。顺利解决问题了。
文章知识点与官方知识档案匹配,可进一步学习相关知识算法技能树首页概览35252 人正在系统学习中 相关资源:中异软件(企业版)-制造其他资源-CSDN文库
声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!