r - 使用贝叶斯图绘制来自多个模型的后验参数估计

标签 r ggplot2 rstan rstanarm

我正在使用很棒的绘图库 bayesplot从我用 rstanarm 估计的模型中可视化后验概率区间.我想通过将系数的后验区间放到同一图上来以图形方式比较来自不同模型的绘制。

例如,想象一下,对于三个参数 beta1, beta2, beta3,我从后验中抽取了 1000 次。对于两种不同的模型:

# load the plotting library
library(bayesplot)
#> This is bayesplot version 1.6.0
#> - Online documentation and vignettes at mc-stan.org/bayesplot
#> - bayesplot theme set to bayesplot::theme_default()
#>    * Does _not_ affect other ggplot2 plots
#>    * See ?bayesplot_theme_set for details on theme setting
library(ggplot2)

# generate fake posterior draws from model1
fdata <- matrix(rnorm(1000 * 3), ncol = 3)
colnames(fdata) <- c('beta1', 'beta2', 'beta3')

# fake posterior draws from model 2
fdata2 <- matrix(rnorm(1000 * 3, 1, 2), ncol = 3)
colnames(fdata2) <- c('beta1', 'beta2', 'beta3')

Bayesplot 为单个模型绘制制作了出色的可视化效果,它是 ggplot2 'under the hood',因此我可以根据需要进行自定义:

# a nice plot of 1
color_scheme_set("orange")
mcmc_intervals(fdata) + theme_minimal() + ggtitle("Model 1")



# a nice plot of 2
color_scheme_set("blue")
mcmc_intervals(fdata2) + ggtitle("Model 2")



但是我想要实现的是将这两个模型一起绘制在同一个图上,这样对于每个系数,我都有两个区间,并且可以通过将颜色映射到模型来区分哪个区间是哪个区间。但是我不知道如何做到这一点。一些不起作用的事情:

# doesnt work
mcmc_intervals(fdata) + mcmc_intervals(fdata2)
#> Error: Don't know how to add mcmc_intervals(fdata2) to a plot

# appears to pool
mcmc_intervals(list(fdata, fdata2))



关于我如何做到这一点的任何想法?或者如何根据后绘制矩阵手动完成?

创建于 2018-10-18 由 reprex package (v0.2.1)

最佳答案

我在 bayesplot 上问过这个问题GitHub 上的页面并得到回复 (Issue #232) .

关于r - 使用贝叶斯图绘制来自多个模型的后验参数估计,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52875665/

相关文章:

r - 用于在同一页面内绘制多个图的 R 程序代码

r - 在堆叠的ggplot2条形图中打印组x轴标签

r - 附加 rstan 包时出错 : Entry Point Not Found

r - ZIP - 隐马尔可夫模型 r Stan

r - lme4模型在功能上的总结(lmerTest)

r - 如何在 R 中通过网络检测远程文件夹中新添加的文件?

r - 如何在r中的ggplot中绘制两个半圆

r - 在 R 中跳过 travis 上的特定测试文件

r - R中的多线程数据表比使用单线程的慢得多

减少 ggplot2 中条形图组之间的空间