-
正在编写数据 用于模型。 这通常意味着 从转换数据 数据帧 到 列表 ,确保 因素 编码为数字数据,添加变量以存储 索引的长度等。这个包有助于自动化这些操作 使用 compose_data() 函数,它自动处理数据 类型如 数字 , 符合逻辑的 , 因素 ,以及 依次的 ,并允许 将其他数据类型转换为格式的简单扩展 模型通过提供您自己的泛型实现来理解 as_data_list() . -
提取整齐的绘图 来自模型。 这通常意味着提取 从名称如下的参数中创建索引 “b[1,1]” , “b[1,2]” 进入之内 数据帧的单独列,如 i=c(1,1,…) 和 j=c(1,2,…) 更乏味的是,有时这些指数实际上 对应于原始数据中某一因子的水平; 例如 “x[1]” 可能对应于值 x个 对于某些因素的第一层次。 我们提供了几种从 变量,并将索引转换为有用的长格式 (“ 整齐的 “)数据帧,带有 通用数据类型(因子、逻辑)的自动反向转换 使用 spread_draws() 和 gather_draws() 功能,包括 自动恢复与可变指数对应的因子水平。 在大多数情况下,这种长格式数据更易于使用 其他数据操作和绘图包(例如。, 数字播放器 , 第三年 , ggplot2 )而不是模型默认提供的格式。 请参见 渐晕(“tidybayes”) 例如。
-
提取整齐的拟合和预测 来自模型。 对于以下型号 由提供的 圣塔那主义 和 业务风险管理系统 , 河豚 提供整洁 的模拟 后_epred() , 后向预测() ,以及 后_linprid() 函数,调用 添加_预先绘制() , 添加预测图纸() ,以及 add_linpred_draws() 。这些功能 根据 建模器::add_predictions() 函数,然后转动 将预测网格转换为一个长格式的数据框架,该数据框架由以下两种数据组成: 模型的拟合或预测。 这些功能使它 直接从模型生成任意拟合线。 请参见 渐晕(“tidy-brms”) 或 小插曲(“整洁的rstanarm”) 例如。 -
总结后验分布 来自模型。 河豚 重新导出 ggdist::点interval() 函数族 ( 中位数_qi() , mean_qi() , mode_hdi() 等),这些是用于 生成设计为整洁的点摘要和间隔 工作流程。 它们可以生成点摘要和任意 概率区间数 从 整齐的绘图数据帧 返回 整理数据帧 尊重数据帧组 . 河豚 还提供和实施 后部::summare_draws() 用于分组数据帧,例如 作为由 tidybayes::XXX_draws 功能。 -
可视化先验和后验 .对整洁数据的关注使 tidybayes的输出易于使用可视化 ggplot图 .同时 现有的 地理 s(类似 ggdist::geom_pointrange() 和 ggdist::geom_linerange() )可以提供有用的输出 河豚 设计用于与中的多个地理信息和统计数据协同工作 它的姊妹套餐, ggdist(ggdist) 。这些几何体具有合理的默认值 适合可视化后点总结和间隔 ( ggdist::地理点间隔() , ggdist::stat_pointerval() ), 用点汇总和区间可视化分布( ggdist::stat_sample_slabinterval() 统计数据系列,包括眼睛 图、半目图、CCDF条形图、梯度图、点图和 直方图),并可视化具有任意数量的拟合线 不确定度带( ggdist::geom_lineribbon() 和 ggdist::stat_lineribbon() ). 也可以在 使用相同的方法 ggdist::stat_slabinterval() 统计数据系列。 这个 ggdist::geom_dotsingeval() 家庭也会自动找到好的 点图的装箱参数,可用于轻松构建 后验分位数点图(参见本文档中的示例)。 对于 方便, 河豚 重新导出 ggdist(ggdist) 统计数据和地理信息。 斯拉宾特瓦尔家族 统计数据 请参见 渐晕(“slabinterval”,package=“ggdist”) 了解更多 信息。 -
随机变量数据帧的提取和可视化 从 模型。 河豚 还提供了 XXX_变量 功能为 替代方案 XXX_图纸 功能,例如 spread_rvars() , 添加预测值() 等。这些函数返回整洁的数据 第帧,共帧 后部::rvar() s、 一种矢量化随机变量数据类型 (请参见 渐晕(“rvar”,package=“posteral”) 有关的更多信息 rvar公司 s) ●●●●。 与 ggdist::stat_slabinterval() 和 ggdist::stat_lineribbon() 几何图形,这些函数使其变得简单 从分布中提取样本,对其进行操作,并可视化 他们; 这种格式在内存方面可能有显著优势 对于大型模型是必需的。 请参见 渐晕(“潮后”) 对于 示例。 -
跨因子级别比较变量 ,这通常意味着 首先生成一个因子的成对水平(根据 所需的比较集),然后通过 这些级别对的比较变量的值。 假设 您的数据采用返回的格式 展开_绘制 ,的 比较级别 函数允许跨级别进行比较 很容易。
-
它的核心功能是返回整洁的绘图数据帧 在的顶部 后部::as_draws_df() . -
用于转换使用的整洁列名的插入函数 河豚 其他通用包和函数使用的目标/目标名称,包括 使用的列名 ggmcmc::ggs (通过 到ggmcmc_names 和 来自ggmcmc_names )和使用的列名 扫帚::整洁 (通过 至房间名称 和 来自_房间_名称 ),与 其他模型的结果很直观。 -
这个 未读_绘制 和 ungather_图纸 函数反转 展开_绘制 和 gather_图纸 ,有助于与其他 贝叶斯绘图软件包(特别是 贝叶斯图 ). -
这个 gather_emmens_draws公司 函数将输出从 em表示::em表示 (原名 ls表示 )转换为长格式数据帧 (当应用于支持的模型类型时,如 MCMCglmm公司 和 圣塔那主义 型号)。
安装程序包( " 河豚 " )
安装程序包( " 开发工具 " ) 开发工具 :: 安装github( " mjskay/tidybayes女士 " )
图书馆( 马格里特 ) 图书馆( 数字播放器 ) 图书馆( ggplot2 ) 图书馆( rstan公司 ) 图书馆( 河豚 ) 图书馆( emmeans公司 ) 图书馆( 扫帚 ) 图书馆( 业务风险管理系统 ) 图书馆( 建模师 ) 图书馆( 对于猫 ) 图书馆( 奶牛场 ) 图书馆( R彩色啤酒 ) 图书馆( gganimate(gg动画) ) 主题集(theme_tidybayes() + 面板_订单())
设置种子( 5 ) n个 = 10
n条件 = 5
基础知识 = 易怒的( 条件 = 因素 (代表(c)( " A类 " , " B类 " , " C类 " , " D类 " , " E类 " ), n个 )), 响应 = rnorm公司( n个 * 5 ,c( 0 , 1 , 2 , 1 , - 1 ), 0.5 ) ) 基础知识 % > % ggplot(aes)图( x个 = 响应 , 年 = 条件 )) + 地理点( 阿尔法 = 0.5 ) + 伊拉布( " 条件 " )
数据 { 整数 < 降低 = 1 > n; 整数 < 降低 = 1 > n条件; 整数 < 降低 = 1 , 上面的 =n_条件 > 条件[n]; 真实的 响应[n]; } 参数 { 真实的 总体平均值; 矢量 [n_condition]条件zoffset; 真实的 < 降低 = 0 > 响应sd; 真实的 < 降低 = 0 > 条件平均值; } 变换后的参数 { 矢量 [n_condition]条件平均值; 条件_平均值 = 总体平均值 + 条件zoffset * 条件平均值; } 模型 { 响应_sd ~ 柯西 ( 0 , 1 ); // =>半柯西(0,1) 条件平均值 ~ 柯西 ( 0 , 1 ); // =>半柯西(0,1) 总体平均值 ~ 正常的 ( 0 , 5 ); 条件zoffset ~ 正常的 ( 0 , 1 ); // =>条件平均值~正常值(总平均值,条件平均值)
对于 (i) 在里面 1 : n){ 响应[i] ~ 正常的 (条件_平均[条件[i]],响应_sd); } }
n个 :数据框中的观察数 n条件 :条件因子的级别数 条件 :一个整数向量,表示每个条件 观察 响应 :观察矢量
米 = 取样( 澳大利亚银行(_stan) , 数据 = 合成数据(_D)( 基础知识 ), 控制 = 列表 ( 自适应_斜率 = 0.99 ))
米 % <> %恢复类型( 基础知识 )
米 % > % 展开_绘制( 条件_平均值 [ 条件 ], 响应_sd ) % > % 头部( 15 ) # 只显示前几行
###A台:15×6 ###组:条件[1] ##条件condition_mean.chain.interration.draw responsesd ##<fct><dbl><int><int><int><dbl> ##1安0.00544 1 1 1 0.576 ##2安-0.0836 1 2 2 0.576 ##3安0.0324 1 3 3 0.551 ##4安0.113 1 4 4 0.576 ##5 A 0.157 1 5 5 0.583 ##6安0.218 1 6 6 0.621 ##7安0.276 1 7 7 0.641 ##8安0.0130 1 8 8 0.637 ##9安0.152 1 9 9 0.609 ##10安0.192 1 10 10 0.521 ##11安0.154 1 11 11 0.558 ##12安0.298 1 12 12 0.552 ##13 A 0.349 1 13 13 0.531 ##14安0.471 1 14 14 0.566 ##15安0.313 1 15 15 0.568
米 % > % 扩展绘图( 条件_平均值 [ 条件 ]) % > % ggplot(aes)图( x个 = 条件_平均值 , 年 = 条件 )) + stat_eye()
米 % > % 展开_绘制( 条件_平均值 [ 条件 ]) % > % ggplot(aes)图( x个 = 条件_平均值 , 年 = 条件 )) + stat_halfeye()
米 % > % 展开_绘制( 条件_平均值 [ 条件 ]) % > % ggplot(aes)图( x个 = 条件_平均值 , 年 = 条件 )) + 统计_点( 分位数 = 100 )
米 % > % 展开_绘制( 条件_平均值 [ 条件 ]) % > % 中天_qi( 条件_平均值 )
###A台:5×7 ##条件condition_mean.lower.upper.width.point.interval ##<fct><dbl><dbl ##1 A 0.199-0.142 0.549 0.95中位数qi ##2 B 1.01 0.651 1.34 0.95中气 ##3 C 1.84 1.48 2.19 0.95中位数qi ##4 D 1.02 0.681 1.37 0.95中位数qi ##5 E-0.890-1.23-0.529 0.95中气
线性_结果 = 流明( 响应 ~ 条件 , 数据 = 基础知识 ) % > % emmeans公司( ~ 条件 ) % > % 整洁( conf.int软件 = 真的 ) % > % 突变( 模型 = " OLS公司 " ) 线性_结果
###A台:5×9 ##条件估计标准误差df conf.低conf.高统计p值模型 ##<chr><dbl><dbl ##1安0.182 0.173 45-0.167 0.530 1.05 3.00e-1 OLS ##2 B 1.01 0.173 45 0.665 1.36 5.85 5.13e-7 OLS ##3 C 1.87 0.173 45 1.53 2.22 10.8 4.15e-14 OLS ##4 D 1.03 0.173 45 0.678 1.38 5.93 3.97 e-7 OLS ##5东-0.935 0.173 45-1.28-0.586-5.40 2.41e-6 OLS
贝叶斯结果 = 米 % > % 扩展绘图( 条件_平均值 [ 条件 ]) % > % 中天_qi( 估计 = 条件_平均值 ) % > % to_broom_name()% > % 突变( 模型 = " 贝叶斯 " ) 贝叶斯结果
###A台:5×8 ##条件估计conf.低conf.高.宽.点.区间模型 ##<fct><dbl><dbl><dbl><dbl><chr><chr ##1 A 0.199-0.142 0.549 0.95中位数qi Bayes ##2 B 1.01 0.651 1.34 0.95中位数qi Bayes ##3 C 1.84 1.48 2.19 0.95中位数qi Bayes ##4 D 1.02 0.681 1.37 0.95中位数qi Bayes ##5 E-0.890-1.23-0.529 0.95中位数qi Bayes
绑定行(_R)( 线性_结果 , 贝叶斯结果 ) % > % ggplot(aes)图( 年 = 条件 , x个 = 估计 , 克敏 = conf.low(低) , x最大值 = conf.高 , 颜色 = 模型 )) + 地理点间隔( 位置 = 位置_对象( 宽度 = .3 ))
米 % > % 展开_绘制( 条件_平均值 [ 条件 ], 响应_sd ) % > % 突变( 预测 = rnorm(n(), 条件_平均值 , 响应_sd )) % > % ggplot(aes( 年 = 条件 )) +
# 后验预测区间 统计间隔(aes( x个 = 预测 ), .宽度 = c(c)( .5 , .8 , .95 )) + scale_color_brewer() +
# 条件平均值的中位数和分位数区间 统计点间隔(aes( x个 = 条件_平均值 ), .宽度 = c(c)( .66 , .95 ), 位置 = 位置_预算( 年 = - 0.2 )) +
# 数据 地理点(aes( x个 = 响应 ), 数据 = 基础知识 )
m_mpg(英里/加仑) = 商业风险管理( 英里/加仑 ~ 日志( 马力 ), 数据 = 地铁车厢 , 家庭 = 对数正态分布 , 文件 = " 阅读ME_models/m_mpg.rds " # 缓存模型(可以删除) )
地铁车厢 % > % 数据网格( 马力 = 序列范围(_R)( 马力 , n个 = 101 )) % > % 添加预测图纸( m_mpg(英里/加仑) ) % > % ggplot(aes( x个 = 马力 , 年 = 英里/加仑 )) + stat_lineribbon(aes( 年 = .预测 ), .宽度 = c(c)( .99 , .95 , .8 , .5 ), 颜色 = " #08519C号 " ) + 地理点( 数据 = 地铁车厢 , 大小 = 2 ) + scale_fill_brewer()
统计摘要( 原子发射光谱( 年 = .预测 , 填满 = 对于猫 :: fct_rev(已订购(状态后( .宽度 ))), 组 = - 后统计( .宽度 )), 地理 = " 丝带 " , 点_间隔 = 中天_qi , 函数args = 列表 ( .宽度 = c(c)( .99 , .95 , .8 , .5 )) ) + 统计摘要(aes( 年 = .预测 ), 很有趣。 年 = 中值的 , 地理 = " 线 " , 颜色 = " 红色 " , 线宽 = 1.25 )
m_mpg_am(分钟_分钟) = 商业风险管理( 英里/加仑 ~ 日志( 马力 ) * 是 , 数据 = 地铁车厢 , 家庭 = 对数正态 , 文件 = " README_模型/m_mpg_am.rds " # 缓存模型(可以删除) )
地铁车厢 % > % 数据网格( 马力 = 序列范围(_R)( 马力 , n个 = 101 ), 是 ) % > % # 将am添加到预测网格 添加预测图纸( m_mpg_am(分钟_分钟) ) % > % ggplot(aes)图( x个 = 马力 , 年 = 英里/加仑 )) + stat_lineribbon(aes( 年 = .预测 ), .宽度 = c(c)( .99 , .95 , .8 , .5 ), 颜色 = " #08519C号 " ) + 地理点( 数据 = 地铁车厢 ) + scale_fill_brewer() + facet_wrap(面覆盖)( ~ 是 ) # 由am刻面
地铁车厢 % > % 数据网格( 马力 = 序列范围(_R)( 马力 , n个 = 200 ), 是 ) % > % # 注意:这显示了使用ndraws在add_epred_draws()中进行子采样
# 只有当你计划制作意大利面条等时,才可以这样做。
# 绝不要对小样本进行二次采样,以绘制间隔、密度等。 添加_预先绘制( m_mpg_am(分钟_分钟) , ndraws公司 = 100 ) % > % # 样品100是指从后面 ggplot(aes)图( x个 = 马力 , 年 = 英里/加仑 )) + 几何线(aes( 年 = .epred(.epred) , 组 = .绘制 ), 阿尔法 = 1 / 20 , 颜色 = " #08519C号 " ) + 地理点( 数据 = 地铁车厢 ) + facet_wrap(面覆盖)( ~ 是 )
设置种子( 12345 ) ndraws公司 = 50
第页 = 地铁车厢 % > % 数据网格( 马力 = 序列范围(_R)( 马力 , n个 = 50 ), 是 ) % > % # 注意:这显示了使用ndraws在add_epred_draws()中进行子采样
# 只有当你计划制作意大利面条等时,才可以这样做。
# 绝不要对小样本进行二次采样,以绘制间隔、密度等。 添加_预先绘制( m_mpg_am(分钟_分钟) , ndraws公司 = ndraws公司 ) % > % ggplot(aes)图( x个 = 马力 , 年 = 英里/加仑 )) + 几何线(aes( 年 = .epred(.epred) , 组 = .绘制 ), 颜色 = " #08519C号 " ) + 地理点( 数据 = 地铁车厢 ) + facet_wrap(面覆盖)( ~ 是 , 贴标机 = 标签_两者 ) + 过渡状态( .绘制 , 0 , 1 ) + 阴影标记(_M)( 过去的 = 真的 , 未来 = 真的 , 阿尔法 = 1 / 20 , 颜色 = " 灰色50 " ) 设置动画( 第页 , n帧 = ndraws公司 , fps(英尺/秒) = 2.5 , 宽度 = 672 , 高度 = 480 , 单位 = " 二甲苯 " , 物件 = 100 , 开发 = " 抹布(_png) " )