R语言与多元线性回归方程及各种检验
文章目录
一、模型建立
数据放在最后,自取试建立y与x1,x2,x3,x4,x5的线性回归方程

代码如下:
a<-read.csv("eg2.1.csv",header=T);a
b<-lm(y~x1+x2+x3+x4+x5,data=a)
这里介绍一个包,可以把结果用表格显示:
install.packages("flextable")
library(flextable)#制作表格
as_flextable(b)
输出结果如下:

得到回归方程
y = − 32 + 0.163 x 1 + 0.228 x 2 + 0.881 x 3 − 0.05 x 4 + 0.169 x 5 y=-32+0.163x_1+0.228x_2+0.881x_3-0.05x_4+0.169x_5 y=−32+0.163x1+0.228x2+0.881x3−0.05x4+0.169x5
二、多重共线性
(1)产生的背景:
1.经济变量间具有共同变化的趋势。例如,对于时间序列数据收入、消费、就业率等等,在经济上升时期均呈现增长的趋势,而在经济收缩期,又都呈现下降趋势。当这些变量同时作为解释变量进入模型时就会带来多重共线性问题。
2.模型中引入了滞后变量,变量X常常与滞后变量高度相关
3.利用截面数据建立模型也可能会出现多重共线性。利用截面数据建模时,许多变量变化与发展规模有关,会出现同步增长的趋势,如资本、劳动力、科技、能源等投入与产出的规模相关,这时容易产生多重共线性。
4.样本数据自身的原因。例如,抽样仅仅限于总体中解释变量取值的一个有限范围,使得变量间变异不大;或由于总体受限,多个解释变量的样本数据相关,这时都可能出现多重共线性。
(2)多重共线性的检验
1.简单相关系数法:
一般而言,如果每两个解释变量的简单的相关系数(0阶自相关系数)比较高,如大于0.8,则可认为存在严重的多重共线性。
ab<-a[,c(2:6)]#只保留解释变量
corr<-cor(ab);corr
corrplot(corr,method="number",type="full",mar=c(0,0,0,0) ,bg="black",tl.col = "blue")
其中corrplot函数详细见这篇文章:
相关系数热力图

由上图可知,x1和x3的相关系数为0.73,初步判断不存在多重共线性。
2.方差膨胀因子(vif)法
一般vif大于10即可认为存在严重的多重共线性:
通过建立x1~x2+x3+x4+x5的线性关系得到R方,那么x1的方差膨胀因子就是
V I F = 1 1 − R 2 VIF=\frac{1}{1-R^2} VIF=1−R21
其他的类似,r语言有vif这个函数可以直接求:
library(car)#检验多重共线性的包
vif(b)#b是线性回归的结果

可以看出:vif值都小于10,即可判断出没有多重共线性
3.矩阵 X T X X^TX XTX的条件数k
条件数的定义为:
k ( X T X ) = ∥ X T X ∥ ⋅ ∥ ( X T X ) − 1 ∥ = λ max ( X T X ) λ min ( X T X ) \,\,k\left( X^TX \right) =\left\| X^TX \right\| \cdot \left\| \left( X^TX \right) ^{-1} \right\| =\frac{\lambda _{\max \left( X^TX \right)}}{\lambda \min \left( X^TX \right)}
R语言实战:多元线性回归与共线性、异方差性检测及其修正

最低0.47元/天 解锁文章
4万+





