R语言建立回归分析,并利用VIF查看共线性问题的例子「建议收藏」

R语言建立回归分析,并利用VIF查看共线性问题的例子「建议收藏」使用R对内置longley数据集进行回归分析,如果以GNP.deflator作为因变量y,问这个数据集是否存在多重共线性问题?应该选择哪些变量参与回归?答:##查看longley的数据结构str(longley)##’data.frame’:  16obs.of  7variables:##  $GNP.deflator:num  8388.588

大家好,又见面了,我是你们的朋友全栈君。

使用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])

R语言建立回归分析,并利用VIF查看共线性问题的例子「建议收藏」

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
## <none>                      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
## <none>                      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
## <none>                      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
## <none>                    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。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/135652.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

  • ElasticSearch join连接查询「建议收藏」

    ElasticSearch join连接查询「建议收藏」ElasticSearchjoin连接查询特别说明:文章所有内容基于ElasticSerch5.5.3版本ElasticSerch的连接查询有两种方式实现nestedparent和child关联查询nested存储结构nested的方式和其他字段一样,在同一个type里面存储,以数组的方式存储在type里,格式如下:PUTindex…

  • shopee东南亚电商ERP系统[通俗易懂]

    shopee东南亚电商ERP系统[通俗易懂]【上马ERP】专注东南亚本地电商市场,对接shopeeLazadatokopediaJD.idBilbilAkulaku等电商平台一套根据东南亚本地电商需求深度订制的ERP/WMS仓储系统!上马特色功能:【自动处理pickupGo-jek,Gosend,Grad订单】【自动打印快递面单】:美观、高效、准确、效率【自动更新平台订单】:结合仓库现有库存,自动更新平台库存,100%防止超卖;【智能化仓库管理】:智能生成拣货清单,高效准确管理仓库;【实时校验订…

  • IDEA 2022 激活码_最新在线免费激活

    (IDEA 2022 激活码)最近有小伙伴私信我,问我这边有没有免费的intellijIdea的激活码,然后我将全栈君台教程分享给他了。激活成功之后他一直表示感谢,哈哈~IntelliJ2021最新激活注册码,破解教程可免费永久激活,亲测有效,下面是详细链接哦~https://javaforall.cn/100143.html00…

  • idea文本替换快捷键_idea中替换单词

    idea文本替换快捷键_idea中替换单词废话不多说,直接上干货:Edit–Find–ReplaceinPath示例,可以一个个的点击replace替换,也可以点击replaceall一次性全部替换,查找的时候可以匹配大小写,英文可以全词匹配替换的范围可以是整个项目||项目中的某个模块||某个目录等…

  • java 拦截器的作用?

    java 拦截器的作用?转载注明出处~1.拦截器都是做什么的?做的事和请求和响应有关。(比如前端的css或者一些加载的路径都会走这个拦截器)访问日志(记录访客的ip,来源),在线统计人数,字符集转换,身份验证可以不破坏你的业务逻辑在你的业务之外做一些其他事情~.过滤器(Filter):所谓过滤器顾名思义是用来过滤的,Java的过滤器能够为我们提供系统级别的过滤,也就是说,能过滤所有的web请求,…

  • 八皇后算法解析[通俗易懂]

    八皇后算法解析[通俗易懂]今天研究力扣的一道题死活写不出来对应的算法,没办法自己算法基础太差。于是看了下答案,发现使用什么回溯算法,菜鸟表示平时开发期间写的最复杂的程序就是写了两层for循环,已经很牛逼了有木有?这个回溯算法什么鬼?于是乎百度了下,算是了解了回溯算法是什么玩意儿。这里分析一波八皇后算法来加深一下理解。https://blog.csdn.net/microopithecus/article/details/…

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号