在我们以前做线性回归的时候,总是公式上手直接套,并没有考虑到能够利用线性回归先要满足零均值、同方差、无自相关以及正态分布等假定,假设数据不符合同方差假定,那么残差的方差会被严重低估,从而使得伪错误的几率上升,整个模型的拟合精度会大幅下降。
那么我们如何去检测数据是否存在异方差呢?
在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!
Original: https://blog.csdn.net/weixin_33626609/article/details/111979989
Author: 宣博
Title: r语言boxcox异方差_R教程-15:线性回归中的异方差
原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/636020/
转载文章受原作者版权保护。转载请注明原作者出处!