Metadata-Version: 2.4
Name: bossanova
Version: 0.1.0.dev14
Summary: Bridging statistical cultures with some jazz
Author: Eshin Jolly
License-Expression: MIT
License-File: LICENSE
Keywords: analysis,multi-level-modeling,regression,statistics
Classifier: Intended Audience :: Science/Research
Classifier: Operating System :: OS Independent
Classifier: Programming Language :: Python :: 3.11
Classifier: Programming Language :: Python :: 3.12
Classifier: Programming Language :: Python :: 3.13
Requires-Python: >=3.11
Requires-Dist: attrs>=24.2.0
Requires-Dist: jax>=0.8.0
Requires-Dist: joblib>=1.3.0
Requires-Dist: nlopt>=2.9.0
Requires-Dist: numpy>=2.3.4
Requires-Dist: pandas>=2.0.0
Requires-Dist: polars>=1.0.0
Requires-Dist: pyarrow>=14.0.0
Requires-Dist: scipy>=1.14.0
Requires-Dist: tqdm>=4.66.0
Provides-Extra: sparse
Requires-Dist: scikit-sparse>=0.4.16; extra == 'sparse'
Description-Content-Type: text/markdown

# Bossanova

Unified mixed-effects modeling in Python. JAX + NumPy backends. R/lme4 parity.

## Installation

```bash
uv add bossanova
```

or

```bash
pip install bossanova
```

## Features

- **One unified entry point** — `model()` handles linear, generalized, and mixed-effects models
- **R-style formulas** — `y ~ x + (1|group)`, `factor()`, `center()`, `scale()`
- **Multiple inference strategies** — asymptotic, bootstrap, permutation, cross-validation
- **Marginal effects** — `.explore()` for estimated marginal means, slopes, and contrasts
- **JAX acceleration** — automatic acceleration when JAX is available, NumPy fallback
- **R parity** — matches lme4/emmeans within f64 tolerance

## Quick Example

```python
from bossanova import model, load_dataset

df = load_dataset("sleepstudy")

# Fit a mixed model
m = model("Reaction ~ Days + (1 + Days | Subject)", data=df).fit()
m.params

# Perform bootstrapped parameter inference
m.infer(how='boot')

# Explore marginal effects
m.explore("Days")
m.effects
```


