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

如何用sjPlot::plot_model()绘制连续变量特定取值的交互图

解决方案

要实现只展示variable1取2、4、6时的预测点及置信区间须,有两种实用方法:

方法1:直接用plot_model()指定取值

利用terms参数的语法,给variable1明确指定要展示的数值,格式为"variable1 [2,4,6]",这样plot_model会直接计算这三个点的预测值,而非生成连续直线:

plot_model(model, type="pred", terms=c("variable1 [2,4,6]", "condition"), ci.lvl=0.95)
  • 如果需要叠加原始数据点,可添加参数show.data=TRUE;
  • 控制变量会自动被固定到均值(连续变量)或参考水平(分类变量),符合交互效应可视化的常规做法。

方法2:手动生成预测数据+ggplot可视化(更灵活)

如果需要自定义图形样式(比如点大小、置信须样式、配色等),可以手动生成预测数据后用ggplot绘制:

# 1. 构建预测数据集:固定控制变量到合理水平,指定目标取值
pred_data <- expand.grid(
  condition = levels(data$condition),
  variable1 = c(2,4,6),
  control1 = mean(data$control1, na.rm = TRUE), # 连续控制变量取均值
  control2 = levels(data$control2)[1] # 二分类控制变量取参考水平
)

# 2. 计算预测值与95%置信区间
pred_data$predicted <- predict(model, newdata = pred_data)
conf_int <- predict(model, newdata = pred_data, interval = "confidence")
pred_data$ci_low <- conf_int[, "lwr"]
pred_data$ci_high <- conf_int[, "upr"]

# 3. 绘制点图+置信须
library(ggplot2)
ggplot(pred_data, aes(x = factor(variable1), y = predicted, color = condition)) +
  geom_point(position = position_dodge(0.5), size = 3) +
  geom_errorbar(aes(ymin = ci_low, ymax = ci_high), 
                width = 0.2, position = position_dodge(0.5)) +
  labs(x = "variable1", y = "预测dv值", color = "condition") +
  theme_bw()

这种方法可以完全掌控图形的每一个细节,比如调整点的位置偏移、置信须的宽度、添加主题样式等。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.31 11:25:43