逻辑回归最佳子集:由于跳跃设置导致 bestglm 错误

Logistic regression best subset: Error in bestglm due to leaps setup

当 运行 使用 bestglm

的最佳子集 glm 时出现错误

有了这个数据

https://www.mediafire.com/file/9d8fj2p9wpqnf62/dat5.xlsx/file

在 excel 中只有 5 (YES/NO) 个变量和年龄,只有 25 行但它重现了错误。

这是代码

library(readxl)
library(bestglm)

lbw <- read_xlsx("C:/Users/DOL11/dat5.xlsx")
lbw.for.bestglm <- within(lbw, {
  id   <- NULL        # Delete
  y    <- PA         # PA into y
  PA  <- NULL        # Delete PA
})

## Reorder variables
lbw.for.bestglm <-
  lbw.for.bestglm[, c("Age","Migrant_origin","GenderFemale","GenderMale","GenderNOBIN", "y")]


lbw.for.bestglm$Migrant_origin<- as.factor(lbw.for.bestglm$Migrant_origin)
lbw.for.bestglm$GenderFemale<- as.factor(lbw.for.bestglm$GenderFemale)
lbw.for.bestglm$GenderMale<- as.factor(lbw.for.bestglm$GenderMale)
lbw.for.bestglm$GenderNOBIN<- as.factor(lbw.for.bestglm$GenderNOBIN)
lbw.for.bestglm$y<- as.factor(lbw.for.bestglm$y)

lbw.for.bestglm<-as.data.frame(lbw.for.bestglm)

#Xy<-as.data.frame(cbind(lbw.for.bestglm,y))

res.bestglm <-
  bestglm(Xy = lbw.for.bestglm,
          family = gaussian,
          IC = "AIC",                 # Information criteria for
          method = "exhaustive")

我从本教程中获得了代码

https://rstudio-pubs-static.s3.amazonaws.com/2897_9220b21cfc0c43a396ff9abf122bb351.html

我尝试了不同的方法来组合 X 矩阵和 y,但总是出现错误

binary categorical variables converted to 0-1 so 'leaps' could be used.
Error in leaps.setup(x, y, wt = weights, nbest = nbest, nvmax = nvmax,  : 
  NA/NaN/Inf in foreign function call (arg 4)

我认为错误与您指定的家庭有关,如果您使用family = binomial(),则没有错误。

library(readxl)
library(bestglm)

lbw <- read_xlsx("dat5_error.xlsx") # your data
lbw.for.bestglm <- within(lbw, {
  id   <- NULL        # Delete
  y    <- PA         # PA into y
  PA  <- NULL        # Delete PA
})

## Reorder variables
lbw.for.bestglm <-
  lbw.for.bestglm[, c("Age","Migrant_origin","GenderFemale","GenderMale","GenderNOBIN", "y")]


lbw.for.bestglm$Migrant_origin<- as.factor(lbw.for.bestglm$Migrant_origin)
lbw.for.bestglm$GenderFemale<- as.factor(lbw.for.bestglm$GenderFemale)
lbw.for.bestglm$GenderMale<- as.factor(lbw.for.bestglm$GenderMale)
lbw.for.bestglm$GenderNOBIN<- as.factor(lbw.for.bestglm$GenderNOBIN)
lbw.for.bestglm$y<- as.factor(lbw.for.bestglm$y)

lbw.for.bestglm<-as.data.frame(lbw.for.bestglm)

## produces error 
res.bestglm <-
  bestglm(Xy = lbw.for.bestglm,
          family = gaussian(),
          IC = "AIC",                 # Information criteria for
          method = "exhaustive")

## no error 
res.bestglm <-
  bestglm(Xy = lbw.for.bestglm,
          family = binomial(),
          IC = "AIC",                 # Information criteria for
          method = "exhaustive")