bayesplot|分享一个可视化贝叶斯模型的R包

1.bayesplot介绍

该包主要用于贝叶斯模型的可视化分析,提供了一系列工具来帮助评估、理解和诊断贝叶斯模型。这个包特别适用于与 Stan 以及其他提供 MCMC 样本的软件如 JAGS 和 BUGS 的模型输出。

  • 后验分布图:包括密度图、直方图和区间图,用于展示模型参数的后验分布。
  • MCMC 诊断图:
    追踪图(trace plots)、秩序图(rank plots)、自相关图(autocorrelation plots)和转移图(transition plots),这些都是用来诊断 MCMC 算法收敛性的工具。
  • 后验预测检查:
    包括残差图、PPC(后验预测检查)条形图等,这些图形用来评估模型预测数据的能力与实际观测数据的符合程度。
  • 比较和模型评估:
    提供 LOO-CV(留一交叉验证)和 WAIC(Widely Applicable Information Criterion)等模型比较指标的可视化。

2.bayesplot-DEMO

library("bayesplot")
library("rstanarm")
library("ggplot2")

fit <- stan_glm(mpg ~ ., data = mtcars)
posterior <- as.matrix(fit)

plot_title <- ggtitle("Posterior distributions",
                      "with medians and 80% intervals")
mcmc_areas(posterior, 
           pars = c("cyl", "drat", "am", "wt"), 
           prob = 0.8) + plot_title

  • 密度曲线:这条曲线展示了在参数的可能值上概率密度的估计。曲线越高,表示该值的概率密度越大。
  • 中位数:每个分布中的垂直灰色线表示该分布的中位数,也就是所有后验样本中值的中位数。
  • 80%区间:蓝色填充区域展示了每个变量的后验分布的 80% 最高密度区间(Highest Posterior Density, HPD)。HPD 区间包含了后验分布中最有可能的 80% 值,通常用来作为参数的不确定性的度量。
color_scheme_set("red")
ppc_dens_overlay(y = fit$y, 
                 yrep = posterior_predict(fit, draws = 50))

  • Y:粗黑线表示观察到的数据或数据的预测平均值。这是比较复制数据集的参考点。
  • Y_rep:许多细线代表基于模型参数的后向分布的预测数据(复制数据集)的单独模拟。每条线都是给定模型及其不确定性的数据的可能实现。
# 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")


每个直方图中的深蓝色垂直线表示观察到的数据集的统计量T(y) 的值。理想情况下,如果模型拟合良好,观测到的数据的统计量值应该位于模拟的数据分布的中心区域。

图中的T=median 表示这些模拟的数据分布中位数的位置。在后验预测检查中,通常希望观察到的数据的统计量值接近于模拟数据分布的中位数或落在高密度区间内,这表明模型对数据的预测与实际观测相符。

# with rstan demo model
library("rstan")
fit2 <- stan_demo("eight_schools", warmup = 300, iter = 700)
posterior2 <- extract(fit2, inc_warmup = TRUE, permuted = FALSE)

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 链(用不同的颜色表示),它们对参数 μ 的取值进行采样。理想状态下,所有链都应围绕同一平均值随机摆动,且具有相似的变异度,这样可以认为收敛到了相同的后验分布。
  • 下面的图 τ: 同样展示了四条 MCMC 链,但是针对另一个参数 τ。这里的链条看起来比上图更加剧烈波动,特别是一些尖峰,可能表示这个参数的某些区间样本采样较为稀疏或存在某种异常。
# 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)
)


横轴表示某个变量 theta[1],竖轴表示另一个变量的对数值 log(tau)。图中的点代表两个变量之间的关系或观测点。大部分点用黑色表示,但也有一些点用绿色突出显示,这些绿色的点可能代表特定的子集或具有特殊意义的数据点(例如,可能表示异常值、特定群组的数据点、或者是满足某种条件的数据点)。

这种类型的图通常用于探索两个变量之间的关系,查看数据分布的模式,或识别数据的特定特征。例如,在统计或数据分析中,绿色点可能表示标准差内的数据点,或是那些在某种统计检验下显著的点。在贝叶斯分析中,可能表示后验分布中高概率密度区域的样本点。

color_scheme_set("red")
np <- nuts_params(fit2)
mcmc_nuts_energy(np) + ggtitle("NUTS Energy Diagnostic")


图中的四个直方图分别代表了不同的 MCMC 链或是同一链的不同采样段,显示了以下内容:

  • E− Eˉ:横轴上的差值 E− Eˉ是单个采样的能量减去所有采样的平均能量。理想情况下,这个分布应该是以 0 为中心的,这表示能量水平在采样间是一致的。
  • Eˉ和 ΔEˉ:在图例中提到的这两个参数,一般表示能量的平均值 (Eˉ) 和能量差的平均值 (ΔEˉ)。

能量诊断图可以帮助诊断采样过程中可能的问题。如果这些能量差的分布不是以 0 为中心,或者分布的形状看起来非对称或者非常长的尾巴,这可能意味着采样过程有问题。这种问题可能是由于模型设置不当、采样步长不合适,或者可能需要更多的迭代来达到平稳分布。

# another example with rstanarm
color_scheme_set("purple")

fit <- stan_glmer(mpg ~ wt + (1|cyl), data = mtcars)
ppc_intervals(
  y = mtcars$mpg,
  yrep = posterior_predict(fit),
  x = mtcars$wt,
  prob = 0.5
) +
  labs(
    x = "Weight (1000 lbs)",
    y = "MPG",
    title = "50% posterior predictive intervals \nvs observed miles per gallon",
    subtitle = "by vehicle weight"
  ) +
  panel_bg(fill = "gray95", color = NA) +
  grid_lines(color = "white")


这张图显示了汽车重量与每加仑行驶英里数(miles per gallon, MPG)之间的关系,并用贝叶斯模型的后验预测区间进行了标注。横轴是汽车的重量(以千磅为单位),纵轴是MPG。图中有两种类型的点:

  • 实心圆点 (y): 这些表示实际观察到的每加仑行驶英里数的数据点。
  • 空心圆点 (y_rep): 表示后验预测数据点,即基于模型参数后验分布的预测值。

每个预测点旁边的线表示该点的50%后验预测区间。这个区间是从模型的预测分布中得到的,表示我们有50%的信心该实际值会落在这个区间内。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/570441.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

微信小程序和公众号打通,实现用户关注公众号送优惠券

前提 小程序 公众号 微信开放平台 小程序和公众号都需要绑定到同一个微信开放平台,因为要获取Unionid&#xff0c;unionid是什么 如果开发者拥有多个移动应用、网站应用、和公众账号&#xff08;包括小程序&#xff09;&#xff0c;可通过 UnionID 来区分用户的唯一性&#xf…

【Linux】驱动_2_字符驱动

1. Linux设备分类 字符设备: 指应用程序按字节/字符来读写数据的设备。通常为传真、虚拟终端和串口调制解调器、键盘之类设备提供流通信服务&#xff0c;通常不支持随机存取数据。字符设备在实现时大多不使用缓存器。系统直接从设备读/写每一个字符。块设备: 通常支持随机存取…

Jenkins 打包报错记录 error: index-pack died of signal 15

问题背景&#xff0c;打包每次到92%时就会报错&#xff0c;试了好几次都是同样的错误 14:56:53 fatal: index-pack failed 14:56:53 14:56:53 at org.jenkinsci.plugins.gitclient.CliGitAPIImpl.launchCommandIn(CliGitAPIImpl.java:2734) 14:56:53 at org.jenkinsci.plugi…

GoLand远程开发IDE:使用SSH远程连接服务器进行云端编程

目录 ⛳️推荐 1. 安装配置GoLand 2. 服务器开启SSH服务 3. GoLand本地服务器远程连接测试 4. 安装cpolar内网穿透远程访问服务器端 4.1 服务器端安装cpolar 4.2 创建远程连接公网地址 5. 使用固定TCP地址远程开发 ⛳️推荐 前些天发现了一个巨牛的人工智能学习网站&am…

【复现】金和OA-jc6 RCE漏洞_74

目录 一.概述 二 .漏洞影响 三.漏洞复现 1. 漏洞一&#xff1a; 四.修复建议&#xff1a; 五. 搜索语法&#xff1a; 六.免责声明 一.概述 金和C6协同管理平台包括协同办公管理,人力资源管理,项目管理,客户关系管理,企业目标管理,费用管理,移动办公,微信办公等多个业务范…

Java——内存溢出如何排查

1、模拟内存移除场景 public class OOMTest {public static void main(String[] args) {List<byte[]> memoryLeakArray new ArrayList<>();for (int i 0; i<1024; i){byte[] bytes new byte[1024 * 1024];memoryLeakArray.add(bytes);}} }初始化启动参数最大…

小心!那个走了的员工可能带走了公司的秘密

数据泄露是企业安全的一大隐患&#xff0c;尤其是离职员工带走公司数据的问题&#xff0c;这是一种常被忽视的内部威胁。离职员工可能因为种种原因&#xff0c;带走了他们曾经可以访问的公司数据。而这些数据如果落入了不当的地方&#xff0c;可能会给企业带来严重的损害。那么…

力扣数据库题库学习(4.24日)

1068. 产品销售分析 I 问题链接 思路分析 编写解决方案&#xff0c;以获取 Sales 表中所有 sale_id 对应的 product_name 以及该产品的所有 year 和 price 。返回结果表 无顺序要求 。 这个问题很简单&#xff0c;查询两张表内的指定字段。这个考的其实就是数据库的连接&am…

23种设计模式(Java版,超详细!)

文章目录 一、什么是设计模式二、设计模式的分类三、设计模式的基本要素四、23种设计模式概览五、设计模式间的关系六、设计模式详解6.1. 工厂方法模式&#xff08;Factory Method&#xff09;6.2. 抽象工厂模式&#xff08;Abstract Factory&#xff09;6.3. 建造者模式&#…

屏幕状态自动检测+鼠标自动操作

目录 一、写在前面 1.1适用场景 1.2涉及到的库 二、函数库 2.1pyautogui-屏幕截图&鼠标操作 2.1.1屏幕截图screenshot函数 2.1.2鼠标移动及单击 2.2Opencv-模板匹配 2.2.1matchTemplate函数 2.2.2minMaxLoc函数 2.2.3相关代码 2.3base64-图片转base64 2.3.1在线…

【行为型模式】模板方法模式

一、模板方法模式概述 模板方法模式定义&#xff1a;在一个方法中定义一个算法的骨架,而将一些步骤延迟到子类中。模板方法使得子类可以在不改变算法结构的情况下,重新定义算法中的某些步骤。(类对象型模式) 模板方法中的基本方法是实现算法的各个步骤&#xff0c;是模板方法的…

谷歌搜索SEO优化需要做什么?

最基本的要求&#xff0c;网站基础要优化好&#xff0c;让你的网站更加友好地服务于用户和搜索引擎&#xff0c;首先你要保证你的网站也适配手机端&#xff0c;现在手机端&#xff0c;如果你的网站在手机上打开慢&#xff0c;或者没有适配手机端&#xff0c;让用户用手机看着电…

Echarts X轴类目名太长时隐藏显示全部

echarts图表X轴 在柱状图中,X轴类目名如果数据太长; echarts会默认进行隐藏部分字段; 如果我们想让每一个类目名都显示出来,需要进行额外的处理X轴类目名太长时,默认只显示一部分类目名 <!DOCTYPE html> <html lang="en"> <head><meta ch…

硬实力!神工坊团队在首届开放原子开源大赛中斩获一二等奖

日前&#xff0c;首届开放原子开源大赛苏州站在苏州工业园区顺利开赛&#xff0c;神工坊团队在“大规模非对称不定带宽线性代数方程组求解算法赛”中表现非凡&#xff0c;斩获一二等奖&#xff01; “大规模非对称不定带宽线性代数方程组求解算法赛”是“开放原子开源大赛”工业…

画机柜布置图就这么简单,你学会了吗?

你还在使用excel画机柜布置图&#xff1f; 你还在使用CAD画机柜布置图&#xff1f; 你还在使用Visio画机柜布置图&#xff1f; 我们今天都在使用nVisual画机柜布置图&#xff01; 第一步&#xff1a;登录注册cloud.nVisual.com云平台&#xff0c;免费使用Visual&#xff1b; 第…

C语言趣味代码(三)

这一篇主要围绕写一个程序---寻找数字 来写&#xff0c;在这篇我会详细和大家介绍基本实现以及它的改良版&#xff0c;还有相关知识的拓展&#xff0c;干货绝对满满。 1. 寻找数字 在这一主题下&#xff0c;我们会编写一些代码&#xff0c;来锻炼玩家的反应力&#xff0c;同时…

第6章 Mybatis高级查询(详解篇)

@[TOC](第6章 Mybatis高级查询(详解篇)) 1. 一对一映射 1.1 自动映射(关联的嵌套结果映射) <?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd…

【总结】hbase master重启恢复失败问题修复

问题现象 最近hbase master 莫名其妙宕机了&#xff0c;查看最后输出日志&#xff0c;也没有发现有效信息。 于是想着先重启一把&#xff0c;在hbase master 选主成active状态的过程中&#xff0c;发现重启多次都很漫长&#xff0c;且最终因重启时间过长&#xff0c;被hbase-…

【NMPA-国家药品监督管理局】

NMPA-国家药品监督管理局 ■ NMPA简介■ (1) 监管逻辑■ 1.1&#xff09;注册检验■ 1.2&#xff09;临床试验■ 1.3&#xff09;体系考核■ 1.4&#xff09;专家评审■ 1.5&#xff09;飞行检查 ■ (2) 上市流程■ 2.1&#xff09;注册申请&#xff1a;■ 2.2&#xff09;注册…

水滴式粉碎机:高效、精细破碎利器

水滴式粉碎机是一种适用于多种物料的粉碎设备。它能够处理硬质物料如石头、陶瓷、玻璃等&#xff0c;也能粉碎食品和饲料原料如大米、小麦、玉米等。此外&#xff0c;水滴式粉碎机还适用于秸秆、木材等物料的粉碎。部分水滴式粉碎机还具备粗粉碎和细粉碎两种功能&#xff0c;可…
最新文章