我一直在为建模问题做变量选择。
我使用了试验和错误来选择(添加/删除变量)并减少了错误。但是,我遇到了挑战,因为变量数量增加到数百个,手动变量选择无法执行,因为模型需要花费1/2小时来计算,从而无法完成任务。
你是否碰巧知道除跳跃包中的regsubsets之外的任何其他包(当使用相同的试验和错误变量进行测试时产生更高的错误,它不包括一些线性依赖的变量 - 排除一些有价值的变量)。
答案 0 :(得分:6)
您需要更好(即没有缺陷)的模型选择方法。有很多选择,但应该很容易适应你的情况将是使用某种形式的正规化,如套索或弹性网。这些应用缩小到系数的大小;如果系数从其最小二乘解收缩为零,则从模型中移除该变量。得到的模型系数略有偏差,但它们的方差低于选定的OLS项。
答案 1 :(得分:2)
尝试使用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个方向,并确保哪个模型更适合您的测试数据。 阅读?stepAIC并查看示例。
修改强>
这是真正的逐步回归不是最好的方法。正如在GavinSimpson的回答中所提到的,套索回归是一种更好/更有效的方法。它比逐步回归快得多,并且可以处理大型数据集。 看看glmnet包装插图: http://www.stanford.edu/~hastie/glmnet/glmnet_alpha.html