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 开发者 Youtube 频道

在这里查看所有视频

PyMC 对话

积极维护的 YouTube 播放列表 包含 PyMC 演讲

PyMC Labs Youtube 频道

在这里查看所有视频

PyMCon 2020 演讲

在这里查看所有视频

学习贝叶斯统计播客

在这里查看所有视频

上一页

书籍

下一页

咨询

Edit on GitHub
显示源代码
Support PyMC

© Copyright 2021, The PyMC Development Team.

由 Sphinx 6.2.1创建。

Built with the PyData Sphinx Theme 0.13.3.