做回歸的時候經常頭痛的一個問題就是變量的選擇,好多人一放一大堆變量但是結果做出來都沒意義,這個時候你可以試試讓算法給你選擇最優的自變量組合喲。
那麼今天要寫的就是回歸時篩選變量的逐步法:
The stepwise regression (or stepwise selection) consists of iteratively adding and removing predictors, in the predictive model, in order to find the subset of variables in the data set resulting in the best performing model, that is a model that lowers prediction error.
逐步法又分三種策略:
前進:就是把變量按照貢獻大小一個一個的往回歸模型中放,直到所有自變量都是顯著的為止。
後退:就是把所有的自變量都放進去然後把貢獻小的自變量一個一個的往出來取,直到所有的自變量都顯著。
逐步Stepwise selection:這個就是把兩種方法結合起來,先是把貢獻大的變量一個一個放(前進),所有變量放完了又把沒有貢獻的取出來(後退)。
R語言實操在R中能做逐步回歸的方法有很多,比如:
stepAIC() [MASS 包]
regsubsets() [leaps 包]
train() [caret 包]
今天我還是給大家寫一個例子,這個例子我們用train來做,train()有一個可選參數 method,這個參數可以有以下3個選擇:
"leapBackward", to fit linear regression with backward selection後退
"leapForward", to fit linear regression with forward selection前進
"leapSeq", to fit linear regression with stepwise selection 逐步
我們用到的數據為R自帶的Swiss數據集,裡面有6個變量:
我想用其餘5個變量來預測Fertility,但是5個有點多,我想用逐步回歸選一選
我要選出一個最好的自變量組合來預測Fertility:
step.model <- train(Fertility ~., data = swiss,
method = "leapSeq",
tuneGrid = data.frame(nvmax = 1:5),
trControl = train.control
)
step.model$results
運行上面的代碼就可以輸出如下結果:
我們把自變量的最大個數nvmax規定為5,所以我們會跑出來不同自變量個數的最佳自變量組合的模型結果:
the function starts by searching different best models of different size, up to the best 5-variables model. That is, it searches the best 1-variable model, the best 2-variables model, …, the best 5-variables models.
我們需要根據模型的RMSE和MAE對模型進行選擇,可以看到模型5的RMSE和MAE是最小的,所以最好的模型就是5個變量都放進去,當然了,你不願意自己選,也可以直接輸出最好的模型:
step.model$bestTune
結果顯示依然是模型5最好。
那麼模型到底怎麼選出來的呢?
summary(step.model$finalModel)
從輸出結果可以看到自變量的選擇過程,如果只要一個變量那麼最好的選擇就是Education,如果放兩個自變量,那麼最好的選擇就是Education和Catholic。以此類推。。
那麼模型的係數是多少呢?
coef(step.model$finalModel, 5)
還有,既然變量都給你選好了,我們直接用lm法也可以得到模型係數的呀:
lm(Fertility ~ Agriculture +Examination+ Education + Catholic + Infant.Mortality,
data = swiss)
模型係數一摸一樣。
小結今天給大家寫了逐步回歸的做法,感謝大家耐心看完,自己的文章都寫的很細,代碼都在原文中,希望大家都可以自己做一做,請關注後私信回復「數據連結」獲取所有數據和本人收集的學習資料。如果對您有用請先收藏,再點讚轉發。
也歡迎大家的意見和建議。
如果你是一個大學本科生或研究生,如果你正在因為你的統計作業、數據分析、論文、報告、考試等發愁,如果你在使用SPSS,R,Python,Mplus, Excel中遇到任何問題,都可以聯繫我。因為我可以給您提供好的,詳細和耐心的數據分析服務。
如果你對Z檢驗,t檢驗,方差分析,多元方差分析,回歸,卡方檢驗,相關,多水平模型,結構方程模型,中介調節,量表信效度等等統計技巧有任何問題,請私信我,獲取詳細和耐心的指導。
If you are a student and you are worried about you statistical #Assignments, #Data #Analysis, #Thesis, #reports, #composing, #Quizzes, Exams.. And if you are facing problem in #SPSS, #R-Programming, #Excel, Mplus, then contact me. Because I could provide you the best services for your Data Analysis.
Are you confused with statistical Techniques like z-test, t-test, ANOVA, MANOVA, Regression, Logistic Regression, Chi-Square, Correlation, Association, SEM, multilevel model, mediation and moderation etc. for your Data Analysis...??
Then Contact Me. I will solve your Problem...
加油吧,打工人!
猜你喜歡:
R數據分析:邏輯斯蒂回歸與泊松回歸
R數據分析:多分類邏輯回歸
R數據分析:多元邏輯斯蒂回歸的做法
R數據分析:線性回歸的做法和優化實例
R數據分析:如何做邏輯斯蒂回歸
python機器學習:線性回歸中的啞變量轉換
Python機器學習入門:線性回歸實例操練