前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >R多元线性回归容易忽视的几个问题(2)多重共线性的克服

R多元线性回归容易忽视的几个问题(2)多重共线性的克服

作者头像
统计学家
发布2019-04-10 10:01:39
1.7K2
发布2019-04-10 10:01:39
举报

书接上回

如果存在着严重的多重共线性,则需要使用合适的方法尽量地降低多重共线性,有两种比较常用的方法:

逐步回归

逐步回归主要分为向前逐步回归(forward)、向后逐步回归(backward)和向后向前逐步回归(both)。逐步回归本身并不是一种新的回归或者参数的估计方法,所用到的参数估计方法都是原来的,是从众多的变量中选出最优模型的变量的一套方法。

即假如因变量Y,4 个自变量分别是X1 ,X2,X3,X4。当所有自变量都进入到模型中时,Y=α+β1X1+β2X2 +β3X3 +β4X4 +μ 。现在是如何利用逐步回归方法从中选取最优的模型?

向前逐步回归的思路是逐个引入变量。具体来讲是,先用因变量与每个自变量都进行回归,选取最优的模型,假如第一步选取的最优模型是Y=α+β1X1+μ;接着在第一步的最优模型的基础上,从剩余的变量X2,X3,X4中每个分别加入到第一步的最优模型中,得Y=α+β1X1+βjXj+μ,j=0,2,3,4,j=0即为Y=α+β1X1+μ ,比较这四个模型,如果发现模型Y=α+β1X1 +β3X3+μ 最优;接着再在第二步的最优模型Y=α+β1X1+β3X3+μ 上,从剩余的变量X2,X4中每个分别加入到第二步的最优模型中,得Y=α+β1X1+β3X3+βjXj+μ,j=0,2,4,比较这三个模型,如果 j = 0时,模型最优,则最终选取的最优模型是Y=α+β1X1+β3X3+μ向后逐步回归的思路是先引入全部自变量,然后逐个剔除不重要的变量,其剔除变量的思路和向前逐步回归的思路类似。向后向前逐步回归先逐步剔除变量,但可以后面的步骤中重新引入原先被剔除的变量,其方向是双向的,而向后逐步回归的自变量一旦被剔除后,在后面的步骤中就不会被重新引入,是单向的。

注意,上文所指的最优模型一般通过一些准则来确定,比如F 值、可决系数R2、

AIC 等。

继续上篇提到的财政收入影响因素的例子:

首先介绍一下step函数的用法,它是属于stats包,使用之前需先加载。

step(object, scope,scale = 0, direction = c("both","backward", "forward"), trace = 1, keep = NULL, steps = 1000, k =2, ...)

向前逐步回归的最优模型是把所有自变量都引入模型,没有剔除任何变量。

向后逐步回归中,从AIC最小的变量依次逐步剔除了农业,建筑业,受灾三个变量,第四步不剔除变量时最优,即最终模型中包含工业,人口,消费三个变量。

岭回归

当解释变量之间存在多重共线性时,即XX ≈ 0,则Var(βˆ) =σ 2 (XX)−1将会增大,原因是XX接近奇异。如果将XX加上一个正常数对角阵λ I(λ>0,I为单位矩阵)即XXI,使得 XXI ≈ 0的可能性比 XX ≈ 0的可能性更小,那么XXI接近奇异的程度就会比XX小的多,这就是岭回归的最初想法。

R里MASS包的lm.ridge()函数可以用来做岭估计,其用法与lm()用法类似。

可以证明β 的岭回归估计为βˆ(λ) = (X’X+λI)-1X’Y其中λ 称为岭参数.岭估计的关键是选取岭参数λ,岭迹法是选取岭参数λ的常用方法之一。若记βˆ (λ)为βiˆ (λ )的第i个分量,它是λ 的一元函数。当λ 在[0,∞)上变化时,βˆ (λ)的图形称为岭迹(ridge trace)。βˆ (λ )的每个分量βj ˆ(λ ) 的岭迹画在同一个图上,根据岭迹的变化趋势选择λ值,使得各个回归系数的岭估计大体上稳定,并且各个回归系数岭估计值的符号比较合理并符合实际。

lm.r是属于MASS包的,用法和lm类似

> lm.r<-lm.ridge(revenue~industry+agriculture+construction+consumption+pop+disaster,data=dat)
> lm.r
                   industry   agriculture  construction   consumption 
 6.821406e+04  1.296967e-01 -7.065467e-02  4.465321e-02  6.011086e-01 
          pop      disaster 
-7.020226e-01  4.323570e-02 

不指定λ值时,默认为0,结果和OLS一致。下面生成一个lambda序列,从0到0.3,间隔0.001,。同时把不同参数的估计值βˆ (λ )估计出来,画出岭迹图。如下:

当λ取0.25-0.3之间时,参数的估计大致趋于稳定。

> select(lm.ridge(revenue~industry+agriculture+construction+consumption+pop+disaster,data=dat,lambda=seq(0,0.3,0.001)))
modified HKB estimator is 0.003136352 
modified L-W estimator is 0.002329019 
smallest value of GCV  at 0.004 

通过select函数可以选取更为精确的岭参数,本例中我们取λ=0.004

> lm.ridge(revenue~industry+agriculture+construction+consumption+pop+disaster,data=dat,lambda=0.004)
                   industry   agriculture  construction   consumption           pop      disaster 
 5.662106e+04  1.439691e-01 -3.539058e-03  1.146925e-01  5.037839e-01 -5.970767e-01  4.829628e-02 

再代入到lm.ridge()函数中,就可以估计出相应的岭估计结果。

本节完,下节开始讲异方差性问题。

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2015-12-10,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 机器学习与统计学 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档