如何用ggplot2绘制brms模型的默认条件效应图?
用ggplot2绘制brms模型的条件效应图
要实现用ggplot2自定义绘制brms模型的条件效应图,只需两步:提取效应数据、用ggplot2重构图形,具体操作如下:
1. 提取条件效应的原始数据
首先用conditional_effects()函数生成目标变量(这里是dist)的效应数据,再将其转换为ggplot2可直接使用的数据框格式:
# 生成dist的条件效应数据,指定effects参数明确目标变量 ce_dist <- brms::conditional_effects(height_nb, effects = "dist") # 转换为数据框 ce_dist_df <- as.data.frame(ce_dist$dist)
数据框里包含核心列:dist(自变量取值)、estimate__(拟合值)、lower__(置信区间下限)、upper__(置信区间上限)。
2. 用ggplot2绘制并自定义图形
基于提取的数据框,你可以完全按照ggplot2的语法调整所有元素,比如背景、坐标轴文本、颜色等:
library(ggplot2) ggplot(ce_dist_df, aes(x = dist, y = estimate__)) + # 绘制置信区间带 geom_ribbon(aes(ymin = lower__, ymax = upper__), fill = "#69b3a2", alpha = 0.2) + # 绘制拟合线 geom_line(color = "#69b3a2", linewidth = 1) + # 自定义坐标轴标签 labs( x = "距离(自定义单位)", y = "高度(mm)", title = "dist对height_mm的条件效应" ) + # 更换主题(比如简洁的黑白主题) theme_bw() + # 进一步调整主题元素,比如坐标轴文本大小 theme( axis.title.x = element_text(size = 12, face = "bold"), axis.title.y = element_text(size = 12, face = "bold"), plot.title = element_text(hjust = 0.5, size = 14) )
额外说明
- 如果需要控制
altitude在特定值(而非默认均值)计算效应,可以在conditional_effects()里加conditions参数,比如conditions = data.frame(altitude = 1000) - 若要同时绘制分组(比如
trans.pair)的效应,只需在effects里指定"dist:trans.pair",然后在ggplot的aes里加上color = trans.pair即可分线展示
内容的提问来源于stack exchange,提问作者wilberox
相关产品推荐
相关产品推荐

