Package: bambi
BAyesian Model-Building Interface in PythonOverviewBambi is a high-level Bayesian model-building interface written in Python. It's built on top of thePyMCprobabilistic programming framework, and is designed to make it extremely easy to fit mixed-effects models common in social sciences settings using a Bayesian approach.InstallationBambi requires a working Python interpreter (3.9+). We recommend installing Python and key numerical libraries using theAnaconda 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 bambiAlternatively, if you want the bleeding edge version of the package you can install from GitHub:pip install git+https://github.com/bambinos/bambi.gitDependenciesBambi requires working versions of ArviZ, formulae, NumPy, pandas and PyMC. Dependencies are listed inpyproject.tomland should all be installed by the Bambi installer; no further action should be required.ExampleIn the following two examples we assume the following basic setupimportbambiasbmbimportnumpyasnpimportpandasaspddata=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 regressionmodel=bmb.Model("y ~ x1 + x2",data)fitted=model.fit()In the first line we create and build a BambiModel. The second line tells the sampler to start
running and it returns anInferenceDataobject, which can be passed to several ArviZ functions
such asaz.summary()to get a summary of the parameters distribution and sample diagnostics oraz.plot_trace()to visualize them.Logistic regressionHere we just add thefamilyargument 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 sayg['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()DocumentationThe Bambi documentation can be found in theofficial docsCitationIf you use Bambi and want to cite it please use@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}
}ContributionsBambi is a community project and welcomes contributions. Additional information can be found in theContributingReadme.For a list of contributors see theGitHub contributorpageDonationsIf you want to support Bambi financially, you canmake a donationto our sister project PyMC.Code of ConductBambi wishes to maintain a positive community. Additional details can be found in theCode of ConductLicenseMIT License