R语言绘制logistic回归图时mutate生成prob列报错如何解决
错误原因
- 核心报错来自
mutate()中ifelse()的语法错误:原代码中ifelse(outcome == "pos", 0",","1")存在引号错位问题,0后的引号、包裹逗号的引号都是无效写法,导致R解析出了多余的第4个参数,触发unused argument报错。 - 额外逻辑问题:你的y轴是「糖尿病阳性概率」,如果要对应outcome为pos的样本,
ifelse的返回值写反了:outcome等于pos时应该返回1,否则返回0,否则拟合出的概率曲线是反向的。
修正后可运行代码
假设你的原始数据集名为df,修正后代码如下:
df %>% mutate(prob = ifelse(outcome == "pos", 1, 0)) %>% ggplot(aes(plasma_glucose, prob)) + geom_point(alpha = 0.3) + # 若点无重叠可保留原来的alpha=1 geom_smooth(method = "glm", method.args = list(family = "binomial")) + labs( title = "Logistic Regression Model", x = "Plasma Glucose Concentration", y = "Probability of being diabete-pos" )
简化写法
你也可以不用提前生成0/1变量,直接在ggplot映射中处理,代码更简洁:
df %>% ggplot(aes(plasma_glucose, as.numeric(outcome == "pos"))) + geom_point(alpha = 0.3) + geom_smooth(method = "glm", method.args = list(family = "binomial")) + labs( title = "Logistic Regression Model", x = "Plasma Glucose Concentration", y = "Probability of being diabete-pos" )
内容的提问来源于stack exchange,提问作者Div
相关产品推荐
相关产品推荐

