看R语言建立回归分析,如何利用VIF查看共线性问题
中国统计网 | 2017-03-21 13:21
【数据猿导读】 使用R对内置longley数据集进行回归分析,如果以GNP.deflator作为因变量y,问这个数据集是否存在多重共线性问题?应该选择哪些变量参与回归

使用R对内置longley数据集进行回归分析,如果以GNP.deflator作为因变量y,问这个数据集是否存在多重共线性问题?应该选择哪些变量参与回归?
答:
##查看longley的数据结构str(longley)
##'data.frame':16obs.of7variables:
##$GNP.deflator:num8388.588.289.596.2...
##$GNP:num234259258285329...
##$Unemployed:num236232368335210...
##$Armed.Forces:num159146162165310...
##$Population:num108109110111112...
##$Year:int1947194819491950195119521953195419551956...
##$Employed:num60.361.160.261.263.2...longly数据集中有7个变量16个观测值,7个变量均属于数值型。
首先建立全量回归模型lm1summary(lm1)
##
##Call:
##lm(formula=GNP.deflator~.,data=longley)
##
##Residuals:
##Min1QMedian3QMax
##-2.009-0.5150.1130.4231.550
##
##Coefficients:
##EstimateStd.ErrortvaluePr(>t)
##(Intercept)2946.85645647.97660.520.614
##GNP0.26350.10822.440.038*
##Unemployed0.03650.03021.210.258
##Armed.Forces0.01120.01550.720.488
##Population-1.73700.6738-2.580.030*
##Year-1.41882.9446-0.480.641
##Employed0.23131.30390.180.863
##---
##Signif.codes:0'***'0.001'**'0.01'*'0.05'.'0.1''1
##
##Residualstandarderror:1.19on9degreesoffreedom
##MultipleR-squared:0.993,AdjustedR-squared:0.988
##F-statistic:203on6and9DF,p-value:4.43e-09建立的模型结果是令人沮丧的,6个变量的显著性p值只有两个有一颗星,说明有些变量不适合用于建模。
看各自变量是否存在共线性问题。此处利用方差膨胀因子进行判断:方差膨胀因子VIF是指回归系数的估计量由于自变量共线性使得方差增加的一个相对度量。一般建议,如VIF>10,表明模型中有很强的共线性问题。library(car)vif(lm1,digits=3)
##GNPUnemployedArmed.ForcesPopulationYear
##1214.5783.9612.16230.912065.73
##Employed
##220.42从结果看,所有自变量的vif值均超过了10,其中GNP、Year更是高达四位数,存在严重的多种共线性。接下来,利用cor()函数查看各自变量间的相关系数。plot(longley[,2:7])
cor(longley[,2:7])
##GNPUnemployedArmed.ForcesPopulationYearEmployed
##GNP1.00000.60430.44640.99110.99530.9836
##Unemployed0.60431.0000-0.17740.68660.66830.5025
##Armed.Forces0.4464-0.17741.00000.36440.41720.4573
##Population0.99110.68660.36441.00000.99400.9604
##Year0.99530.66830.41720.99401.00000.9713
##Employed0.98360.50250.45730.96040.97131.0000从散点分布图和相关系数,均可以得知,自变量间存在严重共线性。
接下来利用step()函数进行变量的初步筛选。
lm1.step
##Start:AIC=10.48
##GNP.deflator~GNP+Unemployed+Armed.Forces+Population+
##Year+Employed
##
##DfSumofSqRSSAIC
##-Employed10.0412.98.54
##-Year10.3313.28.89
##-Armed.Forces10.7413.69.39
##12.810.48
##-Unemployed12.0814.910.88
##-GNP18.4721.316.59
##-Population19.4822.317.33
##
##Step:AIC=8.54
##GNP.deflator~GNP+Unemployed+Armed.Forces+Population+
##Year
##
##DfSumofSqRSSAIC
##-Year10.4613.37.11
##12.98.54
##-Armed.Forces11.7914.78.62
##-Unemployed15.7418.612.43
##-GNP19.4022.315.30
##-Population19.9022.815.66
##
##Step:AIC=7.11
##GNP.deflator~GNP+Unemployed+Armed.Forces+Population
##
##DfSumofSqRSSAIC
##-Armed.Forces11.314.76.62
##13.47.11
##-Population19.723.013.82
##-Unemployed114.527.816.86
##-GNP135.248.625.76
##
##Step:AIC=6.62
##GNP.deflator~GNP+Unemployed+Population
##
##DfSumofSqRSSAIC
##14.76.62
##-Unemployed113.328.014.95
##-Population113.328.014.95
##-GNP148.663.227.99根据AIC赤池信息准则,模型最后选择Unemployed、Population、GNP三个因变量参与建模。查看进行逐步回归后的模型效果summary(lm1.step)
##
##Call:
##lm(formula=GNP.deflator~GNP+Unemployed+Population,data=longley)
##
##Residuals:
##Min1QMedian3QMax
##-2.047-0.6820.1960.6961.435
##
##Coefficients:
##EstimateStd.ErrortvaluePr(>t)
##(Intercept)221.1295948.972514.520.00071***
##GNP0.220100.034936.303.9e-05***
##Unemployed0.022460.006813.300.00634**
##Population-1.805010.54692-3.300.00634**
##---
##Signif.codes:0'***'0.001'**'0.01'*'0.05'.'0.1''1
##
##Residualstandarderror:1.11on12degreesoffreedom
##MultipleR-squared:0.992,AdjustedR-squared:0.989
##F-statistic:472on3and12DF,p-value:1.03e-12从各判定指标可以看出,模型的结果是可喜的。参与建模的三个变量和截图的均是显著的。MultipleR-squared高达0.992。
来源:中国统计网
我要评论
活动推荐more >
- 2018 上海国际大数据产业高2018-12-03
- 2018上海国际计算机网络及信2018-12-03
- 中国国际信息通信展览会将于2018-09-26
- 第五届FEA消费金融国际峰会62018-06-21
- 第五届FEA消费金融国际峰会2018-06-21
- “无界区块链技术峰会2018”2018-06-14