Bayesplot 包:可视化贝叶斯模型

简介: Bayesplot 包:可视化贝叶斯模型

简介

Bayesplot[1]包,提供了广泛的绘图函数库,用于在拟合贝叶斯模型后使用(通常使用 MCMC )。由 bayesplot 创建的图形是 ggplot 对象,这意味着在创建图形后,可以使用 ggplot2[2] 包中的各种函数进一步自定义。

目前,bayesplot 提供了各种后验抽样绘图、视觉 MCMC 诊断和图形后验(或先验)预测检查的绘图功能。未来的版本将添加其他功能(例如,用于预测/样本外预测和其他推断相关任务)。



Cheat sheet

bayesplot 的理念不仅是为用户提供方便的功能,还提供了一个共同的函数集,可以轻松地由开发人员在各种贝叶斯建模包上使用,特别是(但不一定是)由 RStan[3] 提供支持的包。



官网首页

关于贝叶斯分析的推文,小编还写了:贝叶斯 RStan 包入门教程资料分享|贝叶斯数据分析从贝叶斯滤波到粒子滤波

安装

从 CRAN 安装最新版本:

install.packages("bayesplot")

从 GitHub 安装最新的开发版本:

if (!require("devtools")) {
install.packages("devtools")
}
devtools::install_github("stan-dev/bayesplot")

例子1:回归模型

利用rstanarm[4]rstan[5]包获得 MCMC 样本,根据这个抽样样本,我们给出 bayesplot 包的入门示例。其他更加详细的教程可见:

  • Plotting MCMC draws using the bayesplot package[6]
  • Visual MCMC diagnostics using the bayesplot package[7]
  • Graphical posterior predictive checks using the bayesplot package[8]

我们以 mtcars 数据集作为例子,使用 stan_glm() 构建贝叶斯框架下的回归模型。根据后验样本,使用 bayesplot 包中的各种函数进行可视化。

library("bayesplot")
library("rstanarm")
library("ggplot2")
fit <- stan_glm(mpg ~ ., data = mtcars)
posterior <- as.matrix(fit)
  • 使用 mcmc_areas() 绘制后验分布的面积图
plot_title <- ggtitle("Posterior distributions",
                      "with medians and 80% intervals")
mcmc_areas(posterior,
           pars = c("cyl", "drat", "am", "wt"),
           prob = 0.8) + plot_title



使用 mcmc_areas() 绘制面积图

  • 使用 ppc_dens_overlay() 绘制预测分布和真实分布
color_scheme_set("red")
ppc_dens_overlay(y = fit$y,
                 yrep = posterior_predict(fit, draws = 50))


使用 ppc_dens_overlay() 绘制预测分布和真实分布

  • 使用 ppc_stat_grouped() 绘制预测分布柱状图
# also works nicely with piping
library("dplyr")
color_scheme_set("brightblue")
fit %>%
  posterior_predict(draws = 500) %>%
  ppc_stat_grouped(y = mtcars$mpg,
                   group = mtcars$carb,
                   stat = "median")



使用 ppc_stat_grouped() 绘制预测分布柱状图

例子2: rstan 中的八校数据

使用《贝叶斯数据分析》中最经典的八校数据进行分析。具体可见推文:贝叶斯 RStan 包入门教程

library("rstan")
fit2 <- stan_demo("eight_schools", warmup = 300, iter = 700)
posterior2 <- extract(fit2, inc_warmup = TRUE, permuted = FALSE)
  • 使用 mcmc_trace() 绘制各链轨迹图
color_scheme_set("mix-blue-pink")
p <- mcmc_trace(posterior2,  pars = c("mu", "tau"), n_warmup = 300,
                facet_args = list(nrow = 2, labeller = label_parsed))
p + facet_text(size = 15)



使用 mcmc_trace() 绘制各链轨迹图

  • 使用 mcmc_scatter() 绘制散点图
# scatter plot also showing divergences
color_scheme_set("darkgray")
mcmc_scatter(
  as.matrix(fit2),
  pars = c("tau", "theta[1]"), 
  np = nuts_params(fit2), 
  np_style = scatter_style_np(div_color = "green", div_alpha = 0.8)
)



使用 mcmc_scatter() 绘制散点图

  • 使用 mcmc_nuts_energy() 进行 NUTS 能量诊断
color_scheme_set("red")
np <- nuts_params(fit2)
mcmc_nuts_energy(np) + ggtitle("NUTS Energy Diagnostic")



使用 mcmc_nuts_energy() 进行 NUTS 能量诊断

小编有话说

  • 读者可以使用自己数据集在贝叶斯框架下进行分析,之后使用本文的 R 包进行结果可视化。

参考资料

[1]

Bayesplot: https://mc-stan.org/bayesplot/index.html

[2]

ggplot2: https://ggplot2.tidyverse.org/

[3]

RStan: https://mc-stan.org/rstan/

[4]

rstanarm: https://mc-stan.org/rstanarm/

[5]

rstan: https://mc-stan.org/rstan/

[6]

Plotting MCMC draws using the bayesplot package: https://mc-stan.org/bayesplot/articles/plotting-mcmc-draws.html

[7]

Visual MCMC diagnostics using the bayesplot package: https://mc-stan.org/bayesplot/articles/visual-mcmc-diagnostics.html

[8]

Graphical posterior predictive checks using the bayesplot package: https://mc-stan.org/bayesplot/articles/graphical-ppcs.html

目录
相关文章
|
6月前
|
机器学习/深度学习 JSON 数据格式
CatBoost模型部署与在线预测教程
CatBoost模型部署与在线预测教程【2月更文挑战第16天】
151 2
|
6月前
|
IDE 数据处理 开发工具
垃圾分类模型训练部署教程,基于MaixHub和MaixPy-k210(1)
我的准备 Maix duino开发板一块(含摄像头配件) Type-c数据集一根
302 0
|
6月前
|
机器学习/深度学习 Python
垃圾分类模型训练部署教程,基于MaixHub和MaixPy-k210(2)
至此,我们就已经成功上传了其中一个类别的图片啦!按照上面的方式,我们可以继续上传其余每个类别的图片。 上传完所有类别的图片后,来到总览,可以大致浏览我们刚刚上传的图片。 接下来,就要用这些图片来训练用于垃圾分类的模型了!
316 0
|
1月前
|
数据采集 移动开发 数据可视化
模型预测笔记(一):数据清洗分析及可视化、模型搭建、模型训练和预测代码一体化和对应结果展示(可作为baseline)
这篇文章介绍了数据清洗、分析、可视化、模型搭建、训练和预测的全过程,包括缺失值处理、异常值处理、特征选择、数据归一化等关键步骤,并展示了模型融合技术。
53 1
模型预测笔记(一):数据清洗分析及可视化、模型搭建、模型训练和预测代码一体化和对应结果展示(可作为baseline)
|
机器学习/深度学习 存储 数据可视化
【PyTorch基础教程23】可视化网络和训练过程
为了更好确定复杂网络模型中,每一层的输入结构,输出结构以及参数等信息,在Keras中可以调用一个叫做model.summary()的API能够显示我们的模型参数,输入大小,输出大小,模型的整体参数等。
1649 0
【PyTorch基础教程23】可视化网络和训练过程
|
5月前
|
机器学习/深度学习 监控 数据可视化
【超详细】MMLab分类任务mmclassification:环境配置说明、训练、预测及模型结果可视化展示(3)
【超详细】MMLab分类任务mmclassification:环境配置说明、训练、预测及模型结果可视化展示
|
3月前
|
机器学习/深度学习 数据挖掘 Python
简单几步,教你使用scikit-learn做分类和回归预测
简单几步,教你使用scikit-learn做分类和回归预测
|
5月前
|
数据可视化 计算机视觉 Python
【超详细】MMLab分类任务mmclassification:环境配置说明、训练、预测及模型结果可视化展示(2)
【超详细】MMLab分类任务mmclassification:环境配置说明、训练、预测及模型结果可视化展示
|
4月前
|
机器学习/深度学习 数据采集 存储
在机器学习和数据科学中,数据预处理是一个至关重要的步骤。数据规范化(或称为特征缩放)是预处理的一种常见技术,它可以帮助我们改进模型的性能。`sklearn.preprocessing`模块提供了多种数据规范化的方法,其中`StandardScaler`和`MinMaxScaler`是最常用的两种。
在机器学习和数据科学中,数据预处理是一个至关重要的步骤。数据规范化(或称为特征缩放)是预处理的一种常见技术,它可以帮助我们改进模型的性能。`sklearn.preprocessing`模块提供了多种数据规范化的方法,其中`StandardScaler`和`MinMaxScaler`是最常用的两种。
|
5月前
|
机器学习/深度学习 数据可视化 算法
【超详细】MMLab分类任务mmclassification:环境配置说明、训练、预测及模型结果可视化展示(1)
【超详细】MMLab分类任务mmclassification:环境配置说明、训练、预测及模型结果可视化展示