r-逻辑回归最佳子集:由于跳跃设置,bestglm中出现错误



使用bestglm库运行最佳子集glm时出错

有了这个数据

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

excel中只有5个(是/否(变量和年龄,只有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")

最新更新