回归先验的可视化
在上一个练习中,您为贝叶斯回归模型中以身高 \(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)\) 为该行对应的先验参数集。
- 从 \(N(170, 10^2)\) 模型模拟一个
- 现在,每组参数都有 50 对模拟的
height与weight。使用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)