提取逐步优化回归模型的公式

时间:2019-04-29 11:35:44

标签: r model regression linear-regression

我进行了多元线性回归。我的真实数据框包含更多的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 :(得分:0)

我相信您正在尝试执行以下两个回归中的任何一个。我将使用内置数据集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)