R语言建立回归分析,并利用VIF查看共线性问题的例子
使用R对内置longley数据集进行回归分析,如果以GNP.deflator作为因变量y,问这个数据集是否存在多重共线性问题?应该选择哪些变量参与回归?
>>>> 答
## 查看longley的数据结构
str(longley)
## 'data.frame': 16 obs.
of 7 variables:
## $ GNP.deflator:
num 83 88.5 88.2 89.5 96.2
...
## $ GNP
:
num 234 259 258 285 329
...
## $
Unemployed :
num 236 232 368 335 210
...
## $ Armed.Forces:
num 159 146 162 165 310
...
## $
Population :
num 108 109 110 111 112
...
## $ Year
:
int 1947 1948 1949 1950 1951
1952 1953 1954 1955 1956 ...
## $ Employed
: num 60.3
61.1 60.2 61.2 63.2 ...
longly数据集中有7个变量16个观测值,7个变量均属于数值型。
首先建立全量回归模型
lm1 <- lm(GNP.deflator ~ ., data = longley)
summary(lm1)
##
## Call:
## lm(formula = GNP.deflator ~ ., data = longley)
##
## Residuals:
## Min
1Q
Median
3Q
Max
## -2.009
-0.515 0.113 0.423 1.550
##
## Coefficients:
##
Estimate
Std. Error t value
Pr(>|t|)
##
(Intercept) 2946.8564 5647.9766
0.52
0.614
## GNP
0.2635
0.1082
2.44 0.038
*
## Unemployed
0.0365
0.0302
1.21
0.258
## Armed.Forces
0.0112
0.0155
0.72
0.488
## Population
-1.7370
0.6738
-2.58 0.030
*
## Year
-1.4188
2.9446
-0.48
0.641
## Employed
0.2313
1.3039
0.18
0.863
## ---
## Signif. codes: 0 '***' 0.001
'**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 1.19 on 9 degrees of freedom
## Multiple
R-squared: 0.993, Adjusted
R-squared: 0.988
## F-statistic: 203 on 6 and 9
DF, p-value: 4.43e-09
建立的模型结果是令人沮丧的,6个变量的显著性p值只有两个有一颗星,说明有些变量不适合用于建模。
看各自变量是否存在共线性问题。此处利用方差膨胀因子进行判断:方差膨胀因子VIF是指回归系数的估计量由于自变量共线性使得方差增加的一个相对度量。一般建议,如VIF>10,表明模型中有很强的共线性问题。
library(car)
vif(lm1, digits = 3)
##
GNP Unemployed
Armed.Forces
Population
Year
##
1214.57
83.96
12.16
230.91
2065.73
##
Employed
##
220.42
从结果看,所有自变量的vif值均超过了10,其中GNP、Year更是高达四位数,存在严重的多种共线性。接下来,利用cor()函数查看各自变量间的相关系数。
plot(longley[, 2:7])
cor(longley[, 2:7])
##
GNP
Unemployed Armed.Forces Population
Year Employed
## GNP
1.0000
0.6043
0.4464
0.9911
0.9953 0.9836
## Unemployed
0.6043
1.0000
-0.1774
0.6866
0.6683 0.5025
## Armed.Forces 0.4464
-0.1774
1.0000
0.3644
0.4172 0.4573
## Population
0.9911
0.6866
0.3644
1.0000
0.9940 0.9604
## Year
0.9953
0.6683
0.4172
0.9940
1.0000 0.9713
## Employed
0.9836
0.5025
0.4573
0.9604
0.9713 1.0000
从散点分布图和相关系数,均可以得知,自变量间存在严重共线性。
接下来利用step()函数进行变量的初步筛选。
lm1.step <- step(lm1, direction = "backward")
## Start: AIC=10.48
## GNP.deflator ~ GNP Unemployed Armed.Forces Population
##
Year
Employed
##
##
Df Sum of
Sq RSS
AIC
## - Employed
1
0.04
12.9 8.54
## - Year
1
0.33
13.2 8.89
## -
Armed.Forces 1
0.74
13.6 9.39
##
12.8
10.48
## - Unemployed
1
2.08 14.9 10.88
## - GNP
1
8.47 21.3
16.59
## - Population
1
9.48 22.3 17.33
##
## Step: AIC=8.54
## GNP.deflator ~ GNP Unemployed Armed.Forces Population
##
Year
##
##
Df Sum of
Sq RSS
AIC
## - Year
1
0.46
13.3 7.11
##
12.9 8.54
## -
Armed.Forces 1
1.79
14.7 8.62
## - Unemployed
1
5.74 18.6 12.43
## - GNP
1
9.40 22.3
15.30
## - Population
1
9.90 22.8 15.66
##
## Step: AIC=7.11
## GNP.deflator ~ GNP Unemployed Armed.Forces Population
##
##
Df Sum of
Sq RSS
AIC
## -
Armed.Forces 1
1.3
14.7 6.62
##
13.4 7.11
## - Population
1
9.7 23.0 13.82
## - Unemployed
1
14.5 27.8 16.86
## - GNP
1
35.2 48.6
25.76
##
## Step: AIC=6.62
## GNP.deflator ~ GNP Unemployed Population
##
##
Df Sum of
Sq RSS
AIC
##
14.7 6.62
## -
Unemployed 1
13.3 28.0
14.95
## -
Population 1
13.3 28.0
14.95
## - GNP
1
48.6 63.2
27.99
根据AIC 赤池信息准则,模型最后选择Unemployed、Population、GNP三个因变量参与建模。
查看进行逐步回归后的模型效果
summary(lm1.step)
##
## Call:
## lm(formula = GNP.deflator ~ GNP Unemployed Population, data =
longley)
##
## Residuals:
## Min
1Q
Median
3Q
Max
## -2.047
-0.682 0.196 0.696 1.435
##
## Coefficients:
##
Estimate Std.
Error t value Pr(>|t|)
## (Intercept) 221.12959
48.97251
4.52 0.00071 ***
## GNP
0.22010
0.03493
6.30 3.9e-05 ***
## Unemployed
0.02246
0.00681
3.30 0.00634
**
## Population
-1.80501
0.54692
-3.30 0.00634
**
## ---
## Signif. codes: 0 '***' 0.001
'**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 1.11 on 12 degrees of freedom
## Multiple
R-squared: 0.992, Adjusted
R-squared: 0.989
## F-statistic: 472 on 3 and 12
DF, p-value: 1.03e-12
从各判定指标可以看出,模型的结果是可喜的。参与建模的三个变量和截图的均是显著的。Multiple
R-squared高达0.992。数据分析师培训
R语言建立回归分析,并利用VIF查看共线性问题的例子的更多相关文章
- 用R语言 做回归分析
使用R做回归分析整体上是比较常规的一类数据分析内容,下面我们具体的了解用R语言做回归分析的过程. 首先,我们先构造一个分析的数据集 x<-data.frame(y=c(102,115,124,1 ...
- R语言 逐步回归分析
逐步回归分析是以AIC信息统计量为准则,通过选择最小的AIC信息统计量,来达到删除或增加变量的目的. R语言中用于逐步回归分析的函数 step() drop1() add1() #1.载 ...
- R语言 线性回归分析实例 《回归分析与线性统计模型》page72
y,X1,X2,X3 分别表示第 t 年各项税收收入(亿元),某国生产总值GDP(亿元),财政支出(亿元)和商品零售价格指数(%). (1) 建立线性模型: ① 自己编写函数: > librar ...
- R语言实战(一)介绍、数据集与图形初阶
本文对应<R语言实战>前3章,因为里面大部分内容已经比较熟悉,所以在这里只是起一个索引的作用. 第1章 R语言介绍 获取帮助函数 help(), ? 查看函数帮助 exampl ...
- R语言使用 multicore 包进行并行计算
R语言是单线程的,如果数据量比较大的情况下最好用并行计算来处理数据,这样会获得运行速度倍数的提升.这里介绍一个基于Unix系统的并行程序包:multicore. 我们用三种不同的方式来进行一个简单的数 ...
- R语言与概率统计(一) 描述性统计分析
#查看已安装的包,查看已载入的包,查看包的介绍 ########例题3.1 #向量的输入方法 w<-c(75.0, 64.0, 47.4, 66.9, 62.2, 62.2, 58.7, 6 ...
- [译]用R语言做挖掘数据《二》
数据探索 一.实验说明 1. 环境登录 无需密码自动登录,系统用户名shiyanlou,密码shiyanlou 2. 环境介绍 本实验环境采用带桌面的Ubuntu Linux环境,实验中会用到程序: ...
- jupyter notebook 中同时添加Python2和3,在conda下配置R语言运行的环境
1.第一步,安装Python2的环境 首先,在安装anaconda的时候先选择一个Python安装,我先安装的是Python3 然后,在anaconda Prompt下创建Python2环境 现在,还 ...
- 利用R语言进行交互数据可视化(转)
上周在中国R语言大会北京会场上,给大家分享了如何利用R语言交互数据可视化.现场同学对这块内容颇有兴趣,故今天把一些常用的交互可视化的R包搬出来与大家分享. rCharts包 说起R语言的交互包,第一个 ...
随机推荐
- 2816: [ZJOI2012]网络
传送们 把一个点拆成c个即可 浪费时间的水题... //Achen #include<algorithm> #include<iostream> #include<cst ...
- 左神算法进阶班1_1添加最少字符得到原字符N次
Problem: 给定一个字符串str1,只能往str1的后面添加字符变成str2. 要求1:str2必须包含两个str1,两个str1可以有重合,但是不能以同一个位置开头. 要求2:str2尽量短最 ...
- 炮兵阵地 /// 状压DP oj26314
题目大意: 炮兵阵地 设置炮兵的位置 其上两位 下两位 左两位 右两位 不能同时设置炮兵 这题是 corn fields玉米地 的升级版 可以先看下这题的注释 更详细些 第一种方法是网上大多数题解的解 ...
- java笔试之字符逆序(一)
将一个字符串str的内容颠倒过来,并输出.str的长度不超过100个字符. 如:输入“I am a student”,输出“tneduts a ma I”. package test; import ...
- Ubuntu环境下安装Scala以及安装IntelliJ Scala插件(Plugin)
一.Scala介绍 1.结合Spark处理大数据 这是Scala的一个主要应用,而且Spark也是那Scala写的. 2.Java的脚本语言版 可以直接写Scala的脚本,也可以在.sh直接使用Sc ...
- linux普通用户无法登录mysql
一.前言 本帖方法只适用于普通用户无法登录,但root用户可以登录的情况. 今天将war包放入linux后,运行报错,经过检查发现是数据库连接不上.奇怪的是,用户名和密码都是正确的,所以有了以下发现. ...
- 使用github作为远程仓库的常见git操作
[git上传本地代码到github新建仓库]一.建立git本地仓库 1.在本地目标文件夹(Code)中执行命令: git init //初始化本地仓库二.将上传到github的项目文件添加到本地仓库中 ...
- AndroidStudio 添加翻译插件
添加方式 第一步 在AndroidStudio的菜单栏里找到 File > Settings > 点击 . 第二步 点击Plugins > 在点击Marketplace 等待插件列表 ...
- 廖雪峰Java15JDBC编程-3JDBC接口-1JDBC简介
JDBC:Java DataBase Connectivity Java程序访问数据库的标准接口 使用Java程序访问数据库的时候,Java代码并不是直接通过TCP连接去访问数据库,而是通过JDBC接 ...
- Android基础控件单选按钮RadioButton和Checkbox复选按钮的使用
1.相关简介 RadioButton需要和RadioGroup结合使用,在RadioGroup设置布局方式! Checkbox是单独使用,本文为了方便放在了RadioGroup中! 2.简单使用 方法 ...