Aboba logo

Aboba

Python-библиотека для A/B-тестирования с упором на простоту

Инструмент для проведения надёжных A/B-тестов: помогает правильно разделить пользователей, провести статистический анализ, уменьшить дисперсию и визуализировать результаты — всё с простым API и модульной архитектурой.

простота API
статистические тесты
уменьшение дисперсии
модульная архитектура

Зачем нужна Aboba

Снимает сложность статистики и делает A/B-тестирование доступным.
  • Упрощает запуск и анализ экспериментов с помощью понятного API.
  • Обеспечивает статистическую достоверность результатов автоматически.
  • Уменьшает влияние случайных колебаний с помощью CUPED и стратификации.
  • Визуализирует результаты для быстрого принятия решений.
  • Расширяется под любые потребности благодаря модульной архитектуре.

Быстрый старт

Один пример, который можно развернуть. Полные сценарии — в документации.
Установка
pip install aboba
Пример AA / AB теста
import numpy as np import pandas as pd import scipy.stats as sps from aboba import tests, samplers, effect_modifiers, experiment, pipeline # Генерация данных n = 1000 data = pd.DataFrame({ "value": np.r_[sps.norm.rvs(size=n), sps.norm.rvs(size=n)], "b_group": np.r_[np.zeros(n), np.ones(n)], }) # Pipeline data_pipeline = pipeline.Pipeline([ ("GroupSampler", samplers.GroupSampler(size=100, column="b_group")), ]) # Тест test = tests.AbsoluteIndependentTTest(value_column="value") # Эксперимент exp = experiment.AbobaExperiment() # AA тест exp.group( "AA Test", test=test, data=data, data_pipeline=data_pipeline, n_iter=100, ).run() # AB тест с синтетическим эффектом exp.group( "AB Test (effect=0.3)", test=test, data=data, data_pipeline=data_pipeline, synthetic_effect=effect_modifiers.GroupModifier( effects={1: 0.3}, value_column="value", group_column="b_group", ), n_iter=100, ).run() # Визуализация exp.draw()

Подробный tutorial, CUPED, кастомные тесты и пайплайны — официальная документация Aboba

Архитектура библиотеки

Модульный дизайн для гибкости и расширяемости.
Data Sources
Data Samplers
Data Processors
Tests
Effect Modifiers
Experiments
Data SourcesИсточники данных
Данные для эксперимента обычно передаются как pandas DataFrame (или как пользовательский генератор/объект), который затем обрабатывается в пайплайне.
Data SamplersСэмплеры
Определяют, как формируются группы для теста: например, выборка фиксированного размера из каждой группы.
Data ProcessorsОбработчики
Преобразуют данные до тестирования: например, CUPED для уменьшения дисперсии, дополнительные преобразования и проверки.
TestsСтат. тесты
Статистические тесты для проверки гипотез (например, t-test и другие тесты из набора библиотеки).
Effect ModifiersМодификаторы
Добавляют синтетические эффекты (константные, функциональные или распределённые) для анализа мощности и поведения тестов.
ExperimentsЭксперименты
Оркестрируют многократные прогоны тестов, группируют результаты и строят визуализации (например, распределения p-values).

Ключевые особенности

То, что делает Aboba удобной для реальных экспериментов.

Простой API

Интуитивно понятный интерфейс для быстрого старта без глубоких знаний статистики.

Разнообразие тестов

Поддержка t-тестов, ANOVA и непараметрических тестов для разных типов данных.

Уменьшение дисперсии

Встроенные методы CUPED и стратификации для повышения точности измерений.

Анализ мощности

Симуляция эффектов для определения оптимального размера выборки до запуска теста.

Визуализация

Готовые графики и таблицы для наглядного представления результатов экспериментов.

Расширяемость

Модульная архитектура позволяет добавлять собственные компоненты и тесты.

Где использовать

Применение в реальных бизнес-сценариях.
Продуктовые тестыИнтерфейсы
Сравнение CTR разных версий кнопок, форм, лендингов. Определение оптимального дизайна.
МаркетингКампании
Оценка эффективности рекламных креативов, email-рассылок, промо-акций.
РекомендацииАлгоритмы
Тестирование разных алгоритмов рекомендаций на метриках конверсии и вовлечённости.
ЦенообразованиеМодели
Анализ реакции пользователей на разные ценовые стратегии и скидочные модели.

Обратная связь

Сообщите об ошибках, предложите улучшения или задайте вопросы.

Для ответа: @username или name@example.com