AE-MCMC 夜间版 0.0.6
pip install AE-MCMC-夜间版
最新版本
发布时间:
使用Aesara编写的各种MCMC采样器
导航
未验证详情
这些详情尚未通过PyPI验证项目链接
元信息
- 许可证: MIT 许可证
- 维护者: Brandon T. Willard
- 标签 math, probability, numerical, symbolic, MCMC
- 需求: Python >=3.7
项目描述
AeMCMC 是一个 Python 库,用于自动构建代表统计模型的 Aesara 图的采样器。
功能
此项目目前处于 alpha 状态,但基本功能/目标是以下内容
提供简化构建 Aesara 图/函数的后验和后验预测抽样的实用工具
提供广泛的“精确”后验抽样步骤(例如,Gibbs 步骤、基于尺度混合/分解的条件抽样的采样器等)
构建识别和组合所述采样步骤的框架,并列举任意模型的可能采样器
总的来说,我们希望这个项目成为社区来源的专业采样器的枢纽,并促进它们的通用使用。
入门指南
使用 AeMCMC,可以从包含 Aesara RandomVariable 的图中构建抽样步骤。AeMCMC 分析模型图,并可能重写它以找到最合适的采样器。
AeMCMC 可以识别封闭形式的后验;例如,以下 Beta-Binomial 模型相当于从 Beta 分布中抽样
import aesara
import aemcmc
import aesara.tensor as at
srng = at.random.RandomStream(0)
p_rv = srng.beta(1., 1., name="p")
Y_rv = srng.binomial(10, p_rv, name="Y")
y_vv = Y_rv.clone()
y_vv.name = "y"
sample_steps, _, initial_values, _ = aemcmc.construct_sampler(
{Y_rv: y_vv}, srng
)
p_posterior_step = sample_steps[p_rv]
aesara.dprint(p_posterior_step)
# beta_rv{0, (0, 0), floatX, False}.1 [id A]
# |RandomGeneratorSharedVariable(<Generator(PCG64) at 0x7F77B2831200>) [id B]
# |TensorConstant{[]} [id C]
# |TensorConstant{11} [id D]
# |Elemwise{add,no_inplace} [id E]
# | |TensorConstant{1.0} [id F]
# | |y [id G]
# |Elemwise{sub,no_inplace} [id H]
# |Elemwise{add,no_inplace} [id I]
# | |TensorConstant{1.0} [id F]
# | |TensorConstant{10} [id J]
# |y [id G]
sample_fn = aesara.function([y_vv], p_posterior_step)
AeMCMC 还包含一个 Gibbs 采样器数据库,可以比 NUTS 等通用采样器更有效地抽样某些模型
import aemcmc
import aesara.tensor as at
srng = at.random.RandomStream(0)
X = at.matrix("X")
# Horseshoe prior for `beta_rv`
tau_rv = srng.halfcauchy(0, 1, name="tau")
lmbda_rv = srng.halfcauchy(0, 1, size=X.shape[1], name="lambda")
beta_rv = srng.normal(0, lmbda_rv * tau_rv, size=X.shape[1], name="beta")
a = at.scalar("a")
b = at.scalar("b")
h_rv = srng.gamma(a, b, name="h")
# Negative-binomial regression
eta = X @ beta_rv
p = at.sigmoid(-eta)
Y_rv = srng.nbinom(h_rv, p, name="Y")
y_vv = Y_rv.clone()
y_vv.name = "y"
sample_steps, updates, initial_values, parameters = aemcmc.construct_sampler(
{Y_rv: y_vv}, srng
)
print(sample_steps.keys())
# dict_keys([tau, lambda, beta, h])
如果没有找到专用采样器,AeMCMC 将 NUTS 采样器分配给剩余变量。如果需要,AeMCMC 会自动重新参数化模型以改进抽样
import aemcmc
import aesara.tensor as at
srng = at.random.RandomStream(0)
mu_rv = srng.normal(0, 1, name="mu")
sigma_rv = srng.halfnormal(0.0, 1.0, name="sigma")
Y_rv = srng.normal(mu_rv, sigma_rv, name="Y")
y_vv = Y_rv.clone()
sample_steps, updates, initial_values, parameters = aemcmc.construct_sampler(
{Y_rv: y_vv}, srng
)
print(sample_steps.keys())
# dict_keys([sigma, mu])
print(parameters.keys())
# dict_keys(['step_size', 'inverse_mass_matrix'])
安装
可以从 PyPI 使用 pip 安装 AeMCMC 的最新版本
pip install aemcmc
或通过 conda-forge
conda install -c conda-forge aemcmc
可以从 GitHub 安装 AeMCMC 的当前开发分支,也使用 pip
pip install git+https://github.com/aesara-devs/aemcmc
项目详情
未验证详情
这些详情尚未通过PyPI验证项目链接
元信息
- 许可证: MIT 许可证
- 维护者: Brandon T. Willard
- 标签 math, probability, numerical, symbolic, MCMC
- 需求: Python >=3.7