基于 R 中的 varimp 自动选择变量

Automate variable selection based on varimp in R

在R中,我有一个逻辑回归模型如下

train_control <- trainControl(method = "cv", number = 3)

logit_Model <- train(result~., data=df,
           trControl = train_control,
           method = "glm",
           family=binomial(link="logit"))

calculatedVarImp <- varImp(logit_Model, scale = FALSE)

我通过相同的代码使用 运行 的多个数据集,因此每个数据集的变量重要性都会发生变化。有没有办法获取总体重要性小于 n(例如 1)的变量的名称,这样我就可以自动删除这些变量并重新运行模型。

我无法通过子集 'overall' 值

从 'calculatedVarImp' 变量中获取信息
lowVarImp <- subset(calculatedVarImp , importance$Overall <1)

另外,有没有更好的变量选择方法?

提前致谢

您正在使用 caret 包。不确定您是否知道这一点,但是 caret 有一种使用 Akaike 信息准则进行逐步逻辑回归的方法:glmStepAIC.

因此它为预测变量的每个子集迭代训练一个模型,并在 AIC 最低的那个停止。


train_control <- trainControl(method = "cv", number = 3)

logit_Model <- train(y~., data= train_data,
                     trControl = train_control,
                     method = "glmStepAIC",
                     family=binomial(link="logit"),
                     na.action = na.omit)

logit_Model$finalModel

这是尽可能自动化的,但可能值得阅读有关此方法缺点的答案:

See Also.