Young.Dr博主您好,看了您的这篇博文,深受启发,于是自己如法炮制,但是总是报错,可否麻烦您指点一二,不胜感激!
R笔记:全子集回归 | 最优子集筛选变量挑选
https://blog.csdn.net/qq_52813185/article/details/127386362?spm=1001.2101.3001.6661.1&utm_medium=distribute.pc_relevant_t0.none-task-blog-2%7Edefault%7ECTRLIST%7ERate-1-127386362-blog-104425227.235%5Ev32%5Epc_relevant_default_base3&depth_1-utm_source=distribute.pc_relevant_t0.none-task-blog-2%7Edefault%7ECTRLIST%7ERate-1-127386362-blog-104425227.235%5Ev32%5Epc_relevant_default_base3&utm_relevant_index=1
以下是我的程序,我想运用bestglm函数获取一个最优的logistic模型:
install.packages("olsrr")
library(olsrr)
install.packages("bestglm")
library(bestglm)
library(leaps)
VAX2 <- VA[c("Year","Month","Season","City","Sex","Agegroup","Setting","Fever","Rash","Breakadj")]
VAX2 <- as.data.frame(as.matrix(VAX2))
VAX2 <- na.exclude(VAX2)
VAX2$Year <- as.numeric(VAX2$Year)
VAX2$Setting <- as.factor(VAX2$Setting)
VAX2$City <- as.factor(VAX2$City)
VAX2$Season <- as.factor(VAX2$Season)
VAX2$Month <- as.factor(VAX2$Month)
VAX2$Sex <- as.factor(VAX2$Sex)
VAX2$Fever <- as.factor(VAX2$Fever)
VAX2$Rash <- as.numeric(VAX2$Rash)
VAX2$Agegroup <- as.numeric(VAX2$Agegroup)
VAX2$Breakadj <- as.factor(VAX2$Breakadj)
str(VAX2)
View(VAX2)
bestglm(VAX2, IC="BIC", family=binomial)
但很可惜跑不出来结果,R的报错提示如下:
bestglm(VAX2, IC="BIC", family=binomial)
Morgan-Tatar search since family is non-gaussian.
Note: factors present with more than 2 levels.
BIC
Best Model:
Error in levels(x)[x] : only 0's may be mixed with negative subscripts
In addition: Warning messages:
1: In model.response(mf, "numeric") :
using type = "numeric" with a factor response will be ignored
2: In Ops.factor(y, z$residuals) : ‘-’ not meaningful for factors
麻烦您指点一二,感激不尽!
不知道你这个问题是否已经解决, 如果还没有解决的话:很抱歉,由于无法获取您的具体代码与数据,我无法直接运行您的程序来查找错误。但是,根据错误提示信息以及我对Logistic回归的了解,我可以给出以下一些可能会导致这种错误的原因和解决方案:
数据类型问题:错误信息中出现了“factor”,这可能意味着您的自变量或因变量是分类变量,而bestglm函数不适用于分类变量。建议将其转换为数值型变量再尝试。
数据中存在缺失值:如果您未能处理缺失值,那么bestglm函数将无法正常工作。建议在运行bestglm函数之前,使用函数如na.omit或者complete.cases等清理缺失值。
调用bestglm函数的方式不正确:在调用bestglm函数时,需要考虑到参数的设置,如family参数设置为"binomial",全局搜索算法(global.algorithm = "hnet")等。建议检查您运行bestglm函数时的参数设置,确保其正确。
版本问题:也许您使用的bestglm函数版本不兼容您的R版本或其他包版本,建议更新R或bestglm包。
总之,我建议您通过手动模型选择、模型交叉验证、模型评估和对结果的解释等步骤一步步寻找最优模型。