Bayesian inference for hierarchical sequential sampling models.
Project description
HSSM - Hierarchical Sequential Sampling Modeling
Overview
HSSM is a Python toolbox that provides a seamless combination of state-of-the-art likelihood approximation methods with the wider ecosystem of probabilistic programming languages. It facilitates flexible hierarchical model building and inference via modern MCMC samplers. HSSM is user-friendly and provides the ability to rigorously estimate the impact of neural and other trial-by-trial covariates through parameter-wise mixed-effects models for a large variety of cognitive process models. HSSM is a BRAINSTORM project in collaboration with the Center for Computation and Visualization and the Center for Computational Brain Science within the Carney Institute at Brown University.
- Allows approximate hierarchical Bayesian inference via various likelihood approximators.
- Estimate impact of neural and other trial-by-trial covariates via native hierarchical mixed-regression support.
- Extensible for users to add novel models with corresponding likelihoods.
- Built on PyMC with support from the Python Bayesian ecosystem at large.
- Incorporates Bambi's intuitive
lmer
-like regression parameter specification for within- and between-subject effects. - Native ArviZ support for plotting and other convenience functions to aid the Bayesian workflow.
- Utilizes the ONNX format for translation of differentiable likelihood approximators across backends.
Official documentation.
Installation
Update: From HSSM 0.2.1 on, we recommend conda
as the virtual environment manager for HSSM. We will also gradually make HSSM available directly through conda-forge
in the near future. For now, please follow the instruction below to install HSSM:
Step 1: Create a conda environment
If you haven't already, please follow the Anaconda official website to install anaconda. We assume that you already have one of Anaconda, Miniconda, miniforge, or mambaforge installed on your system and have access to either conda
or mamba
available on your command line.
To create a conda environment, use the following command. Substitute mamba
for conda
if mamba
is available:
conda create -n <your-env-name> python=3.11
conda activate <your-env-name>
Substitute <your-env-name>
with the name of the virtual environment that you choose. HSSM 0.2.0 and above supports Python versions 3.10 and 3.11.
Step 2: Install PyMC through conda-forge
Installation through conda-forge
is the official way of installing PyMC. This will also install other libraries such as libblas
that PyMC requires to run properly.
conda install -c conda-forge pymc
As of HSSM 0.2.1, HSSM supports PyMC 5.10.4. If a future newer version of PyMC causes compatibility issues, please specify the version of PyMC:
conda install -c conda-forge pymc=5.10
Step 3: Install hssm
through pip
In the same environment, install hssm
through pip
.
pip install hssm
Advanced Installation
hssm
is also available through PyPI. You can directly install it with pip into any virtual environment via:
pip install hssm
You can also install the bleeding-edge version of hssm
directly from this repo:
pip install git+https://github.com/lnccbrown/HSSM.git
While this installation is much simpler, you might need optional dependencies to use JAX-based samplers and to produce model graphs. You might also encounter this warning message WARNING (pytensor.tensor.blas): Using NumPy C-API based implementation for BLAS functions.
Please refer to our advanced installation guide for more details.
Note: Possible solutions to any issues with installations with hssm can be located here. We recommend leveraging an environment manager with Python 3.10~3.11 to prevent any problems with dependencies during the installation process. Please note that hssm is tested for python 3.10, 3.11. As of HSSM v0.2.0, support for Python 3.9 is dropped. Use other python versions with caution.
Example
Here is a simple example of how to use HSSM:
import hssm
# Set float type to float32 to avoid a current bug in PyMC
# This will not be necessary in the future
hssm.set_floatX("float32")
# Load a package-supplied dataset
cav_data = hssm.load_data('cavanagh_theta')
# Define a basic hierarchical model with trial-level covariates
model = hssm.HSSM(
model="ddm",
data=cav_data,
include=[
{
"name": "v",
"prior": {
"Intercept": {"name": "Normal", "mu": 0.0, "sigma": 0.1},
"theta": {"name": "Normal", "mu": 0.0, "sigma": 0.1},
},
"formula": "v ~ theta + (1|participant_id)",
"link": "identity",
},
],
)
# Sample from the posterior for this model
model.sample()
To quickly get started with HSSM, please follow this tutorial. For a deeper dive into HSSM, please follow our main tutorial.
License
HSSM is licensed under Copyright 2023, Brown University, Providence, RI
Support
For questions, please feel free to open a discussion.
For bug reports and feature requests, please feel free to open an issue using the corresponding template.
Contribution
If you want to contribute to this project, please follow our contribution guidelines.
Acknowledgements
We would like to extend our gratitude to the following individuals for their valuable contributions to the development of the HSSM package:
- Bambi - A special thanks to the Bambi project for providing inspiration, guidance, and support throughout the development process. Tomás Capretto, a key contributor to Bambi, provided invaluable assistance in the development of the HSSM package.
Those contributions have greatly enhanced the functionality and quality of the HSSM.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
File details
Details for the file hssm-0.2.1.tar.gz
.
File metadata
- Download URL: hssm-0.2.1.tar.gz
- Upload date:
- Size: 164.0 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: poetry/1.8.3 CPython/3.11.9 Linux/6.5.0-1018-azure
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 5065fb49f54112ab5082bb5e87ea90b0ce47d509fc8268aee67ee63e68a08b44 |
|
MD5 | 6c91acc719b2310918ca348e6327750f |
|
BLAKE2b-256 | 9b76088cb14d8f74342f963fa137ca721e3c35c7c39b04fc7f8678cf4146d300 |
File details
Details for the file hssm-0.2.1-py3-none-any.whl
.
File metadata
- Download URL: hssm-0.2.1-py3-none-any.whl
- Upload date:
- Size: 172.8 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: poetry/1.8.3 CPython/3.11.9 Linux/6.5.0-1018-azure
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 769171772ee48db9873e1790ced7e2091687764e941c7c4c1f409a3c74e45546 |
|
MD5 | 72f4f1a9b999471760fd0e34086344b4 |
|
BLAKE2b-256 | 01b348615acabf220ff1b747e42b6f1f505889823d9420837ed4ab951d16aebc |