在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)
还有,还有更好的选择变量的方法吗?
预先感谢
答案 0 :(得分:4)
您正在使用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
这是自动完成的,但值得一读有关此方法的缺点的答案: