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

如何用tidybayes绘制brms模型的随机效应图?

用Tidybayes绘制含固定效应+随机截距&斜率的贝叶斯模型可视化

针对你提到的modd1这类包含固定效应、随机截距和斜率的混合效应模型,核心是正确结合固定效应参数与对应组的随机效应偏移,再用Tidybayes的工具可视化。以下是具体操作方法:

先明确模型结构

你的模型公式是:

modd1 <- brm(hp ~ mpg + cyl + am + (1 + gear|mpg), data = mtcars)

对应的数学表达式为:

hp = b_Intercept + b_mpg×mpg + b_cyl×cyl + b_am×am + (r_mpg[mpg,Intercept] + r_mpg[mpg,gear]×gear)

其中:

  • b_*是固定效应参数
  • r_mpg[mpg, Intercept]是每个mpg组的截距随机偏移
  • r_mpg[mpg, gear]是每个mpg组的gear斜率随机偏移

可视化方向1:每个mpg组的gear总斜率(固定+随机偏移)

如果想展示每个mpg组中,gear对hp的实际影响(固定效应加上该组的随机偏移),可以这样做:

# 先查看模型所有变量,确认随机效应命名
get_variables(modd1)

# 提取参数并计算总斜率
modd1 %>%
  spread_draws(b_mpg, r_mpg[mpg, gear]) %>%
  mutate(total_gear_slope = b_mpg + r_mpg) %>%  # 固定斜率+组内随机偏移
  ggplot(aes(y = factor(mpg), x = total_gear_slope)) +
  stat_halfeye() +  # 同时展示密度分布和区间
  labs(
    y = "mpg分组",
    x = "gear对hp的总斜率(固定+随机偏移)",
    title = "各mpg组的gear斜率分布"
  )

可视化方向2:特定gear值下,各mpg组的预测hp均值

如果想展示在特定gear值(比如gear=4)时,不同mpg组的hp预测分布,可以结合所有固定效应和随机效应计算预测值:

modd1 %>%
  # 提取所有需要的参数:固定截距、固定系数、随机截距和斜率
  spread_draws(b_Intercept, b_mpg, b_cyl, b_am, r_mpg[mpg, Intercept], r_mpg[mpg, gear]) %>%
  # 这里用cyl和am的均值简化计算,也可以替换为你关注的特定值
  mutate(
    avg_cyl = mean(mtcars$cyl),
    avg_am = mean(mtcars$am),
    # 计算gear=4时,每个mpg组的预测hp均值
    hp_pred_gear4 = b_Intercept + b_mpg*mpg + b_cyl*avg_cyl + b_am*avg_am + 
      r_mpg[mpg, Intercept] + r_mpg[mpg, gear]*4
  ) %>%
  ggplot(aes(y = factor(mpg), x = hp_pred_gear4)) +
  stat_halfeye() +
  labs(
    y = "mpg分组",
    x = "gear=4时的预测hp均值",
    title = "不同mpg组在gear=4下的hp分布"
  )

关键注意点

  • 使用spread_draws()可以同时提取多个参数,包括多维随机效应(r_mpg[mpg, term]会自动展开为每个mpg组的对应随机效应项)
  • 必须严格按照模型公式组合参数,确保计算的量符合模型逻辑
  • stat_halfeye()是Tidybayes的核心可视化组件,能同时呈现后验密度分布和区间估计,非常适合贝叶斯结果展示

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.22 14:35:54