Skip to main content

BAyesian Model Building Interface in Python

Project description

Bambi

PyPi version Build Status codecov Code style: black

BAyesian Model-Building Interface in Python

Overview

Bambi is a high-level Bayesian model-building interface written in Python. It's built on top of the PyMC3 probabilistic programming framework, and is designed to make it extremely easy to fit mixed-effects models common in social sciences settings using a Bayesian approach.

Installation

Bambi requires a working Python interpreter (3.7+). We recommend installing Python and key numerical libraries using the Anaconda Distribution, which has one-click installers available on all major platforms.

Assuming a standard Python environment is installed on your machine (including pip), Bambi itself can be installed in one line using pip:

pip install bambi

Alternatively, if you want the bleeding edge version of the package you can install from GitHub:

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

Dependencies

Bambi requires working versions of ArviZ, formulae, NumPy, pandas, PyMC3 and statsmodels. Dependencies are listed in requirements.txt, and should all be installed by the Bambi installer; no further action should be required.

Example

In the following two examples we assume the following basic setup

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

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

Linear regression

model = bmb.Model("y ~ x1 + x2", data)
fitted = model.fit()

In the first line we create and build a Bambi Model. The second line tells the sampler to start running and it returns an InferenceData object, which can be passed to several ArviZ functions such as az.summary() to get a summary of the parameters distribution and sample diagnostics or az.plot_traces() to visualize them.

Logistic regression

Here we just add the family argument set to "bernoulli" to tell Bambi we are modelling a binary response. By default, it uses a logit link. We can also use some syntax sugar to specify which event we want to model. We just say g['Yes'] and Bambi will understand we want to model the probability of a "Yes" response. But this notation is not mandatory. If we use "g ~ x1 + x2", Bambi will pick one of the events to model and will inform us which one it picked.

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

Documentation

The Bambi documentation can be found in the official docs

Citation

If you use Bambi and want to cite it please use arXiv

Here is the citation in BibTeX format

@misc{capretto2020,
      title={Bambi: A simple interface for fitting Bayesian linear models in Python},
      author={Tomás Capretto and Camen Piho and Ravin Kumar and Jacob Westfall and Tal Yarkoni and Osvaldo A. Martin},
      year={2020},
      eprint={2012.10754},
      archivePrefix={arXiv},
      primaryClass={stat.CO}
}

Contributions

Bambi is a community project and welcomes contributions. Additional information can be found in the Contributing Readme.

For a list of contributors see the GitHub contributor page

Code of Conduct

Bambi wishes to maintain a positive community. Additional details can be found in the Code of Conduct

License

MIT License

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

bambi-0.6.1.tar.gz (68.7 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

bambi-0.6.1-py3-none-any.whl (67.3 kB view details)

Uploaded Python 3

File details

Details for the file bambi-0.6.1.tar.gz.

File metadata

  • Download URL: bambi-0.6.1.tar.gz
  • Upload date:
  • Size: 68.7 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.4.2 importlib_metadata/4.6.4 pkginfo/1.7.1 requests/2.26.0 requests-toolbelt/0.9.1 tqdm/4.62.2 CPython/3.7.11

File hashes

Hashes for bambi-0.6.1.tar.gz
Algorithm Hash digest
SHA256 195476730e9b63c44e0d8cc3b88f06d68164bd0fd0a669ba3bda4a4a120e8b5a
MD5 9792a5a648c31579c26f2c0164c41876
BLAKE2b-256 f329c1a7bb126403c14bd564b93a890f180ffc941921e1f0f426ea966a0ded4f

See more details on using hashes here.

File details

Details for the file bambi-0.6.1-py3-none-any.whl.

File metadata

  • Download URL: bambi-0.6.1-py3-none-any.whl
  • Upload date:
  • Size: 67.3 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.4.2 importlib_metadata/4.6.4 pkginfo/1.7.1 requests/2.26.0 requests-toolbelt/0.9.1 tqdm/4.62.2 CPython/3.7.11

File hashes

Hashes for bambi-0.6.1-py3-none-any.whl
Algorithm Hash digest
SHA256 695b5a089a6ef6ed13f7980d54ffa3f2e612feff6ed991ec7557696aea7e84a3
MD5 60d13a57678fde547be3afa06fba3f48
BLAKE2b-256 88952bb67670555070707cebe29dbe3128b8678d65290ede27f09c3b582881cf

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page