在R的逐步回归中约束预测变量的数量

时间:2019-02-04 20:59:18

标签: r regression

我希望能够进行正向逐步线性回归,但是将预测变量的数量限制为最大值(在我的特定情况下为三个)。这是一些示例数据。

set.seed(123)
myDep <- runif(100)

pred1 <- myDep + runif(100)
pred2 <- myDep + rnorm(100)
pred3 <- myDep + runif(100) + rnorm(100)
pred4 <- myDep + runif(100) + runif(100)
pred5 <- runif(100)

myDF <- data.frame(myDep, pred1, pred2, pred3, pred4, pred5)

如果我要使用下面的代码简单地运行线性回归,显然,我将获得所有五个预测变量。

myModel <- lm(myDep ~ ., data = myDF)

我想做的是使用step()或其他R命令逐步运行向前方向,该前进方向仅选择三个预测变量,然后停止。

对于它的价值,我尝试过:

step(lm(myDep ~ ., data = myDF), steps = 3, direction = "forward")

,结果如下:但是不是我想要的,因为它使用了所有五个预测变量。

Start:  AIC=-378.09
myDep ~ pred1 + pred2 + pred3 + pred4 + pred5

Call:
lm(formula = myDep ~ pred1 + pred2 + pred3 + pred4 + pred5, data = myDF)

Coefficients:
(Intercept)        pred1        pred2        pred3        pred4        pred5  
   -0.16617      0.30043      0.07983      0.03670      0.17869      0.01606 

我敢肯定有办法做到这一点,但是我似乎无法弄清楚正确的格式。预先感谢。

1 个答案:

答案 0 :(得分:1)

您可以在R中使用regsubsets包,在其中可以限制变量并选择方法(“转发”)。

https://www.rdocumentation.org/packages/leaps/versions/2.1-1/topics/regsubsets

library(regsubsets)

b <- regsubsets(myDep ~ ., data=myDF, nbest=1, nvmax=[enter your max # of predictors])
summary(b)