全部版块 我的主页
论坛 数据科学与人工智能 数据分析与数据科学 R语言论坛
12443 2
2015-12-10

书接上回

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

一、逐步回归

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

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

向前逐步回归的思路是逐个引入变量。具体来讲是,先用因变量与每个自变量都进行回归,选取最优的模型,假如第一步选取的最优模型是Y =α +β1X1 ;接着在第一步的最优模型的基础上,从剩余的变量X2X3 X4 中每个分别加入到第一步的最优模型中,得Y =α +β1X1 +βj Xj j = 0,2,3,4j = 0即为Y =α +β1X1 ,比较这四个模型,如果发现模型Y =α +β1X1 +β3X3最优;接着再在第二步的最优模型Y =α +β1X1 +β3X3 上,从剩余的变量X2X4中每个分别加入到第二步的最优模型中,得Y =α +β1X1+β3X3+βjXjj = 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, ...)

1.png

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

2.png

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

二、岭回归

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

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

可以证明β 的岭回归估计为βˆ (λ) = (X’XI)-1 XY

λ 称为岭参数.岭估计的关键是选取岭参数λ,岭迹法是选取岭参数λ的常用方法之一。若记βˆ (λ)β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,。同时把不同参数的估计值βˆ (λ )估计出来,画出岭迹图。如下:

3.png

λ取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()函数中,就可以估计出相应的岭估计结果。

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


二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

全部回复
2016-1-10 22:06:05
如果是面板数据的 一组自变量 如何判断他们间的共线性
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2017-1-2 12:54:40
这样就可以客服共线性了吗?可是回归的结果用vif()还是有强共线性啊?还有,检验它的误差独立性也是不独立的?怎么办??
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

相关推荐
栏目导航
热门文章
推荐文章

说点什么

分享

扫码加好友,拉您进群
各岗位、行业、专业交流群