Описание работы алгоритмов сервиса Proba
Классические АБ-тесты с поправкой на множественное тестирование:
  • Реализуются на любые метрики
  • Определяется необходимое число юзеров в группы
  • Для конверсии используется z-test для пропорций, для ARPU - тест Стьюдента в случае нормальности выборок (или хотя бы нормальности средних). Универсальный метод проверки - бутстрапированные доверительные интервалы для разницы средних. Также в случае нарушения нормальности распределений для ARPU можно воспользоваться тестом Манна-Уитни-Уилкоксона.
  • Если доверительный интервал для разницы включает в себя 0, то статистических различий нет.
  • Вывод делаем 1 раз (нельзя подглядывать)
  • Если вариантов больше двух, то используем поправку множественного тестирования

Классический байесовский алгоритм:
  • Реализуется на конверсию (на данный момент) и на ARPU (в будущем)
  • Собираем выборку из пользователей (примерно в 1.5 - 2 раза меньше, чем для обычного теста)
  • Распределяем пользователей поровну в каждую группу
  • Вероятность конверсии каждого варианта априорно задается бета-распределением с параметрами (1,1)
  • После окончания эксперимента пересчитываем распределения вероятности конверсий и считаем вероятность превосходства
  • Вывод делаем 1 раз (нельзя подглядывать)
  • Если вероятность превосходства выше заданного порога (тут клиент вправе его выбрать сам, либо воспользоваться нашими подсказками), то определяем победителя

Байесовский тест с остановкой:
  • Реализуется на конверсию (на данный момент) и на ARPU (в будущем)
  • Не определяем число юзеров заранее
  • Распределяем пользователей поровну в каждую группу
  • Используем байесовскую статистику пересчета вероятностей (как в алгоритме 2)
  • Можем остановить в любой момент при достижении определенных пороговых значений выбранных критериев
  • Примеры критерия: вероятность превосходства в каком-то варианте достигла 95%, ожидаемые потери выбора контрольного варианта 0,5%, достоверные интервалы для разницы перестали включать в себя нулевое значение
  • Вопреки рекомендациям многих сервисов, подглядывать (прерывать тест раньше заданного времени) нужно аккуратно, чтобы не словить FP (false positive) - обнаружить эффект там, где его нет (например, найти победителя в А/А тесте). Для этого нужно ориентироваться на число юзеров, накопленное в ходе эксперимента и сравнивать его с необходимым количеством пользователей для обнаружения минимального эффекта из классических тестов.

Алгоритм Томпсона для многоруких бандитов:
  • Не определяем число юзеров заранее
  • Реализуются только на конверсию (для ARPU результаты могут быть нестабильны -> будем часто ошибаться при выборе победителя)
  • Распределяем юзеров в ходе эксперимента пропорционально вероятностям превосходства, которые определяются аналогично алгоритмам 2 и 3.
  • Останавливаем эксперимент аналогично алгоритму 3

Как сопоставляются алгоритмы между собой (по убыванию показателя)
  • Надежность выводов (мы четко знаем, в каком % случаев мы совершаем ошибки): 1 > 2 > 3 > 4
  • Интерпретируемость выводов: 4/3/2 > 1 (байесовская статистика позволяет получать более интерпретируемые результаты)
  • Гибкость тестов: 3 > 4 > 2 > 1
  • Сложность реализации: 4 > 3 > 2 > 1
  • Скорость реализации (самый быстрый): 1 > 2 > 3 > 4