如何从marginaleffects包plot_predictions()提取brms模型预测值坐标
提取marginaleffects包plot_predictions()中的预测值坐标
问题背景
需要从marginaleffects包的plot_predictions()函数返回的brms模型结果中,提取condition参数指定的每个x值(-1.5、-1、-0.5、0、0.5、1、1.5)对应的均值或中位数预测y值,避免直接解析复杂的ggplot对象结构。
简便解决方案
不需要从plot_predictions()返回的ggplot对象中硬挖数据,直接用marginaleffects包的专用函数就能高效获取目标值,两种方法如下:
方法1:直接生成结构化预测数据(推荐)
用predictions()函数替代plot_predictions(),传入相同的模型和条件参数,直接得到规整的数据框:
# 生成预测数据框 pred_df <- predictions( model = mod, condition = list(x = seq(-1.5, 1.5, 0.5), group = c("a", "b")) ) # 提取均值预测值(estimate列) mean_preds <- pred_df[, c("x", "group", "estimate")] # 若需要中位数预测值,基于后验样本计算 pred_df$median_pred <- apply(pred_df$posterior, 1, median) median_preds <- pred_df[, c("x", "group", "median_pred")]
方法2:从已有的ggplot对象中提取
如果已经生成了predictionPlot,可以直接读取其内置的数据集:
# 提取ggplot对象中的数据 plot_data <- predictionPlot$data # 筛选所需的x、分组和预测均值 target_data <- plot_data[, c("x", "group", "estimate")]
说明
predictions()是marginaleffects包专门用于获取预测结果的函数,返回结构清晰的数据框,比解析ggplot对象更稳定可靠。- 后验样本存储在
pred_df$posterior列中,可灵活计算分位数、标准差等其他统计量。
内容的提问来源于stack exchange,提问作者llewmills
相关产品推荐
相关产品推荐

