做回歸的時(shí)候經(jīng)常頭痛的一個(gè)問題就是變量的選擇,好多人一放一大堆變量但是結(jié)果做出來都沒意義幻锁,這個(gè)時(shí)候你可以試試讓算法給你選擇最優(yōu)的自變量組合喲。
那么今天要寫的就是回歸時(shí)篩選變量的逐步法:
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.
逐步法又分三種策略:
- 前進(jìn):就是把變量按照貢獻(xiàn)大小一個(gè)一個(gè)的往回歸模型中放边臼,直到所有自變量都是顯著的為止哄尔。
- 后退:就是把所有的自變量都放進(jìn)去然后把貢獻(xiàn)小的自變量一個(gè)一個(gè)的往出來取,直到所有的自變量都顯著柠并。
- 逐步Stepwise selection:這個(gè)就是把兩種方法結(jié)合起來究飞,先是把貢獻(xiàn)大的變量一個(gè)一個(gè)放(前進(jìn)),所有變量放完了又把沒有貢獻(xiàn)的取出來(后退)堂鲤。
R語言實(shí)操
在R中能做逐步回歸的方法有很多亿傅,比如:
- stepAIC() [MASS 包]
- regsubsets() [leaps 包]
- train() [caret 包]
今天我還是給大家寫一個(gè)例子,這個(gè)例子我們用train來做瘟栖,train()有一個(gè)可選參數(shù) method葵擎,這個(gè)參數(shù)可以有以下3個(gè)選擇:
- "leapBackward", to fit linear regression with backward selection后退
- "leapForward", to fit linear regression with forward selection前進(jìn)
- "leapSeq", to fit linear regression with stepwise selection 逐步
我們用到的數(shù)據(jù)為R自帶的Swiss數(shù)據(jù)集,里面有6個(gè)變量:
我想用其余5個(gè)變量來預(yù)測Fertility半哟,但是5個(gè)有點(diǎn)多酬滤,我想用逐步回歸選一選
我要選出一個(gè)最好的自變量組合來預(yù)測Fertility:
step.model <- train(Fertility ~., data = swiss,
method = "leapSeq",
tuneGrid = data.frame(nvmax = 1:5),
trControl = train.control
)
step.model$results
運(yùn)行上面的代碼就可以輸出如下結(jié)果:
我們把自變量的最大個(gè)數(shù)nvmax規(guī)定為5,所以我們會(huì)跑出來不同自變量個(gè)數(shù)的最佳自變量組合的模型結(jié)果:
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.
我們需要根據(jù)模型的RMSE和MAE對模型進(jìn)行選擇寓涨,可以看到模型5的RMSE和MAE是最小的盯串,所以最好的模型就是5個(gè)變量都放進(jìn)去,當(dāng)然了戒良,你不愿意自己選体捏,也可以直接輸出最好的模型:
step.model$bestTune
[圖片上傳失敗...(image-8456d2-1613469621881)]
結(jié)果顯示依然是模型5最好。
那么模型到底怎么選出來的呢糯崎?
summary(step.model$finalModel)
從輸出結(jié)果可以看到自變量的選擇過程几缭,如果只要一個(gè)變量那么最好的選擇就是Education,如果放兩個(gè)自變量沃呢,那么最好的選擇就是Education和Catholic年栓。以此類推。薄霜。
那么模型的系數(shù)是多少呢某抓?
coef(step.model$finalModel, 5)
還有,既然變量都給你選好了惰瓜,我們直接用lm法也可以得到模型系數(shù)的呀:
lm(Fertility ~ Agriculture +Examination+ Education + Catholic + Infant.Mortality,
data = swiss)
模型系數(shù)一摸一樣否副。
小結(jié)
今天給大家寫了逐步回歸的做法,感謝大家耐心看完鸵熟,自己的文章都寫的很細(xì)副编,代碼都在原文中负甸,希望大家都可以自己做一做流强,請關(guān)注后私信回復(fù)“數(shù)據(jù)鏈接”獲取所有數(shù)據(jù)和本人收集的學(xué)習(xí)資料痹届。如果對您有用請先收藏,再點(diǎn)贊轉(zhuǎn)發(fā)打月。
也歡迎大家的意見和建議队腐。
如果你是一個(gè)大學(xué)本科生或研究生,如果你正在因?yàn)槟愕慕y(tǒng)計(jì)作業(yè)奏篙、數(shù)據(jù)分析柴淘、論文、報(bào)告秘通、考試等發(fā)愁为严,如果你在使用SPSS,R,Python肺稀,Mplus, Excel中遇到任何問題第股,都可以聯(lián)系我。因?yàn)槲铱梢越o您提供好的话原,詳細(xì)和耐心的數(shù)據(jù)分析服務(wù)夕吻。
如果你對Z檢驗(yàn),t檢驗(yàn)繁仁,方差分析涉馅,多元方差分析,回歸黄虱,卡方檢驗(yàn)稚矿,相關(guān),多水平模型捻浦,結(jié)構(gòu)方程模型盐捷,中介調(diào)節(jié),量表信效度等等統(tǒng)計(jì)技巧有任何問題默勾,請私信我碉渡,獲取詳細(xì)和耐心的指導(dǎo)。
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數(shù)據(jù)分析:線性回歸的做法和優(yōu)化實(shí)例