Когда деньги — это основная метрика в А/Б-тесте

Колонка Виталия Черемисинова, Head of data unit в AIC

При планировании эксперимента важный этап — cформировать и приоритизировать метрики. Принято считать, что эксперимент должен валидироваться большим количеством метрик (что крайне разумно) и одна из них — деньги, является наиболее сложным предметом для исследования.

Предположим, один большой интернет-магазин решил протестировать новую рекомендательную систему товаров. Ее основная задача — увеличивать выручку с корзины одного пользователя, то есть сделать так, чтобы пользователь покупал больше товаров за одну транзакцию.

Такой эксперимент можно проанализировать большим количеством метрик, но прежде всего в таком эксперименте нас интересуют деньги, и тут начинаются сложности.

Распределение выручки выглядит так:

1_ZJ8gf81HjUZMBZIrrARwAw.png

Видно по графику, что данные далеки от нормального распределения, следовательно, посчитать на нем среднее значение проблемно — очень сильно влияет длинный хвост из значений, которые редко встречаются, но вносят большой вклад.

При этом, нам необходимо посмотреть размер среднего чека и ответить на вопрос, есть ли статистически значимое различие.

Вариант 1: ранги

Самый популярный способ оценить эксперимент на двух ненормально распределенных выборках — это использовать непараметрические ранговые критерии. Один из них — критерий Манна-Уитни.

Если коротко описать этот критерий, то работает он так:

  1. Объедините все данные в единый ряд, пометив те из них, которые принадлежат разным выборкам.
  2. Проранжируйте значения, приписывая меньшему значению меньший ранг.
  3. Подсчитайте сумму рангов отдельно для каждой выборки.
  4. Определите большую из двух ранговых сумм.
  5. Определите значение U по формуле:
0_jkoNbSI6AlBqA-Qa.png

Теперь еще раз подумаем. Мы сравниваем не средний чек, а медиану рангов. Интерпретация этого критерия не очень удобна и не отвечает на поставленный бизнесом вопрос — как изменился средний чек от внедрения рекомендательной системы. Учитывая, что нулевая гипотеза данного критерия не позволяет нам проверить гипотезу о среднем чеке, этот метод нам не подойдет, идем дальше.

Вариант 2: трансформация

Когда мы говорим о сравнении средних, почти сразу на ум приходит критерий Стьюдента, и его очень просто описать так:

1_V5OG01oJwwZpI_8MXyxfGw.png

Разность средних мы делим на шум в данных (дисперсию).

Критерий Стьюдента — один из самых популярных критериев из параметрического семейства. Но мы не можем его использовать на изначальных данных. Ненормальное распределение даст большой дисбаланс в среднее и шум (дисперсия) сделает неточным результат применения критерия.

Но мы можем попробовать использовать методы трансформации данных. Например, взять логарифм от выручки и посмотреть, что будет с распределением. При этом логарифм не панацея. Можно использовать метод Бокса-Кокса для поиска оптимального способа трансформации данных к нормальным.

1_aLS6rkCullwkksxKkAsYzw.png

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

Но есть нюанс — теперь мы работаем не с метрикой, а с log-метрикой и все дальнейшие выводы будем делать на этом уровне. Вывести из-под логарифма и оставить такой же вывод мы не можем, так как у нас изменится размерность данных и все описательные статистики. То есть второй метод нам тоже не подходит.

Вариант 3: чистка данных

Как стабилизировать данные, чтобы было проще сравнить средние при помощи критерия? Почистить данные.

Можем убрать все значения, которые выходят за N стандартных отклонений от среднего и воспринимать их как выбросы. Отрезав эти выбросы, мы стабилизируем выборку, что позволит проще посчитать метрики.

1_d0y2RbGHn1oiUrsW1evHMg.png

Но в этом случае мы можем потерять большое количество наблюдений, что может сильно изменить результат эксперимента.Такой вариант нам тоже не подойдет.

Что в итоге?

Разобравшись с популярными вариантами, которые скорее всего вам не подойдут, самое время подойти к подходящему. Будем делать bootstrap

1_2mlcmjMhboWn7Ts0bDX4iw.png

Из нашей выборки мы будем формировать подвыборки с возвращением, считать в них нужную метрику и класть обратно. После этого мы сможем построить точные квантильные доверительные интервалы, сравнить два средних чека и их отклонения.

1_oNr712zHGC203f_nX2lfsw.png

Данные не стали нормальными — мы их не трансформировали. За счет того, что мы многократно вычленяем среднее с возвращением, они сконцентрировались вокруг своего истинного среднего c отклонением.

Вывод сделать просто — мы получим две плотности вероятности для каждой ветки эксперимента и сможем сравнивать, как пересекаются эти плотности. Если у нас перекрываются 05 и 95 квантили, значит нет статистически значимой разницы.

1_deiQpYqI3mgElAXwiKsDdw.png

Это не единственная возможность работать с такими метриками. Еще можно использовать децильный анализ, стратификации и прочие методы увеличения чувствительности метрик, но это предмет для диалога в других статьях.

Команда мобильного сайта «М.Видео» увеличила конверсию на 2 процентных пункта с помощью A/B-тестов