You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何绘制MICE多插补数据下逻辑回归模型(glm)的交互项图?

绘制多插补后逻辑回归的交互效应图

没问题!针对你用mice做过多插补、且已经得到显著iv*sex交互项的逻辑回归模型,我给你分享两种实用的绘图方法,都能完美适配多插补的结果~


方法1:用effects包快速生成(推荐,适配多插补)

这个方法最省心,effects包会自动处理多插补模型的合并结果,直接输出带置信区间的交互图:

  1. 先把多插补的模型汇总(with返回的是mira对象,需要用pool()合并)
pooled_model <- pool(model)
# 可以先确认交互项的显著性,和你之前的结果一致
summary(pooled_model)
  1. 提取iv*sex的交互效应,指定type="response"因为是逻辑回归,输出的是概率值
library(effects)
interact_effect <- Effect(focal.predictors = c("iv", "sex"), 
                          mod = pooled_model, 
                          type = "response")
  1. 直接绘制交互图,自带置信区间
plot(interact_effect, 
     lines=list(multiline=TRUE), # 按sex分组画不同线条
     xlab="自变量(iv)", 
     ylab="因变量(dv)的预测概率",
     main="iv与sex对dv的交互效应图")

这个图会清晰展示不同sex分组下,iv变化时dv概率的趋势,置信区间也是基于多插补的合并结果计算的,非常严谨。


方法2:用ggplot2自定义绘图(更灵活)

如果想要更个性化的样式(比如调整颜色、主题、标注),可以手动生成预测数据后用ggplot2绘制:

  1. 创建包含iv和sex所有组合的预测数据集,控制变量取均值(或你需要的参考值)
library(ggplot2)
# 生成预测数据:iv取从最小值到最大值的100个点,sex取所有水平
new_data <- expand.grid(
  iv = seq(min(complete(imp)$iv), max(complete(imp)$iv), length.out = 100),
  sex = unique(complete(imp)$sex),
  # 控制变量取均值,保证其他变量一致
  control = mean(complete(imp)$control, na.rm = TRUE)
)
  1. 从多插补模型中获取预测概率和置信区间
# 获取预测概率
new_data$pred_prob <- pool.predict(pooled_model, newdata = new_data, type = "response")
# 计算95%置信区间
pred_ci <- predict(pooled_model, newdata = new_data, type = "response", se.fit = TRUE)
new_data$lower <- pred_ci$fit - 1.96 * pred_ci$se.fit
new_data$upper <- pred_ci$fit + 1.96 * pred_ci$se.fit
  1. 用ggplot2绘制个性化交互图
ggplot(new_data, aes(x = iv, y = pred_prob, color = factor(sex))) +
  geom_line(linewidth = 1) +
  # 添加置信区间的阴影
  geom_ribbon(aes(ymin = lower, ymax = upper, fill = factor(sex)), alpha = 0.2, color = NA) +
  # 设置标签和主题
  labs(x = "自变量(iv)", 
       y = "因变量(dv)的预测概率", 
       color = "调节变量(sex)",
       fill = "调节变量(sex)",
       title = "iv与sex对dv的交互效应(多插补结果)") +
  theme_minimal()

小提示

  • 如果sex是连续变量,可以把它分成几个分位数(比如低、中、高三组)来绘制分组趋势,或者用effects包的plot函数自动生成斜率图。
  • 确保你已经安装了需要的包:install.packages(c("effects", "ggplot2", "mice"))

内容的提问来源于stack exchange,提问作者HM Chan

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.22 08:17:12