具有正向参数的 R stats::step 函数未优化 LR 模型 (AIC)

R stats::step function with forward direction param is not optimizing the LR model(AIC)

我之前使用过 AIC 和阶跃函数来选择变量,但由于某种原因无法让它工作。

library(ISLR)
d = data("Caravan")
train_data = Caravan[-c(1:500,]

m0 <- glm(Purchase ~ 1, data = train_data, family = "binomial")
stats::step(m0, direction = "forward", trace = 1 )

PN - 我尝试了 stepAIC 函数并尝试将范围作为 scope = Purchase ~., 传递,但这些更改没有解决问题。

阶跃函数的输出是一个与基础模型(m0)相同的模型。

step 函数在其中使用 update。另一方面,与 lm 函数相比,.update 函数中具有不同的含义。 update 中的 . 用于表示您希望按照原来的方式维护公式,而不是像 lm 中那样用于包含所有变量。因此,如果您的模型是 m<-lm(y~x)update(m,log(.)~.) 只是意味着将左侧更改为日志,即 log(y),同时保持右侧不变。即x。除了模型中已有的变量外,perios 不包括任何其他变量。

你应该做什么:

scopef <- reformulate(grep("Purchase",names(Caravan),value=T,invert = T),"Purchase")
step(m0,scopef,direction = "forward")

这就是我解决问题的方法。正如 Onyambu 在他的回复中提到的,在 AIC 中,点的工作方式与在 lm 中不同。我没有手动连接 84 个预测变量,而是使用带有 collapse="+" 的粘贴函数。

glmnet( formula(paste0("Y~", paste(names(Caravan)[1:85], collapse="+"))), 
                       ....)