變量選擇

當有大量的候選變量中選擇最終的預測變量,有如下兩種流行方法函數

 

  • 逐步迴歸法(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的四變量模型

大部分狀況中,全子集迴歸要優於逐步迴歸,由於考慮了跟過的模型,但當有大量預測變量時,全子集迴歸會很慢。

相關文章
相關標籤/搜索