Skip to main content
Superstats logo

Tests Coverage License Contributions Welcome

What is Superstats?

Superstats is a Python library for simulation and Bayesian estimation of dynamic models with time-varying parameters.

The library aims to be domain-agnostic, but for now focuses on cognitive modeling. It provides users with:

  • A lean API for non-stationary models: specify which parameters change across time, and how.
  • A library of transition models: random walks, ARs, levy flights, jump processes, mixtures, and Gaussian processes.
  • Built-in cognitive models, plus a plug-in interface for any simulator of your own.
  • Amortized Bayesian inference built on top of BayesFlow: train once, then quickly fit every data set.
  • Diagnostics and visualization tools for every critical step in a principled Bayesian workflow.

Conceptual overview

Overview graphic of superstats

A superstatistical model has two levels. A low-level observation model $\mathcal{G}$ generates the data at each time step. A high-level transition model $\mathcal{T}$ describes how the parameters of that model evolve:

$$\theta_t = \mathcal{T}(\theta_{0:t-1}; \eta) \qquad x_t = \mathcal{G}(x_{1:t-1}; \theta_t, \lambda)$$

Superstats trains a neural estimator on simulations from any generative model of this form and returns the joint posterior $p(\theta_{1:T}, \eta, \lambda \mid x_{1:T})$ over all time-varying parameters $\theta_{1:T}$ and time-invariant parameters $(\eta, \lambda)$.

Install

We support Python 3.12 to 3.13. Install the latest version from source:

pip install superstats

If you want the latest features, you can install from source:

pip install git+https://github.com/LuSchumacher/superstats.git@dev

Deep learning backend

Per default, superstats installs JAX on Linux/MacOS machines and PyTorch on Windows machines. This is because JAX does not natively support GPU acceleration on Windows. You can also manually install and configure any of the three backends:

Getting started

A complete workflow using a diffusion decision model whose drift rate and thresold are free to vary across time:

import superstats as sup

# 1. Assume which parameters move, and how
joint_prior = sup.JointPrior(
    v=sup.transition.RandomWalk(), a=sup.transition.RandomWalk(), tau=sup.Prior(dist="halfnormal", scale=0.15), bias=0.5
)

# 2. Plug in an observation model (any simulator will do)
generative_model = sup.GenerativeModel(
    prior=joint_prior, model=sup.simulation.sample_ddm, missing="random", contamination="random_choice"
)

# 3. Train a neural approximator
workflow = sup.Workflow(simulator=generative_model)
history = workflow.fit_online(num_steps=100, epochs=20, batch_size=16)

# 4. Fit any number of data sets, instantly
samples = workflow.sample(data=rt_data, num_samples=250)

It is highly recommended to use a GPU for fast training and inference. For an in-depth exposition, check out the examples below.

Examples

Notebook What it covers
Minimal workflow demo Short path from prior to posterior
Extensive workflow demo Coming soon

More examples are always welcome. If you have an application, please consider opening a pull request.

Contributing

Contributions are welcome. Install from source and see CONTRIBUTING.md for details.

Reporting issues

Please open an issue on GitHub for bug reports and feature requests. For questions about the underlying inference machinery, the BayesFlow Forums are a good place to ask.

Citation

If you use Superstats in your research, please cite:

@article{schumacher2023neural,
  title   = {Neural superstatistics for {B}ayesian estimation of dynamic cognitive models},
  author  = {Schumacher, Lukas and B{\"u}rkner, Paul-Christian and Voss, Andreas and K{\"o}the, Ullrich and Radev, Stefan T.},
  journal = {Scientific Reports},
  volume  = {13},
  number  = {1},
  pages   = {13778},
  year    = {2023},
  doi     = {10.1038/s41598-023-40278-3}
}

@article{schumacher2025validation,
  title   = {Validation and comparison of non-stationary cognitive models: A diffusion model application},
  author  = {Schumacher, Lukas and Schnuerch, Martin and Voss, Andreas and Radev, Stefan T.},
  journal = {Computational Brain \& Behavior},
  volume  = {8},
  number  = {2},
  pages   = {191--210},
  year    = {2025},
  doi     = {10.1007/s42113-024-00218-4}
}

Download files

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

Source Distribution

superstats-0.0.2.tar.gz (99.0 kB view details)

Uploaded Source

Built Distribution

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

superstats-0.0.2-py3-none-any.whl (135.1 kB view details)

Uploaded Python 3

File details

Details for the file superstats-0.0.2.tar.gz.

File metadata

  • Download URL: superstats-0.0.2.tar.gz
  • Upload date:
  • Size: 99.0 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.14

File hashes

Hashes for superstats-0.0.2.tar.gz
Algorithm Hash digest
SHA256 9f7032eaeb6675d015a613d27a31c1d05651ab2ffbb6d36fe29e45cb84c03b53
MD5 7e746f36c59a1480cbf27c9612766f72
BLAKE2b-256 07cd2633750ac5160ace792554d397001373036a8ca060e98e5611735e7ffe45

See more details on using hashes here.

Provenance

The following attestation bundles were made for superstats-0.0.2.tar.gz:

Publisher: publish.yaml on LuSchumacher/superstats

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file superstats-0.0.2-py3-none-any.whl.

File metadata

  • Download URL: superstats-0.0.2-py3-none-any.whl
  • Upload date:
  • Size: 135.1 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.14

File hashes

Hashes for superstats-0.0.2-py3-none-any.whl
Algorithm Hash digest
SHA256 15db49a3b8d63a2c7022bc1b05a5d26a43ad64d1365d12058fbd4177f85a9f5c
MD5 8f6501238b59d925f0cf1dba7bbbc31f
BLAKE2b-256 5ccdaa59c4ce8187e88c84c47267ce1d47e3cb03b8db5fb4f7efe2f1abe32880

See more details on using hashes here.

Provenance

The following attestation bundles were made for superstats-0.0.2-py3-none-any.whl:

Publisher: publish.yaml on LuSchumacher/superstats

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Release history Release notifications | RSS feed

This release

0.0.2 This release

2 files

0.0.1

2 files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page