nutpie:快速采样贝叶斯后验分布的利器
nutpie Python wrapper for nuts-rs 项目地址: https://gitcode.com/gh_mirrors/nu/nutpie
项目介绍
在贝叶斯统计分析中,从后验分布中采样是一个关键步骤。nutpie 是一个专门为贝叶斯后验采样设计的工具,它能够快速、高效地从复杂的后验分布中进行采样。nutpie 通过使用 Rust 语言编写的 nuts-rs
库实现,结合了 NUTS 算法的高效性和 Rust 的性能优势,为用户提供了一种强大的采样方法。
项目技术分析
nutpie 的核心是利用 Rust 语言实现的 nuts-rs
库。Rust 是一种注重性能、安全和并发的系统编程语言,它的类型系统和所有权模型使得编写高效且可靠的代码成为可能。nuts-rs
是一个基于 NUTS 算法的贝叶斯采样库,它针对后验分布采样进行了优化。
nutpie 支持与 PyMC 和 Stan 的集成,这两种工具在贝叶斯统计领域都十分流行。通过 PyMC 和 Stan 的接口,nutpie 能够利用现有的模型定义,并对其进行高效的采样。
安装
nutpie 可以通过 Conda 或 Mamba 从 conda-forge 安装:
mamba install -c conda-forge nutpie
或者使用 pip 进行安装:
pip install nutpie
使用 PyMC
首先,需要安装 PyMC 和 Numba:
mamba install -c conda-forge pymc numba
然后创建一个模型,并使用 nutpie 进行采样:
import pymc as pm
import numpy as np
import nutpie
import pandas as pd
import seaborn as sns
# 加载数据
data = pd.read_csv(pm.get_data("radon.csv"))
data["log_radon"] = data["log_radon"].astype(np.float64)
county_idx, counties = pd.factorize(data.county)
coords = {"county": counties, "obs_id": np.arange(len(county_idx))}
# 创建模型
with pm.Model(coords=coords, check_bounds=False) as pymc_model:
# ... 模型定义 ...
pm.Normal("log_radon", mu=mu, sigma=sigma, observed=data.log_radon.values, dims="obs_id")
# 编译并采样
compiled_model = nutpie.compile_pymc_model(pymc_model)
trace_pymc = nutpie.sample(compiled_model)
使用 Stan
若要采样 Stan 模型,需要安装 bridgestan
:
pip install bridgestan
安装 nutpie 时,也可以指定安装用于 Stan 模型的可选依赖:
pip install 'nutpie[stan]'
然后编译并采样 Stan 模型:
import nutpie
code = """
data {
real mu;
}
parameters {
real x;
}
model {
x ~ normal(mu, 1);
}
"""
compiled = nutpie.compile_stan_model(code=code)
compiled = compiled.with_data(mu=3.)
trace = nutpie.sample(compiled)
项目技术应用场景
nutpie 适用于需要对复杂贝叶斯模型进行高效采样的场景,如在机器学习、统计物理学、生物统计和经济学等领域。以下是一些具体的应用场景:
- 高维数据分析:nutpie 能够处理具有大量参数的模型,这在现代数据科学中非常常见。
- 模型校准:在需要从模型中获取参数的不确定性估计时,nutpie 提供了一种高效的采样方法。
- 决策分析:nutpie 可以帮助分析决策过程中的不确定性,从而支持更明智的决策制定。
项目特点
- 高性能采样:nutpie 利用 Rust 编写的
nuts-rs
库实现高效的 NUTS 算法,提供更高的有效样本量。 - 易于集成:支持与 PyMC 和 Stan 的集成,可以轻松地将 nutpie 引入现有的工作流程。
- 灵活的控制:nutpie 提供了丰富的接口,允许用户以非阻塞方式控制采样过程,暂停、恢复甚至取消采样。
- 跨平台兼容性:nutpie 支持多种操作系统,包括 Windows、macOS 和 Linux。
nutpie 以其出色的性能和易用性,为贝叶斯统计分析领域带来了新的可能性。无论是学术研究人员还是工业工程师,都可以从 nutpie 提供的快速采样功能中受益,加速科学发现和决策过程。
nutpie Python wrapper for nuts-rs 项目地址: https://gitcode.com/gh_mirrors/nu/nutpie