我一直在爲建模問題做變量選擇。變量選擇方法
我已經在選擇(增加/刪除一個變量)時使用了試錯法,並減少了錯誤。然而,隨着變量數量增加到數百個,我面臨的挑戰是手動變量選擇無法執行,因爲模型需要1/2小時來計算,從而無法完成任務。
您是否碰巧知道其他軟件包,而不是來自leaps軟件包的regsubsets(當使用相同的試驗和錯誤變量進行測試產生更高的錯誤時,它不包括一些變量,它們是線性依賴的 - 不包括一些有價值的變量)。
我一直在爲建模問題做變量選擇。變量選擇方法
我已經在選擇(增加/刪除一個變量)時使用了試錯法,並減少了錯誤。然而,隨着變量數量增加到數百個,我面臨的挑戰是手動變量選擇無法執行,因爲模型需要1/2小時來計算,從而無法完成任務。
您是否碰巧知道其他軟件包,而不是來自leaps軟件包的regsubsets(當使用相同的試驗和錯誤變量進行測試產生更高的錯誤時,它不包括一些變量,它們是線性依賴的 - 不包括一些有價值的變量)。
嘗試使用MASS包的stepAIC
功能。
這裏是一個真正的小例子:
library(MASS)
data(swiss)
str(swiss)
lm <- lm(Fertility ~ ., data = swiss)
lm$coefficients
## (Intercept) Agriculture Examination Education Catholic
## 66.9151817 -0.1721140 -0.2580082 -0.8709401 0.1041153
## Infant.Mortality
## 1.0770481
st1 <- stepAIC(lm, direction = "both")
st2 <- stepAIC(lm, direction = "forward")
st3 <- stepAIC(lm, direction = "backward")
summary(st1)
summary(st2)
summary(st3)
你應該嘗試的3個方向和ckeck該模型的測試數據更好地工作。 閱讀stepAIC並查看示例。
編輯
這是真的逐步迴歸是不是最大的方法。正如GavinSimpson的回答中所提到的,套索迴歸是一種更好或更有效的方法。它比逐步迴歸快得多,並且可以處理大型數據集。 檢查glmnet包小插曲: http://www.stanford.edu/~hastie/glmnet/glmnet_alpha.html
非常感謝Gaving lars似乎是一個更好的方法比常規迴歸方法的變量選擇 – Barnaby