多重共线性产生原因及处理办法+R语言+糖尿病数据案例分析+逐步回归法

1、多重共线性

多重共线性一般是在(1)时间序列数据和(2)横截面数据中会发生。

产生的影响

(1)OLS得到的回归参数估计值很不稳定
(2)回归系数的方差随共线性强度增加而增长
(3)系数的正负号得不到合理的解释

多重共线性的判定方法

1、方差膨胀因子vif
2、特征根判定法

3、直观判定法:更加直观
1.当增加或剔除一个自变量,或者改变一个观测值时,回归系数的估计值发生较大变化。
2.从定性分析认为,一些重要的自变量在回归方程中没有通过显著性检验。
3.有些自变量的回归系数所带正负号与定性分析结果违背。
4.自变量的相关矩阵中,自变量间的相关系数较大。
5.一些重要的自变量的回归系数的标准误差较大。

消除多重共线性

1、剔除一些不重要的解释变量
2、增大样本容量
3、回归系数的有偏估计
统计学家还致力于改进古典的最小二乘法,提出以采用有偏估计为代价来提高估计量稳定性的方法,如:
逐步回归
岭回归法
主成分回归法
偏最小二乘法
lasso回归
适应性lasso回归

2、糖尿病数据+逐步回归法

先看一下数据:
在这里插入图片描述
原模型的方差膨胀因子:几乎都非常大
在这里插入图片描述
这是逐步回归法的:
在这里插入图片描述
去除了大部分变量,保留了部分变量,方差膨胀因子相对小很多。
这是逐步回归法的残差与y的散点图:
在这里插入图片描述
以及模型:
在这里插入图片描述
大部分自变量通过了检验。
代码:
数据需要可以评论~

library("lars")
library("car")
#file.choose()
da<-read.csv("F:\\learning_kecheng\\huigui\\67章—多重共线性和lasso\\diabetes.csv")[,11:75]
head(da)

lm1<-lm(y~.,data = da)
lm_step = step(lm1,trace = F)
vif(lm1)
vif = vif(lm_step)
sort(vif(lm1),de=T)[1:5]
sort(vif)
summary(lm_step)

xx = cor(da[,-1])
kappa(xx,exact = TRUE)
kappa(da[,-1],exact = TRUE)

shapiro.test(lm_step$res)
Anova(lm_step,type="III")	
plot(da$y,lm_step$res)
abline(h=0,lty=2)

猜你喜欢

转载自blog.csdn.net/qq_42871249/article/details/104656084