跳转到主要内容

Python中的贝叶斯模型构建接口

项目描述

PyPi version Build Status codecov Code style: black

Python中的贝叶斯模型构建接口

概述

Bambi是一个用Python编写的面向高级贝叶斯模型构建的接口。它建立在PyMC概率编程框架之上,旨在通过贝叶斯方法使混合效应模型在社会科学领域的应用变得极其简单。

安装

Bambi需要一个可工作的Python解释器(3.10+)。我们建议使用Anaconda发行版安装Python和关键数值库,该发行版在所有主要平台上都提供一键安装程序。

假设您的机器上已安装了标准Python环境(包括pip),您可以使用pip一行命令安装Bambi:

pip install bambi

或者,如果您想安装包的最新版本,可以从GitHub安装:

pip install git+https://github.com/bambinos/bambi.git

依赖项

Bambi需要ArviZ、formulae、NumPy、pandas和PyMC的正常版本。依赖项列在pyproject.toml中,并且应该由Bambi安装程序安装;无需采取其他操作。

示例

在以下两个示例中,我们假设以下基本设置:

import arviz as az
import bambi as bmb
import numpy as np
import pandas as pd

线性回归

以下示例展示了简单的固定效应模型。

# Read in a dataset from the package content
data = bmb.load_data("sleepstudy")

# See first rows
data.head()
 
# Initialize the fixed effects only model
model = bmb.Model('Reaction ~ Days', data)

# Get model description
print(model)

# Fit the model using 1000 on each chain
results = model.fit(draws=1000)

# Key summary and diagnostic info on the model parameters
az.summary(results)

# Use ArviZ to plot the results
az.plot_trace(results)
   Reaction  Days  Subject
0  249.5600     0      308
1  258.7047     1      308
2  250.8006     2      308
3  321.4398     3      308
4  356.8519     4      308
       Formula: Reaction ~ Days
        Family: gaussian
          Link: mu = identity
  Observations: 180
        Priors:
    target = mu
        Common-level effects
            Intercept ~ Normal(mu: 298.5079, sigma: 261.0092)
            Days ~ Normal(mu: 0.0, sigma: 48.8915)

        Auxiliary parameters
            sigma ~ HalfStudentT(nu: 4.0, sigma: 56.1721)
                   mean     sd   hdi_3%  hdi_97%  mcse_mean  mcse_sd  ess_bulk  ess_tail  r_hat
Intercept       251.552  6.658  238.513  263.417      0.083    0.059    6491.0    2933.0    1.0
Days             10.437  1.243    8.179   12.793      0.015    0.011    6674.0    3242.0    1.0
Reaction_sigma   47.949  2.550   43.363   52.704      0.035    0.025    5614.0    2974.0    1.0

首先,我们创建和构建一个Bambi Model。然后,使用model.fit()方法告诉采样器开始运行,并返回一个InferenceData对象,该对象可以传递给ArviZ的多个函数,如az.summary()以获取参数分布的摘要和样本诊断,或az.plot_trace()以可视化它们。

逻辑回归

在这个示例中,我们将使用以下方式创建的模拟数据集:

data = pd.DataFrame({
    "g": np.random.choice(["Yes", "No"], size=50),
    "x1": np.random.normal(size=50),
    "x2": np.random.normal(size=50)
})

在这里,我们只需将family参数设置为"bernoulli",告诉Bambi我们正在建模二元响应。默认情况下,它使用logit连接。我们也可以使用一些语法糖来指定我们想要建模的事件。我们只需说g['Yes'],Bambi就会理解我们想要建模的是"Yes"响应的概率。但这个表示法不是强制性的。如果我们使用"g ~ x1 + x2",Bambi将选择一个事件进行建模,并告知我们它选择了哪个。

model = bmb.Model("g['Yes'] ~ x1 + x2", data, family="bernoulli")
fitted = model.fit()

之后,我们可以像以前一样评估模型。

更多

要深入了解Bambi,请参阅我们的快速入门,并查看示例网页中的笔记本。

文档

Bambi的文档可以在官方文档中找到。

引用

如果您使用Bambi并希望引用它,请使用以下引用:

@article{Capretto2022,
 title={Bambi: A Simple Interface for Fitting Bayesian Linear Models in Python},
 volume={103},
 url={https://www.jstatsoft.org/index.php/jss/article/view/v103i15},
 doi={10.18637/jss.v103.i15},
 number={15},
 journal={Journal of Statistical Software},
 author={Capretto, Tomás and Piho, Camen and Kumar, Ravin and Westfall, Jacob and Yarkoni, Tal and Martin, Osvaldo A},
 year={2022},
 pages={1–29}
}

贡献

Bambi是一个社区项目,欢迎贡献。更多信息可以在贡献Readme中找到。

要查看贡献者列表,请参阅GitHub贡献者页面。

捐赠

如果您想从经济上支持Bambi,您可以向我们的姊妹项目PyMC捐赠

行为准则

Bambi希望维护一个积极的社区。更多详情可以在行为准则中找到。

许可证

MIT许可证

项目详情


下载文件

下载适用于您平台的文件。如果您不确定该选择哪个,请了解有关安装包的更多信息。

源分布

bambi-0.14.0.tar.gz (67.8 MB 查看哈希值)

上传时间

构建分布

bambi-0.14.0-py3-none-any.whl (107.9 kB 查看哈希值)

上传时间 Python 3

由以下支持

AWS AWS 云计算和安全赞助商 Datadog Datadog 监控 Fastly Fastly CDN Google Google 下载分析 Microsoft Microsoft PSF赞助商 Pingdom Pingdom 监控 Sentry Sentry 错误日志 StatusPage StatusPage 状态页面