如何使用 Boruta 输出快速有效地从 R 中的 glm 中排除变量

How to quickly and efficiently exclude a variables from a glm in R using Boruta output

我的数据框中有 96 个变量。我想用 Boruta() 函数发现的重要变量来拟合逻辑回归。如果只有少数不重要的变量,那么这样做很容易:

glm <- glm(class ~ . - X1 - X2 - X3, data = df, family = binomial)

但是,如果我有 40 个不重要的变量,这就变得不可行了。我想知道如何提取 R 中所有不重要变量的名称,以及是否可以这样做:

glm <- glm(class ~ . -unimportant, data = df, family = binomial)

其中 unimportant 是不重要变量的向量。我尝试像这样提取这些不重要的变量:

unimportant <- boruta_output$finalDecision[boruta_output$finalDecision == "Rejected"]

但这给了我一个具有三个级别的因素。

我的问题是:

我可以使用向量从模型中排除变量吗?如果是这样,我怎样才能以可以同时排除许多变量的方式从 boruta 输出中提取不重要的变量?

有更好的方法吗?

我试图找到一种在线执行此操作的方法,但我只看到了排除一些变量的示例,就像我在第一个示例中所做的那样。

Boruta::Boruta中有很多示例,其中一个示例显示了如何在使用 Boruto 算法提取参数后拟合 randomForest。示例如下:

library(mlbench); data(Ozone)
library(randomForest)
na.omit(Ozone)->ozo
Boruta(V4~.,data=ozo,doTrace=2)->Bor.ozo
cat('Random forest run on all attributes:\n')
print(randomForest(V4~.,data=ozo))
cat('Random forest run only on confirmed attributes:\n')
print(randomForest(ozo[,getSelectedAttributes(Bor.ozo)],ozo$V4))

与其提取应该排除的变量,不如继续这个例子,根据算法提取应该包含的变量:

glm(class ~ ., data = df[, c('class', getSelectedAttributes(boruto_output))])

注意:上面的方法我没法测试,因为里面没有数据。