Parameter estimation tools for one-dimensional stable distributions and their mixtures.
Project description
🌌 MixStable — Alpha-Stable Mixture Estimation Package
A comprehensive Python package for simulating, estimating, and visualizing alpha-stable mixture distributions.
This toolkit is designed for statisticians, data scientists, and researchers working with heavy-tailed or skewed data, where Gaussian models fail to capture real-world complexity.
Key Features
Robust Estimation Methods
- Empirical Characteristic Function (ECF) estimators: kernel-based and weighted OLS
- Maximum Likelihood Estimation (MLE)
- Quantile-based and CDF-based approaches
Mixture Modeling with EM
- EM algorithm for two-component alpha-stable mixtures
- Flexible estimator choice inside the EM loop
- Optional integration with Gibbs sampling for Bayesian refinement
Visualization & Simulation
- Generate synthetic alpha-stable data
- Built-in visualization tools and an interactive Streamlit dashboard
R Integration (via rpy2)
- Uses R’s
stabledistpackage to evaluate stable densities and CDFs - Leverage mature R statistical methods directly from Python
Testing & Evaluation
- Built-in diagnostics and model-fit tools
- Evaluation metrics and example datasets
Installation
Install directly from PyPI:
pip install Mixstable
Or clone the repository and install in editable mode:
git clone https://github.com/AdamNajib/MixStable.git
cd src
pip install -e .
Install the required R package (for rpy2 integration):
install.packages("stabledist")
Running the Interactive Dashboard
To launch the Streamlit app for interactive parameter tuning and visualization:
streamlit run interface/app.py
Usage Example
Estimate parameters from synthetic data:
from mixstable import generate_sample, em
# Generate alpha-stable samples
samples = generate_sample.generate_alpha_stable(alpha=1.7, beta=0, gamma=1, delta=0, size=1000)
# Fit a two-component mixture model using EM
result = em.run_em_algorithm(samples, num_components=2, max_iter=50)
print(result['params'])
Requirements
- Python ≥ 3.8
- R (if using
r_interface) stabledistR package
Python dependencies (auto-installed from requirements.txt):
numpy,scipy,matplotlib,seaborn,statsmodelsrpy2,pandas,tqdm,scikit-learn,streamlit
Project Structure
Mixstable/
│
├── src/
│ ├── Mixstable/ # Core modules
│ │ └── em.py, gibbs.py, ecf.py, ...
│ ├── interface/ # Streamlit dashboard
│ └── tests/ # Test scripts
│
├── README.md
├── setup.py
├── pyproject.toml
└── requirements.txt
Package Overview
| Module | Description |
|---|---|
em.py |
Expectation-Maximization algorithm implementation |
gibbs.py |
Gibbs sampling routines for Bayesian inference |
ecf.py |
Empirical characteristic function estimators |
generate_sample.py |
Alpha-stable data generation tools |
interface/ |
Streamlit dashboard and helper scripts |
tests/ |
Unit and integration tests |
Example Output
Example EM fit visualization (from Streamlit app):
Iteration 50/50
Component 1: α = 1.72, β = 0.05, γ = 1.1, δ = 0.02
Component 2: α = 1.54, β = -0.10, γ = 0.8, δ = 2.4
Log-likelihood: -1856.42
Theoretical Background
Alpha-stable distributions generalize the Gaussian family to model heavy-tailed and skewed data. They are defined by four parameters:
| Parameter | Symbol | Meaning |
|---|---|---|
| Stability | α | Controls tail thickness (0 < α ≤ 2) |
| Skewness | β | Controls asymmetry (−1 ≤ β ≤ 1) |
| Scale | γ | Controls spread (> 0) |
| Location | δ | Controls center (real number) |
This package provides both simulation tools and inference routines for mixtures of alpha-stable laws, extending beyond Gaussian mixtures.
References
Hajjaji, O., Manou-Abi, S. M., & Slaoui, Y. (2024). Parameter estimation for stable distributions and their mixture. Journal of Applied Statistics, 52(8), 1594–1627. https://doi.org/10.1080/02664763.2024.2434627
Authors
Solym Manou-Abi Email: [solym.manou.abi@univ-poitiers.fr]
Adam Najib Email: [najibadam145@gmail.com] GitHub: @AdamNajib
Yousri Slaoui Email: [Yousri.Slaoui@math.univ-poitiers.fr]
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
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file mixstable-0.1.8.tar.gz.
File metadata
- Download URL: mixstable-0.1.8.tar.gz
- Upload date:
- Size: 65.3 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.10.10
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
b8003414e1f473f2b4cf861db91dce214c6ef15227225daa867a405d010f0362
|
|
| MD5 |
d7ddc971e42cde13194b2b01b4451405
|
|
| BLAKE2b-256 |
a297c98c307bcc6093c834f1d61219ea29054047a973cb46deb4d4391257a437
|
File details
Details for the file mixstable-0.1.8-py3-none-any.whl.
File metadata
- Download URL: mixstable-0.1.8-py3-none-any.whl
- Upload date:
- Size: 75.6 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.10.10
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
3d94f39553f8d5fbc83b6520526cc9cdca62733496d92b114cbf613de7db7973
|
|
| MD5 |
ed82ec4f3881cbdc4b98ccdf707e4d46
|
|
| BLAKE2b-256 |
74efb30f5b8d3f0b3971437f886e4a594c38bc90622981e83630e361d5874422
|