如何用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
相关产品推荐
相关产品推荐

