r语言实现岭回归_数据分析中常见的七种回归分析以及R语言实现(五)
套索回歸,這個回歸模型有些新穎,要寫個詳細的介紹預計要寫好長,受限于水平,就寫個普及文,所以這里就稍微簡答的介紹一下;
為什么我們老說多重共線性呢?那是,因為我們在研究數據的時候總會不行制止的泛起多維度的數據,這時候高緯度的數據就會泛起多重共線性,變量選擇等;所以如何消除多重共線性確定最佳模型,是回歸分析的一個重點,我們一般使用的最小二乘法預計在處置懲罰多重共線性上有太大的局限性或者說讓人不滿意吧,第一個就是預測的精度,第二個就是模型解釋性;目前處置懲罰多重共線性的常用要領有幾個:主身分回歸,嶺回歸,適應性lasso回歸和偏最小二乘回歸等;
套索回歸模型和的作用和嶺回歸有些類似,都是為了淘汰自變量的多重共線性的影響的一種建模要領;這個要領和嶺回歸差異的是,它在參數預計的同時能夠實現自變量精簡的預計要領,其實質就是加一定的約束條件,就是用模型的回歸系數的絕對值函數作為處罰(正則化項)來壓縮模型系數,使得一些回歸系數變小,將絕對值較小或者影響因子較小的自變量的回歸系數置為零,這樣做的結果和嶺回歸有些類似,就是犧牲了一定的預計偏差,但是能降低預測的方差從而提高預測的精準性;
在使用套索回歸做預測的時候我們首先需要將數據集進行中心尺度處置懲罰,這樣是為了消除差異的量綱帶來的其他影響;是自變量們滿足均值為零0,方差為1;
這里在一次引用一下嶺回歸的謝佳標老師的代碼,有點欠美意思了,哈哈,各人自己腦補微信用手晤面流淚的心情;不外這次的話我加一點解釋給各人,否則不太悅目懂;
cement
29, 56, 31, 52, 55, 71, 31, 54, 47, 40, 66, 68), X3 = c(6, 15, 8, 8, 6,
9, 17, 22, 18, 4, 23, 9, 8), X4 = c(60, 52, 20, 47, 33, 22, 6, 44, 22, 26,
34, 12, 12), Y = c(78.5, 74.3, 104.3, 87.6, 95.9, 109.2, 102.7, 72.5, 93.1,
115.9, 83.8, 113.3, 109.4))
cement
##? ? X1 X2 X3 X4? ???Y
## 1? ?7 26??6 60??78.5
## 2? ?1 29 15 52??74.3
## 3??11 56??8 20 104.3
## 4??11 31??8 47??87.6
## 5? ?7 52??6 33??95.9
## 6??11 55??9 22 109.2
## 7? ?3 71 17??6 102.7
## 8? ?1 31 22 44??72.5
## 9? ?2 54 18 22??93.1
## 10 21 47??4 26 115.9
## 11??1 40 23 34??83.8
## 12 11 66??9 12 113.3
## 13 10 68??8 12 109.4
lm.sol
summary(lm.sol)
##
## Call:
## lm(formula = Y ~ ., data = cement)
##
## Residuals:
##? ? Min? ???1Q Median? ???3Q? ? Max
## -3.175 -1.671??0.251??1.378??3.925
##
## Coefficients:
##? ?? ?? ?? ? Estimate Std. Error t value Pr(>|t|)
## (Intercept)? ?62.405? ???70.071? ? 0.89? ? 0.399
## X1? ?? ?? ?? ? 1.551? ?? ?0.745? ? 2.08? ? 0.071 .
## X2? ?? ?? ?? ? 0.510? ?? ?0.724? ? 0.70? ? 0.501
## X3? ?? ?? ?? ? 0.102? ?? ?0.755? ? 0.14? ? 0.896
## X4? ?? ?? ?? ?-0.144? ?? ?0.709? ?-0.20? ? 0.844
## ---
## Signif. codes:??0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 2.45 on 8 degrees of freedom
## Multiple R-squared:??0.982,??Adjusted R-squared:??0.974
## F-statistic:??111 on 4 and 8 DF,??p-value: 4.76e-07
# 從結果看,截距和自變量的相關系數均不顯著。
# 利用car包中的vif()函數檢察各自變量間的共線情況
library(car)
vif(lm.sol)#盤算方差膨脹因子
##? ???X1? ???X2? ???X3? ???X4
##??38.50 254.42??46.87 282.51
# 從結果看,各自變量的VIF值都凌駕10,存在多重共線性,其中,X2與X4的VIF值均凌駕200.
plot(X2 ~ X4, col = "red", data = cement)
從上圖,可以知道x2,x4泛起線性漫衍;
library(lars)#這個是我們用套索回歸的包,該包還含有最小角回歸
## Loaded lars 1.2
x = as.matrix(cement[, 1:4])#將X轉換成矩陣
y = as.matrix(cement[, 5])#將Y轉換成矩陣
(laa = lars(x, y, type = "lar"))??#lars函數值只用于矩陣型數據
##
## Call:
## lars(x = x, y = y, type = "lar")
這幅圖說明了lasso回歸中系數隨著參數濱化而變化
## R-squared: 0.982
## Sequence of LAR moves:
##? ?? ?X4 X1 X2 X3
## Var? ?4??1??2??3
## Step??1??2??3??4
# 由此可見,LASSO的變量選擇依次是X4,X1,X2,X3
plot(laa)??#繪出圖
#這里選擇模型有兩種要領,一個是K折交織驗證,cp值兩種要領,這里用了CP,K折交織驗證就是將數##據集分為K等份,k-1份用來擬合數據,最后一份作為測試集,獲得擬合和測試集的均方誤差,做平均#,然后選擇均方誤差最小的那個模型;
#cp值統計量也是評價回歸的一個準則:如果從k個自變量中選取P個加入回歸,則cp值
#SSE就是我們常說的殘差平方和;
summary(laa)??#給出Cp值
## LARS/LAR
## Call: lars(x = x, y = y, type = "lar")
##? ?Df??Rss? ???Cp
## 0??1 2716 442.92
## 1??2 2219 361.95
## 2??3 1918 313.50
## 3??4? ?48? ?3.02
## 4??5? ?48? ?5.00
# 憑據課上對Cp寄義的解釋(權衡多重共線性,其值越小越好),我們取到第3步,使得Cp值最小,也就是選擇X4,X1,X2這三個變量
總結
以上是生活随笔為你收集整理的r语言实现岭回归_数据分析中常见的七种回归分析以及R语言实现(五)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: excel超级工具箱_这6个Excel高
- 下一篇: 怎么测试服务器的性能,如何测试服务器性能