逻辑回归报错invalid type (list)排查:基于ISLR2库的代码问题
问题分析与解决
你的两个模型代码存在以下关键问题,导致出现"invalid type (list) for variable in logistic regression"报错:
1. 公式错误使用整个数据框作为响应变量
glm()的公式格式为响应变量 ~ 自变量,你在两个模型中都把df(整个数据框)放在了响应变量的位置,glm会将其识别为list类型,而逻辑回归要求响应变量是二元向量(如0/1或二分类因子)。
Default数据集的核心响应变量是default列(表示是否违约),需替换公式里的df。
2. 自变量写法错误(model2)
student["Yes"]的写法完全错误:
student是Default中的二分类因子列,直接作为自变量传入公式即可,无需索引取值。- 这种索引写法会返回list或子集,不符合glm对自变量的类型要求。
3. 数据集名称不匹配
你处理后的数据框是df,但模型里用了churn_train,属于笔误,需统一为df(或你划分好的训练集名称)。
修正后的代码示例
# 加载必要的库 library(ISLR2) library(dplyr) # 转换有序因子为普通因子 df <- Default %>% mutate_if(is.ordered, factor, ordered = FALSE) # 修正后的model1 model1 <- glm(default ~ balance, family = "binomial", data = df) # 修正后的model2 model2 <- glm(default ~ student, family = "binomial", data = df)
内容的提问来源于stack exchange,提问作者user19791361
相关产品推荐
相关产品推荐

