Ограничить число переменных-предикторов в ступенчатой ​​регрессии в R - PullRequest
0 голосов
/ 04 февраля 2019

Я хотел бы иметь возможность выполнять прямую пошаговую линейную регрессию, но ограничить количество переменных-предикторов максимумом (в моем конкретном случае - тремя).Вот некоторые примеры данных.

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 голосов
/ 05 февраля 2019

Вы можете использовать пакет regsubsets в R, где вы можете ограничить переменные и выбрать свой метод («вперед»).

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)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...