Skip to main content
Ctrl+K
Logo image
5.9.2

Site Navigation

  • 首页
  • 示例
  • 学习
  • API
  • 贡献

Site Navigation

  • 首页
  • 示例
  • 学习
  • API
  • 贡献

Section Navigation

  • 安装
  • 核心功能笔记本
    • 摘要概率编程允许对用户定义的概率模型进行自动贝叶斯推断。基于梯度的马尔科夫链蒙特卡罗(MCMC)采样算法,称为哈密尔顿蒙特卡罗(HMC),允许对越来越复杂的模型进行推断,但需要的梯度信息通常并不容易计算。PyMC是一个用Python编写的开源概率编程框架,利用PyTensor通过自动微分计算梯度,并即时将概率程序编译为一组计算后端之一,以提高速度。PyMC允许用Python代码进行模型规范,而不是使用领域特定语言,使其易于学习、定制和调试。本文是对这一软件包的教程式介绍,面向那些对贝叶斯统计已有一定了解的读者。## 介绍概率编程(PP)允许以代码灵活地规范贝叶斯统计模型。PyMC是一个PP框架,具有直观且可读的强大语法,接近统计学家描述模型所使用的自然语法。它的特点是下一代马尔科夫链蒙特卡罗(MCMC)采样算法,如无转弯采样器(NUTS; Hoffman, 2014),这是一种自调节的哈密尔顿蒙特卡罗(HMC; Duane, 1987)变体。这类采样器在高维和复杂的后验分布上表现良好,允许不需要关于拟合算法的专业知识来适配许多复杂模型。HMC和NUTS利用来自似然的梯度信息,以实现比传统采样方法更快的收敛速度,特别是在较大的模型中。NUTS还有几种自调节策略,用于自适应设置哈密尔顿蒙特卡罗的可调参数,这意味着通常不需要对算法如何工作有专业知识。Python中的概率编程带来了一系列优势,包括多平台兼容性、表现力强但简洁可读的语法、与其他科学库的易集成性,以及通过C、C++、Fortran或Cython的可扩展性。这些特性使得编写和使用自定义统计分布、采样器和变换函数相对简单,这些在贝叶斯分析中是必要的。虽然PyMC的大部分用户界面特性都是用纯Python编写的,但它利用PyTensor(Theano项目的一个分支)透明地将模型转码为C并编译为机器代码,从而提升性能。PyTensor是一个允许使用称为张量的广义向量数据结构定义表达式的库,这些张量与流行的NumPy ndarray数据结构紧密集成,并同样允许广播和高级索引,就像NumPy数组一样。PyTensor还自动优化似然的计算图以提高速度,并允许编译为一组计算后端,包括Jax和Numba。在这里,我们介绍如何使用PyMC解决一般贝叶斯统计推断和预测问题的基础知识。我们将首先展示如何使用PyMC的基础知识,通过一个简单的例子进行激励:安装、数据创建、模型定义、模型拟合和后验分析。接下来,我们将涵盖两个案例研究,并利用它们展示如何定义和拟合更复杂的模型。最后,我们将讨论其他几个有用的特性:自定义分布和任意确定性节点。
    • 合成模型
    • 先验和后验预测检查后验预测检查(PPCs)是验证模型的一个很好方法。其理念是使用来自后验抽样的参数从模型中生成数据。稍微详细说明一下,可以说PPCs分析模型生成的数据与真实分布生成的数据的偏差程度。因此,您通常会想知道,比如,您的后验分布是否在近似您的基础分布。这种模型评估方法的可视化方面对于进行’基本检查’或向他人解释您的模型并获得反馈也非常有效。先验预测检查在贝叶斯建模工作流程中也是一个关键部分。基本上,它们有两个主要好处:- 它们允许您检查您是否确实将科学知识纳入到您的模型中——简而言之,它们帮助您在看到数据之前检查您的假设有多可靠。- 它们可以显著帮助采样,特别是对于广义线性模型,在这些模型中,由于链接函数的缘故,结果空间和参数空间是分离的。在这里,我们将实现一个通用的例程,从模型的观察节点中提取样本。这些模型是基础的,但它们将成为创建您自己例程的垫脚石。如果您想看到如何在更复杂的多维模型中进行先验和后验预测检查,您可以查看这个笔记本。现在,让我们开始抽样吧!
    • 分布的维度PyMC 提供了多种方式来指定其分布的维度。本文档提供了一个概述,并提供了一些用户提示。## 术语表在本文档中,我们将使用“维度”一词来指代维度的概念。以下每个术语在 PyMC 中都有特定的语义和计算定义。虽然我们在这里分享它们,但在下面的示例中查看时,它们会更有意义。+ 支持维度 → 分布的核心维度+ 批处理维度 → 超出分布支持维度的额外维度+ 隐含维度 → 源自分布参数的值或形状的维度+ 显式维度 → 由以下参数之一明确定义的维度: + 形状 → 从分布中抽样的数量 + 维度 → 维度名称的数组+ 坐标 → 一个字典,将维度名称映射到坐标值
    • 准备笔记本首先导入所需的库。
    • 高斯过程
  • 书籍
  • 视频与播客
  • 咨询
  • 术语表
  • 学习 PyMC 与贝叶斯建模
  • 咨询

咨询#


如果你需要专业的帮助来处理你的 PyMC 模型,PyMC Labs 是一家由 PyMC 核心开发团队成员 组成的贝叶斯咨询公司。我们通常进行的工作包括:

  • 模型加速(重参数化,JAX,GPU采样)

  • 改进模型(添加层次结构、时间序列结构等)

  • 构建新模型以解决应用业务问题

  • 贝叶斯媒体混合模型 用于营销归因

感兴趣吗?请发送电子邮件至 info@pymc-labs.io。

上一页

视频与播客

下一页

术语表

Edit on GitHub
显示源代码
Support PyMC

© Copyright 2021, The PyMC Development Team.

由 Sphinx 6.2.1创建。

Built with the PyData Sphinx Theme 0.13.3.