开始使用免费开始使用

回归先验的可视化

在上一个练习中,您为贝叶斯回归模型中以身高 \(X\) 预测体重 \(Y\) 的每个参数($a$、$b$、$s$)模拟了 10,000 个 samples:$Y \sim N(m, s^2)$,其中均值 $m = a + bX$。samples 中每一行的 $a$、\(b\) 和 \(s\) 值代表一个先验下合理的回归情景。为探索这些先验情景的范围,您将从前 12 组先验参数 $a$、$b$、\(s\) 中的每一组,模拟 50 对身高与体重的数值。

本练习是课程的一部分

使用 RJAGS 的贝叶斯建模

查看课程

练习说明

  • 创建数据框 prior_simulation,其中包含 samples 中前 12 组先验参数的 n = 50 个"重复"(共 600 行!)。
  • 对于这 600 行 prior_simulation 中的每一行:
    • 从 \(N(170, 10^2)\) 模型模拟一个 height 值。
    • 从 \(N(a + b X, s^2)\) 模型模拟一个 weight 值,其中 \(X\) 为身高,\((a,b,s)\) 为该行对应的先验参数集。
  • 现在,每组参数都有 50 对模拟的 heightweight。使用 ggplot() 为每个参数 set 绘制这 50 对的散点图。请确保将 weight 放在 y 轴上!

交互式实操练习

通过完成这段示例代码来试试这个练习。

# Replicate the first 12 parameter sets 50 times each
prior_scenarios_rep <- bind_rows(replicate(n = ___, expr = samples[1:12, ], simplify = FALSE)) 

# Simulate 50 height & weight data points for each parameter set
prior_simulation <- prior_scenarios_rep %>% 
    mutate(height = rnorm(n = 600, mean = ___, sd = ___)) %>% 
    mutate(weight = rnorm(n = 600, mean = ___, sd = ___))

# Plot the simulated data & regression model for each parameter set
ggplot(prior_simulation, aes(x = ___, y = ___)) + 
    geom_point() + 
    geom_smooth(method = "lm", se = FALSE, size = 0.75) + 
    facet_wrap(~ set)
编辑并运行代码