R语言二元逻辑回归报错:object 'Juice_practice' not found 求助
问题原因分析
你遇到的两个错误根源都是数据结构操作失误:
- 第一个报错
y values must be 0 <= y <= 1:因为初始的Juice_practice列不是二元逻辑回归要求的0/1数值型或二分类因子型,glm的binomial家族无法识别。 - 第二个报错
object 'Juice_practice' not found:你执行dataTest <- as.factor(dataTest$Juice_practice)时,直接把整个数据框替换成了Juice_practice单列的因子向量——原数据框里的Age、Gender、Education全部丢失,且此时dataTest本身就是Juice_practice的取值,不再是包含该列的数据框,自然找不到名为Juice_practice的变量。
解决步骤及修正代码
核心是不要覆盖原数据框,仅修改Juice_practice列的类型,保留完整的数据结构:
# 读取完整数据框,保留所有变量 dataTest <- read.csv("location.csv") # 仅将Juice_practice列转为二分类因子,不改变数据框结构 dataTest$Juice_practice <- as.factor(dataTest$Juice_practice) # 确认数据结构(此时dataTest仍是包含所有列的数据框) str(dataTest) head(dataTest) summary(dataTest) # 运行二元逻辑回归 logit_model <- glm(Juice_practice ~ Age + Gender + Education, family = binomial, data = dataTest) # 查看模型结果 summary(logit_model)
额外说明
- 若
Juice_practice原始取值是Yes/No这类字符,转成因子后,glm会自动将第一个因子水平(比如No)设为参考类别,模型结果输出的是相对于参考类别的对数优势比。 - 你也可以将
Juice_practice转为0/1数值型(比如dataTest$Juice_practice <- ifelse(dataTest$Juice_practice == "Yes", 1, 0)),两种方式都符合binomial家族的要求。
内容的提问来源于stack exchange,提问作者Amelia Nicodemus
相关产品推荐
相关产品推荐

