Непараметрические методы для A/B тестов. Считаем деньги

Когда мы говорим про метрики для A/B тестирования, то чаще всего приходит на ум измерение средних — конверсия, CTR и тп. Но не стоит забывать, что кроме средних значений, существуют еще и деньги. И когда мы говорим про транзакционный бизнес, то все-таки данная метрика является основной.
Итак, представим:
У нас есть dataframe со следующими значениями (для двух групп A и B, выборки независимы).
Перед тем, как применять тот или иной статистический метод, нам необходимо дать характеристику нашим данным. Например, чтобы использовать многим знакомый t критерий Стьюдента, данные должны подходить под следующие условия:
- Данные должны иметь Нормальное распределение. Методов, которые позволяют провести проверки на нормальность распределений, достаточно много. Один из самых используемых — это критерий Шапиро-Уилка. Наша задача — сравнивать теоретическое нормальное распределение с распределением наших наблюдаемых частот.
2. Дисперсии в наших выборках должны быть гомогенны. Если дисперсии в наших выборках не гомогенны, значит мы пытаемся сравнить то, что сравнивать в принципе нельзя (котов и слонов, например). Для проверки на гомогенность дисперсий можно использовать критерий Бартлета. Нулевая гипотеза при использовании данного критерия предполагает, что выборки взяты из генеральных совокупностей с одинаковой дисперсией. Если наши выборки n1=n2=….ni, можно использовать более простой в вычислениях критерий Кокрена. Оба критерия чувствительны к виду распределения.
Если нарушается одно из условий, параметрические методы мы использовать не можем.
Проверка данных на соблюдение условий
Проверяем нормальность распределения
Давайте проверим данные на проявление данных условий: построим qqplot и применим критерий Шапиро-Уилка.
Результаты построения qqplot
Как видно, форма наблюдаемых квантилей распределилась не под углом 45 градусов, и даже не близко к этому. Исходя из этого, мы делаем вывод, что данные не имеют нормального распределения, значит не выполняется одно из условий описанных выше. Для дополнительной гигиенической проверки выполним тест Шапиро-Уилка.
Результаты проверки на нормальность при помощи W критерия Шапиро-Уилка
Пара слов про критерий Шапиро-Уилка:
Нулевая гипотеза H0 теста Шапиро-Уилка заключается в том, что случайная величина, выборка x которой известна, распределена по нормальному закону. Альтернативная гипотеза H1 заключается в том, что закон распределения не является нормальным.
Что нам дал результат критерия Шапиро-Уилка:
Из результатов очевидно, что данные не имеют нормального распределения. Следовательно, мы можем смело использовать непараметрический метод оценки результатов.
Пара слов о том, как работает критерий
Необходимо провести следующие манипуляции с нашими данными:
Объединить все данные в единый ряд;
Подсчитать сумму рангов отдельно для каждой группы (как считать ранги будет показано ниже);
Определить значение U по формуле:
4. По таблице критических значений получаем P уровень значимости, который и будет показательной метрикой эксперимента.
Если у нас достаточно много данных, то это становится достаточно трудоемким процессом. Поэтому мы будем использовать данный метод в R, который имеет следующую функцию wilcox.test()
wilcox.test(var~per,data=rerrre)
После применения метода мы получаем следующие результаты:

А если больше двух групп?
Критерий Манна-Уитни работает только двувыборочно. В случае анализа A/B/C/n групп, необходимо использовать непараметрический дисперсионный анализ — критерий Краскела-Уоллиса .
Как и Манн-Уитни, критерий не чувствителен к форме распределения и описывается следующим образом:
Принцип получения рангов схож с принципов Манна-Уитни.
После нахождения H мы должны сравнивать его по таблице критических значений и получить показатель P. Как и при дисперсионном анализе, мы получим один H и один p-value. Для получения разницы между группами нам необходимо провести Post-hoc анализ. В R используется следующая функция для применения метода — kruskal.test().
Для того, чтобы понять, между какими группами есть значимая разница и насколько сильно она выражена, существует целый ряд непараметрических post hoc тестов. Большой набор готовых решений представлен в R пакетом PMCMR. Полная документация по ссылке.
Метод get.pvalues позволяет получить p-уровень значимости разницы попарного сравнения нескольких выборок методом posthoc.kruskal.dunn.test
Как видно на результатах, мы получаем р-уровень значимости для попарного сравнения групп эксперимента.
В этом методе используется тест Дана, который работает следующим образом:
Нулевая гипотеза для каждого попарного сравнения состоит в том, что вероятность наблюдения случайно выбранного значения из первой группы, которая больше, чем случайно выбранная.
значение из второй группы равно половине; эта нулевая гипотеза соответствует критерию ранговой суммы Уилкоксона-Манна-Уитни. Как обычный тест, если данные можно считать непрерывными и распределения предполагается одинаковыми за исключением разницы в местонахождении, тест Данна может быть понят как тест для медианной разницы.
Стоит отдельно заметить, что данный метод работает только однофакторно. Для многофакторного анализа он не подходит, но про это поговорим в другой статье.
Разумеется, непараметрические методы на этом не заканчиваются. Мы описали основы и надеемся, что эта статья будет полезна как начинающим, так и опытным специалистам по CRO и анализу данных.

