R中的反向消除(过程自动化)

R中的反向消除(过程自动化),r,linear-regression,modeling,R,Linear Regression,Modeling,我尝试使用反向消除技术得到一个四预测多元回归模型: 以下是我的命令: #Packages library(Stat2Data) library(mosaic) library(car) library(dplyr) #Load data (this dataset is included in the Stat2Data package) data("MLBStandings2016") #Drop Team names, Wins and Losses(I only want quantit

我尝试使用反向消除技术得到一个四预测多元回归模型:

以下是我的命令:

#Packages
library(Stat2Data)
library(mosaic)
library(car)
library(dplyr)

#Load data (this dataset is included in the Stat2Data package)
data("MLBStandings2016")
#Drop Team names, Wins and Losses(I only want quantitative variables)
MLBdata <- MLBStandings2016[c(-3,-4,-1,-2)]

#I begin with a full model(16 predictors) with Winning percentage as the response
full=lm(WinPct~.,data=MLBdata)
summary(full)

#Find the MSE for the full model(I will be using MSE(basically Mallow's Cp) as the criteria for choosing models)
MSE <- ((summary(full))$sigma^2)

#Use the step( ) command for backward elimination
step(full, scale=MSE, direction="backward")
我仍然有同样的问题,消除过程停止得太快(在只剩下四个预测因素之前)


我在想也许我应该使用R^2或adj R^2,但我不知道是否有一个函数可以使用,其中我可以包含一个参数,指定我可以使用的标准,或者是否有人知道一个很好的方法来自动化这个过程。

你特别想要一个4变量模型,有什么特别的原因吗?一般来说,向后回归函数在达到特定停止条件时停止-对于step(),新模型(不含变量)的AIC不会小于前一个模型的AIC。如果您使用的是p值,它将不断删除变量,直到剩下的所有变量的p值都小于函数使用的截止值。我在你的代码中没有看到你告诉函数选择一个特定数量的变量的地方,我认为这实际上不是一个好主意。(ctd)如果你选择满足特定标准的变量,不管有多少,你的模型会比你为变量的数量选择一个任意的截止值更加健壮。如果确实需要,则需要在步骤()中增加k参数以降低p值截止值,直到获得所需的变量数。但是如果你这样做的话,你可以删除在大多数情况下被认为是重要的变量。嗨,bsg,谢谢你的洞察力。不幸的是,这是一个硬件问题,问题规定它是一个四预测模型(这确实没有意义)。我想我必须添加一个参数“prem=”来获得所需数量的变量。再次感谢您的洞察力。祝你好运。好啊所以是的,在ols\u step\u backward\u p或k中的prem。祝你好运@杨武:核心问题是“你采取下一步行动的标准是什么?”。如果您知道这一点,您可以编写自己的step函数(该函数还考虑“如果变量超过4个,则不要停止”)。如果你自己不知道怎么做,这里的人会帮助你。但同样,标准必须明确。
#I load a new package
library(olsrr)
#use the ols function to do backward elimination
ols_step_backward_p(full)