变量选择

当有大量的候选变量中选择最终的预测变量,有如下两种流行方法函数

 

  • 逐步回归法(stepwise method)

a、向前逐步回归(forward stepwise regression):每次添加一个预测变量到模型中,知道添加不会使模型有所改进为止spa

b、向后逐步回归(back setpwise regression):从模型中全部的预测变量开始,每次逐步删除一个变量直到会减低模型质量为止code

c、向前向后逐步回归(stepwise stepwise regression,一般称做逐步回归):结合了向前向后逐步回归和向后逐步回归的方法,变量每次进入一个,可是每一步中,变量都会被从新评价,对模型没有贡献的变量将会被删除,预测变量可能会被添加、删除好几回,直到得到最优模型为止orm

 

  • stepAIC()

MASS包中的stepAIC()能够实现逐步回归(向前、向后、向前向后),根据AIC值判断,越小模型越优ci

> library(MASS)
> states <- as.data.frame(state.x77[,c("Murder", "Population",
+                                      "Illiteracy", "Income", "Frost")])
> fit <- lm(Murder ~ Population + Illiteracy + Income + Frost,
+           data=states)
> stepAIC(fit,direction = "backward")            #direction = "backward"向后回归
Start:  AIC=97.75 #这里的AIC值表明仅接在后面的模型的AIC值
Murder ~ Population + Illiteracy + Income + Frost

             Df Sum of Sq    RSS     AIC
- Frost       1     0.021 289.19  95.753
- Income      1     0.057 289.22  95.759
<none>                    289.17  97.749
- Population  1    39.238 328.41 102.111
- Illiteracy  1   144.264 433.43 115.986

Step:  AIC=95.75
Murder ~ Population + Illiteracy + Income

             Df Sum of Sq    RSS     AIC
- Income      1     0.057 289.25  93.763
<none>                    289.19  95.753
- Population  1    43.658 332.85 100.783
- Illiteracy  1   236.196 525.38 123.605

Step:  AIC=93.76
Murder ~ Population + Illiteracy

             Df Sum of Sq    RSS     AIC
<none>                    289.25  93.763
- Population  1    48.517 337.76  99.516
- Illiteracy  1   299.646 588.89 127.311

Call:
lm(formula = Murder ~ Population + Illiteracy, data = states)

Coefficients:
(Intercept)   Population   Illiteracy  
  1.6515497    0.0002242    4.0807366  
#过程是逐步的删除变量,直到最小的AIC值

 

  • 逐步回归的局限性

能够找到 一个好的模型,可是不能保证模型是最佳模型,由于不是每个可能的模型都被评价了,为此须要使用全子集回归it

  • 全子集回归

全子集回归就是指全部可能的模型都会被检验。分析员能够选择展现有可能的结果,也能够展现不一样 n 个不一样子集大小(一个、两个或多个预测变量)的最佳模型。例如,若nbest = 2,先展现两个最佳的单预测变量模型,而后展现两个最佳的双预测变量模型,以此类推,直到包含全部的预测变量io

全子集回归可用 leaps包中regsubets()函数 来实现。经过 R 平方,调整的 R平方或 Mallows Cp统计量等准则来选择“最佳”模型。form

经过调整 R^2或者调整R^2来获选择最佳模型变量

 

     介绍方法

 含义与预测变量与解释响应变量的程度,调整  与之相似,但考虑了模型的参数数目, 总会随着变量数目的增长而增长,当与样本量相比 ,预测变量数目很大时,容易致使过拟合  极可能会丢失数据的偶然变异信息,而调整  则提供了更为真实的  平方估计 。

另外,Mallows Cp 统计量也用来做为逐步回归的判停规则,普遍研究代表,对于一个好的模型,它的 Cp 统计量很是接近于模型的参数数目(包括截距项)

#以下图
> library(leaps)
> states <- as.data.frame(state.x77[,c("Murder", "Population",
+                                      "Illiteracy", "Income", "Frost")])
> leaps <-regsubsets(Murder ~ Population + Illiteracy + Income +
+                      Frost, data=states, nbest=4)    #nbest =4 
> plot(leaps, scale="adjr2")

 

第一行中(图底部开始),能够看到含intercept(截距项)和Income的模型调整R平方为0.33,含intercept和POpulation的模型调整R平方为0.1。调至第12行,你会看到intercetpt、Popilation、Illiteracy和Income的模型调整R平方值为0.54,而仅含intercept、Population和Illiteracy的模型调整R平方为0.55。此处你会发现含预测变量越少模型调整R平方越大(对与非调整的R平方,这是不可能的)。图形代表,双预测变量模型(Population和Illiterracy)是最佳模型。

 

  • Mallows Cp统计量

Mallows Cp统计量也用来做为逐步回归的判停规则,对于一个好的模型,它的Cp统计量很是接近于模型的参数数目(包括截距项)
使用leaps包中的plot()绘制函数,或者用car包中的subsets()函数绘制

#Mallows Cp统计量,以下图
library(car)
subsets(leaps,statistic = "cp",
        main ="Cp Plot for All Subsets Regressionn")
abline(1,1,lty=2,col="red")

 

越好的模型离截项和斜率为1的直线越近,图形代表,你能够选择这几个模型,其他的模型能够不考虑,含Population和Illiteracy的双变量模型,含Population、Illiterary和Frost的三变量模型(它们在图形上重叠了,不易分别),含 Population、Illiteracy、Income和Frost的四变量模型

大部分状况中,全子集回归要优于逐步回归,由于考虑了跟过的模型,但当有大量预测变量时,全子集回归会很慢。

相关文章
相关标签/搜索