Statistical package to evaluate ab tests in experimentation platform.
Project description
ep-stats
Statistical package for the experimentation platform.
It provides a general Python package and REST API that can be used to evaluate any metric in an AB test experiment.
Features
- Robust two-tailed t-test implementation with multiple p-value corrections and delta methods applied.
- Sequential evaluations allow experiments to be stopped early.
- Connect it to any data source to get either pre-aggregated or per randomization unit data.
- Simple expression language to define arbitrary metrics.
- Sample size estimation.
- REST API to integrate it as a service in experimentation portal with score cards.
Documentation
We have got a lovely documentation.
Base Example
ep-stats allows for a quick experiment evaluation. We are using sample testing data to evaluate metric Click-through Rate
in experiment test-conversion
.
from epstats.toolkit import Experiment, Metric, SrmCheck
experiment = Experiment(
'test-conversion',
'a',
[Metric(
1,
'Click-through Rate',
'count(test_unit_type.unit.click)',
'count(test_unit_type.global.exposure)'),
],
[SrmCheck(1, 'SRM', 'count(test_unit_type.global.exposure)')],
unit_type='test_unit_type')
# This gets testing data, use other Dao or get aggregated goals in some other way.
from epstats.toolkit.testing import TestData
goals = TestData.load_goals_agg(experiment.id)
# evaluate experiment
ev = experiment.evaluate_agg(goals)
ev
contains evaluations of exposures, metrics, and checks. This will provide the following output.
ev.exposures
:
exp_id | exp_variant_id | exposures |
---|---|---|
test-conversion | a | 21 |
test-conversion | b | 26 |
ev.metrics
:
exp_id | metric_id | metric_name | exp_variant_id | count | mean | std | sum_value | confidence_level | diff | test_stat | p_value | confidence_interval | standard_error | degrees_of_freedom |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
test-conversion | 1 | Click-through Rate | a | 21 | 0.238095 | 0.436436 | 5 | 0.95 | 0 | 0 | 1 | 1.14329 | 0.565685 | 40 |
test-conversion | 1 | Click-through Rate | b | 26 | 0.269231 | 0.452344 | 7 | 0.95 | 0.130769 | 0.223152 | 0.82446 | 1.18137 | 0.586008 | 43.5401 |
ev.checks
:
exp_id | check_id | check_name | variable_id | value |
---|---|---|---|---|
test-conversion | 1 | SRM | p_value | 0.465803 |
test-conversion | 1 | SRM | test_stat | 0.531915 |
test-conversion | 1 | SRM | confidence_level | 0.999000 |
Installation
You can install this package via pip
.
pip install ep-stats
Running
You can run a testing version of ep-stats via
python -m epstats
Then, see Swagger on http://localhost:8080/docs for API documentation.
Contributing
To get started locally, you can clone the repo and quickly get started using the Makefile
.
git clone https://github.com/avast/ep-stats.git
cd ep-stats
make install-dev
It sets a new virtual environment .venv
in ./.venv
using .venv, installs all development dependencies, and sets pre-commit git hooks to keep the code neatly formatted with ruff.
To run tests, you can use Makefile
as well.
poetry shell # activate python environment
make check
To run a development version of ep-stats do
poetry shell
python -m epstats
Documentation
To update documentation run
mkdocs gh-deploy
It updates documentation in GitHub pages stored in branch gh-pages
.
Inspiration
Software engineering practices of this package have been heavily inspired by marvelous calmcode.io site managed by Vincent D. Warmerdam.
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 ep_stats-2.5.3.tar.gz
.
File metadata
- Download URL: ep_stats-2.5.3.tar.gz
- Upload date:
- Size: 54.2 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/5.1.1 CPython/3.9.20
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | bbe4f2eced8063471099bdac510b926fa0dbfc2c84f91b764b6467c321f211a9 |
|
MD5 | d4f603ed733f7398655c919efe895b7a |
|
BLAKE2b-256 | aa7616747d96b7515511364ddece7bef35d39a740417a50c09bc21a606bae22b |
File details
Details for the file ep_stats-2.5.3-py3-none-any.whl
.
File metadata
- Download URL: ep_stats-2.5.3-py3-none-any.whl
- Upload date:
- Size: 55.5 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/5.1.1 CPython/3.9.20
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | a0d59e041e50a6090b5aaa1f5116135461add2d3cc947c946fa720c8e95c0d06 |
|
MD5 | e8a0be3cd3764f92a61be2e918b90fc7 |
|
BLAKE2b-256 | 3137cc2ad7b26002330a7441f7598a663714c6eae922503589954b9ec62b7ba6 |