AB tests library with simplicity in mind
Project description
ABOBA
AB tests library with simplicity in mind
📚 Documentation
- Full Documentation - Complete guide and reference
- Tutorial - Step-by-step learning guide
- API Reference - Detailed API documentation
✨ Features
- Simple & Intuitive API - Easy to learn and use for both beginners and experts
- Multiple Statistical Tests - t-tests, ANOVA, Kruskal-Wallis, and more
- Variance Reduction - Built-in CUPED, stratification, and regression adjustments
- Power Analysis - Simulate synthetic effects to estimate required sample sizes
- Flexible Pipelines - Chain data processors and splitters for complex workflows
- Experiment Orchestration - Run and visualize multiple test scenarios simultaneously
- Extensible Architecture - Easy to create custom tests, splitters, and processors
- Production Ready - Type hints, comprehensive tests, and detailed documentation
🚀 Quick Start
Installation
pip install aboba
📖 Quick Example
To conduct a test, you need several entities:
- data
- data processing
- data sampling technique
- the test strategy itself
Data can be a simple pandas dataframe or custom data generator.
General use case
import numpy as np
import pandas as pd
import scipy.stats as sps
from aboba import (
tests,
splitters,
effect_modifiers,
experiment,
)
from aboba.pipeline import Pipeline
# Create dataset with two groups
data = pd.DataFrame({
'value' : np.concatenate([
sps.norm.rvs(size=1000, loc=0, scale=1),
sps.norm.rvs(size=1000, loc=0, scale=1),
]),
'is_b_group': np.concatenate([
np.repeat(0, 1000),
np.repeat(1, 1000),
]),
})
# Configure test
test = tests.AbsoluteIndependentTTest(
value_column='value',
)
# Create pipeline with splitter
splitter = splitters.GroupSplitter(
column='is_b_group',
size=100,
)
pipeline = Pipeline([
('splitter', splitter),
])
# Run experiment
n_iter = 500
exp = experiment.AbobaExperiment(draw_cols=1)
group_aa = exp.group(
name="AA, regular",
test=test,
data=data,
data_pipeline=pipeline,
n_iter=n_iter
)
group_aa.run()
effect = effect_modifiers.GroupModifier(
effects={1: 0.3},
value_column='value',
group_column='is_b_group',
)
group_ab = exp.group(
name="AB, regular, effect=0.3",
test=test,
data=data,
data_pipeline=pipeline,
synthetic_effect=effect,
n_iter=n_iter
)
group_ab.run()
# Draw results
fig, axes = exp.draw()
fig.savefig('results.png')
🎯 Key Components
- Tests - Statistical tests for hypothesis testing (t-tests, ANOVA, etc.)
- Splitters - Control how data is split into groups (random, stratified, grouped)
- Processors - Transform data before testing (CUPED, bucketing, normalization)
- Pipelines - Chain multiple processors and splitters together
- Effect Modifiers - Simulate synthetic effects for power analysis
- Experiments - Orchestrate multiple test runs and visualize results
📊 Use Cases
- A/B Testing - Compare two variants to determine which performs better
- Multivariate Testing - Test multiple variants simultaneously
- Power Analysis - Determine required sample sizes for detecting effects
- Variance Reduction - Use CUPED or stratification to improve test sensitivity
- Custom Tests - Implement domain-specific statistical tests
🤝 Contributing
Contributions are welcome! Please feel free to submit a Pull Request.
📄 License
MIT License - see LICENSE file for details
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
aboba-1.0.12.tar.gz
(60.0 kB
view details)
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
aboba-1.0.12-py3-none-any.whl
(84.1 kB
view details)
File details
Details for the file aboba-1.0.12.tar.gz.
File metadata
- Download URL: aboba-1.0.12.tar.gz
- Upload date:
- Size: 60.0 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
c7a53a7eb938fb4dc654633daa12d6debe292b59e098b2fe4e2fbc5e43041a2b
|
|
| MD5 |
5b2aace33f30f579254fdbf6797bddf0
|
|
| BLAKE2b-256 |
756a6a60d2550496552d34f972555ea4512def66e10195bef10779da327726ae
|
File details
Details for the file aboba-1.0.12-py3-none-any.whl.
File metadata
- Download URL: aboba-1.0.12-py3-none-any.whl
- Upload date:
- Size: 84.1 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
6496471d780eeef63322d0839b75db79c7c5719fbe3f8553567b04e56ff0debe
|
|
| MD5 |
83098997e1a6392e7f5d3ea7814e8df7
|
|
| BLAKE2b-256 |
4d7b06db722a79ccd4d1fb77436fa7dc825439012cf7d442796a8978b31e8469
|