如何使用ggplot2绘制连续预测变量对二分类结局的影响图
ggplot2实现方案
你在base R中调用plot(outcome ~ predictor)绘制二分类结局的概率变化图,本质是软件自动拟合了Logistic回归模型,输出预测概率随连续预测变量的变化曲线及95%置信区间,用ggplot2可通过geom_smooth()直接复现,无需手动计算预测值。
完整代码示例
首先我们先构造和你描述一致的测试数据集:
library(ggplot2) # 构造数据集:二分类结局+3~6范围的连续预测变量 set.seed(123) predictor <- runif(1000, min = 3, max = 6) # 基于logistic回归生成二分类结局 prob <- plogis(-4.8 + 1.1 * predictor) outcome <- factor(rbinom(1000, size = 1, prob = prob), levels = c(0, 1), labels = c("No", "Yes")) mydata <- data.frame(outcome, predictor)
接下来是绘图代码,输出效果和base R默认效果完全一致:
ggplot(mydata, aes(x = predictor, y = as.numeric(outcome) - 1)) + # 拟合logistic回归,输出拟合线和95%置信区间 geom_smooth(method = "glm", method.args = list(family = binomial), se = TRUE) + # 调整轴标签匹配业务含义 labs(y = "Pr(outcome = Yes)", x = "Predictor") + theme_bw()
参数说明
y = as.numeric(outcome) - 1:将因子类型的二分类结局转为0/1数值,y轴范围对应0~1的发生概率,和base R输出的y轴逻辑一致method = "glm"+family = binomial:指定拟合Logistic回归,和base R的默认拟合逻辑完全相同se = TRUE:开启95%置信区间的阴影显示,和base R默认效果图的阴影带对应
如果需要完全还原base R的极简样式,可以调整主题和样式参数:
ggplot(mydata, aes(x = predictor, y = as.numeric(outcome) - 1)) + geom_smooth(method = "glm", method.args = list(family = binomial), se = TRUE, fill = "gray", alpha = 0.3, col = "black") + labs(y = "outcome", x = "predictor") + theme_classic()
内容的提问来源于stack exchange,提问作者user265883
相关产品推荐
相关产品推荐

