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

时间:2019-11-23 00:35:49

标签: r logistic-regression

我以前使用AIC和step函数进行变量选择,但是由于某种原因无法使它起作用。

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 ~.,传递,但这些更改都不能解决问题。

step函数的输出是与基础模型(m0)相同的模型。

2 个答案:

答案 0 :(得分:2)

step函数在其中使用update。另一方面,与.函数相比,updatelm函数中具有不同的含义。更新中的.用来表示您希望以原始方式维护该公式,而不是像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")

答案 1 :(得分:0)

这就是我解决问题的方式。正如Onyambu在答复中提到的那样,在AIC中,该点不能像lm中那样工作。我没有将84个预测变量手动连接,而是将粘贴功能与崩溃=“ +”结合使用。

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