Извлечь формулу для ступенчато оптимизированной регрессионной модели - PullRequest
0 голосов
/ 29 апреля 2019

Я выполнил множественную линейную регрессию.Мой реальный фрейм данных содержит много других значений x.

Regression <- lm(df1$y ~ df2$x1 + df2$x2 + df2$x3 + df2$x4 + df2$x5 + df2$x6)

StepRegression=step(Regression,direction="both")

#Or with the MASS package
library(MASS)
step.model <- stepAIC(Regression, direction = "both", trace = FALSE)
step.model

Теперь у меня вопрос, как автоматически получить оптимизированную модель?Я устал это:

library(MASS)
OptiRegression = step.model$call

Но это только дает мне это:

lm(formula =df1$y ~ df2$x1 + df2$x3 + df2$x5)

summary(test)
Length  Class   Mode 
     2   call   call 

Но я хочу получить сводку обновленной модели с коэффициентами, которые я получаю, например, когдаЯ набираю:

OptiRegression = lm(df1$y ~ df2$x1 + df2$x3 + df2$x5)
summary (OptiRegression)

1 Ответ

0 голосов
/ 29 апреля 2019

Я полагаю, что вы пытаетесь сделать что-то подобное любому из следующих двух регрессий.Я буду использовать встроенный набор данных mtcars, так как вы его не опубликовали.

library(MASS)

Regression <- lm(mpg ~ ., data = mtcars)

StepRegression <- step(Regression, direction = "both")

OptiReg1 <-StepRegression$terms
fit1 <- lm(OptiReg1, data = mtcars)

Как видите, обе сводки равны, меняется только формула.

summary(StepRegression)
summary(fit1)

Или с пакетом MASS, функция stepAIC.

step.model <- stepAIC(Regression, direction = "both", trace = FALSE)

OptiReg2 <- step.model$terms
fit2 <- lm(OptiReg2, mtcars)

Теперь, опять же, эти два резюме на практике равны, меняется только формула.И это меняется, потому что в fit2 передается OptiReg.

summary(step.model)
summary(fit2)
...