Привет, Хабр! Меня зовут Евгений Узянов, я продуктовый аналитик в команде геймификации Купера (ex СберМаркет). Каждый месяц мы проводим десятки экспериментов на миллионах клиентов, чтобы улучшить опыт пользователей и экономику сервиса. Мы выдвигаем много гипотез, одновременно проводим большое количество тестов с разнообразной спецификой —  поэтому нам важно глубоко понимать процесс проверки гипотез и уметь разобрать эксперимент до атомов.

В этой статье поговорим про статистические критерии:

  • узнаем, что это такое

  • разберем, в чем их «физический смысл» 

  • посмотрим, для чего они используются, и что с ними делать

  • изучим часто встречающиеся на практике кейсы

Эта статья будет полезна для тех, кто начинает изучать AB-тестирование или хочет структурировать имеющиеся знания.

Когда я только начинал изучать методы количественного тестирования, я искал информацию в большом количестве источников: университетские лекции, онлайн-курсы, литература разной степени глубины и, конечно же, ютуб. В значительном количестве случаев при знакомстве с очередной статистикой информация преподносилась в следующем формате:

  1. Держи страшную формулу

  2. Вот какие-то графики с хвостами

  3. Ну а дальше все понятно

  4. Иди работай

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

Терминология

Сначала зафиксируем несколько важных понятий и разберем их на простых примерах.

Функция плотности распределения случайной величины в точке Х: для простоты будем считать, что это вероятность принятия случайной величиной значения Х.

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

Пример c кубиком

Допустим, мы рассматриваем идеальный игральный кубик: вероятность выпадения каждого из значений фиксирована и равна ⅙. Следовательно, если примем за Х значение кубика при произвольном броске, то наша функция плотности распределения величины Х будет выглядеть так:

F(x) = \begin{cases} 0, & \text{если х < 1} \\ 1/6, & \text{если х } \subset \text{ [1, 6], } x \in \mathbb{Z}\\ 0, & \text{если х > 6} \end{cases}

То есть вероятность принятия значений от 1 до 6 равна 1/6, а вероятность выпадения чисел меньше 1 или больше 6 равна нулю.

Пример со школьниками

Предположим, мы изучаем выборку из миллиона случайных школьников с точки зрения распределения роста: практика покажет, что есть некоторый “средний рост”, равный 165 см, который наиболее распространен в рассматриваемой выборке. Также выяснится, что вероятность того, что у произвольного ученика окажется любой другой рост, падает по мере отдаления выбранного роста от среднего. То есть школьников ростом 160 и 170 см будет меньше, чем 165-сантиметровых. А дети ростом 130 см или 2 метра будут встречаться еще реже.

Нормальное распределение миллиона школьников по росту
Нормальное распределение миллиона школьников по росту

Функция плотности такого распределения называется функцией Гаусса, или просто гауссианом. Формула, описывающая рассматриваемый выше пример, как правило, не оставляет желания изучить ее поглубже:

f(x) = \frac{1}{\sigma\sqrt{2\pi}} e^{-\frac{1}{2}\left(\frac{x-\mu}{\sigma}\right)^2}

Но все не так плохо, ведь множитель

a = \frac{1}{\sigma\sqrt{2\pi}} \\

— это всего лишь постоянная величина, отображающая максимальную высоту графика (когда степень экспоненты равна нулю). А степень экспоненты

b(x) = \left(\frac{x-\mu}{\sigma}\right)^2

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

  1. он минимален и равен нулю, когда рассматриваемый рост равен среднему

  2. чем сильнее рост отклоняется от среднего, тем больше коэффициент b, и тем меньше значение плотности для такой точки

  3. от μ зависит смещение графика относительно нуля

  4. от σ зависит «ширина» распределения

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

Функция распределения случайной величины: математическое правило, описывающее вероятность попадания случайной величины в интервал значений. Это определение связано с функцией плотности следующим образом: функция распределения — это интеграл от функции плотности ( то есть суммой плотности вероятности в каждой точке рассматриваемого интервала).

Пример с кубиком

Вернемся к примеру с игральным кубиком. Для такого случая функция распределения может выглядеть, например, как вероятность выпадения числа не больше определенного значения p (допустим, не больше четверки). Тогда формула распределения будет следующей:

\text{F(x) = F(x} \leq \text{p) =}  \begin{cases}  0, & \text{если х < 1} \\  \frac{p}{6}, & \text{если х } \subset \text{ [1, 6], } x \in \mathbb{Z}\\  0, & \text{если х > 6}  \end{cases} \\ \text{p - произвольное целое число от 1 до 6}

Например, вероятность того, что выпадет значение меньше или равное 3:

F(x) = F(x \leq 3) = \frac{3}{6} = 50\%

Это соответствует тому, что из 6 возможных исходов только 3 удовлетворяют условию x <= 3.

Пример со школьниками

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

F(x) = \frac{1}{\sigma\sqrt{2\pi}} \int_{-\infty}^{x} e^{-\frac{1}{2}\left(\frac{t-\mu}{\sigma}\right)^2} dt

Если мы хотим узнать вероятность, с которой произвольный выбранный школьник имеет рост не больше, чем 145 см, необходимо подставить в формулу выше следующие значения:

\text{x = 145, рост, ниже которого производится оценка} \\ \mu \text{= 165, средний рост по множеству} \\ \sigma \text{= 10, стандартное отклонение множества}

В результате получим вероятность около 2.3%.

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

Пример с кубиком

Возьмем случайную величину «значение, выпавшее на игральном кубике» и выдвинем следующую гипотезу:

кубик неисправен, и вероятность выпадения каждого из чисел не равна 1/6

Пример со школьниками

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

средний рост учащихся из двух выбранных классов одинаков

Статистический критерий (он же статистика и статистический тест): математическое правило, в соответствии с которым принимается или отвергается та или иная статистическая гипотеза с заданным уровнем значимости.

Для этого определения мы рассмотрим более подробные примеры ниже:

Критерий Стьюдента

Допустим, вы аналитик, к которому пришел менеджер продукта с новой фичей. Согласно гипотезе продакта, такое изменение гипотетически должно увеличить суммарную выручку с каждого клиента (ARPU).

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

Самое очевидное решение: сравнить средние значения суммарной выручки в каждой из групп. Но как в таком случае понять, насколько мала или велика полученная разница? Допустим, отличие составляет 17,5 рублей, как в таблице ниже — как интерпретировать такое значение?

Метрика

Контрольная группа

Тестовая группа

Абсолютная разница

ARPU

3048.1 рублей

3065.6 рублей

17.5 рублей

Насколько полученная разность выборочных средних значительна, будем оценивать исходя из стандартного отклонения разности выборочных средних — оно представляет собой меру разброса возможных значений разности средних выручек с клиента между тестовой и контрольной группой. Полученную оценку «значительности» назовем переменной t.

t = \frac{\bar x_{test} - \bar x_{control}}{\sigma_{\bar x_{test} - \bar x_{control}}}\\ \\ \bar x_{test} - \text{среднее ARPU в тестовой группе}\\ \bar x_{control} - \text{среднее ARPU в контрольной группе}\\ \sigma_{\bar x_{test} - \bar x_{control}} - \text{стандартное отклонение разности выборочных средних}
Еще раз и помедленнее

В проведенном выше эксперименте мы случайным образом выбрали из множества пользователей тестовую и контрольную группы, для которых посчитали разность выборочных средних значений. Если проведем такую операцию достаточно большое количество раз, получим распределение разности выборочных средних — то есть распределение случайной величины «разность ARPU между тестовой и контрольной группой».

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

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

t = \frac{\bar x_{test} - \bar x_{control}}{\sqrt{\frac{s_{test}^2}{n_{test}} + \frac{s_{control}^2}{n_{control}}}}\\ s_{test} - \text{стандартное отклонение в тестовой выборке}\\ s_{control} - \text{стандартное отклонение в контрольной выборке}\\ n_{test} - \text{кол-во элементов в тестовой выборке}\\ n_{control} - \text{кол-во элементов в контрольной выборке}

Поздравляем, мы только что изобрели критерий Стьюдента! Он используется в ситуациях, когда:

  • рассматриваются случайные нормально распределенные независимые величины,

  • стандартное отклонение генеральных совокупностей неизвестны,

  • сравниваемые выборки независимы, имеют одинаковое стандартное отклонение, а в каждой из них не менее 30 наблюдений.

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

Критерий Манна-Уитни

Допустим, мы столкнулись со следующей ситуацией: служба поддержки использовала новый скрипт для общения с клиентами. После этого собирали обратную связь от пользователей о качестве сервиса — от 1 до 10 баллов. Результаты получились следующими:

Старый скрипт

Новый скрипт

id пользователя

Оценка

id пользователя

Оценка

cc61bb00

3

e2192d0f

1

cffcc1c0-7

4

52aac80b

2

d5e2722a

5

fdfdebaa

2

973bf010

5

aec0dd98

3

488ebe02

6

75133ce6

3

15f659e0

7

6d0b7521

4

35ad5100

8

e1726c46

9

0f215aef

8

9d3916d2

9

9ef620b7

8

58c72449

9

1661987e

8

7af79d13

9

201a9ce0

9

37adf0a8

10

Как в такой ситуации выявить лучший скрипт?

Заметно, что данные не распределены нормально, а количество наблюдений слишком мало для применения критерия Стьюдента. В таком случае применимы непараметрические критерии. В качестве примера рассмотрим критерий Манна — Уитни. Он используется, когда:

  • есть две независимые выборки (большее количество рассматривается критерием Краскера — Уоллиса),

  • выборки ранжированы, а элементы упорядочены относительно друг друга,

  • в каждой выборке не меньше трех наблюдений.

Расчет состоит из нескольких шагов.

  1. Пронумеруем все значения в порядке возрастания.

    Старый скрипт

    Новый скрипт

    id

    Оценка

    Ранг

    id

    Оценка

    Ранг

    cc61bb00

    3

    5

    e2192d0f

    1

    1

    cffcc1c0-7

    4

    7.5

    52aac80b

    2

    2.5

    d5e2722a

    5

    9.5

    fdfdebaa

    2

    2.5

    973bf010

    5

    9.5

    aec0dd98

    3

    5

    488ebe02

    6

    11

    75133ce6

    3

    5

    15f659e0

    7

    12

    6d0b7521

    4

    7.5

    35ad5100

    8

    14.5

    e1726c46

    9

    19

    0f215aef

    8

    14.5

    9d3916d2

    9

    19

    9ef620b7

    8

    14.5

    58c72449

    9

    19

    1661987e

    8

    14.5

    7af79d13

    9

    19

    201a9ce0

    9

    19

    37adf0a8

    10

    22

    Когда встречаются несколько одинаковых значений, они нумеруются произвольно. Затем с каждым сопоставляется среднее значение среди таких рангов. Например, оценки, равные 3, имеют ранги 4 (клиент cc61bb00), 5 (клиент 52aac80b) и 6 (клиент fdfdebaa). Взяв среднее арифметическое по рангам одинаковых оценок, всем «тройкам» сопоставляется ранг «5».

  2. Для каждой группы произведем расчет суммы рангов.

    R_{1} = \sum_{i} {rank_{i_{1}}} \\ R_{2} = \sum_{i} {rank_{i_{2}}} \\ R_{1} - \text{сумма рангов группы со старым скриптом} \\ {rank_{i_{1}}} - \text{ранги оценок из группы со старым скриптом} \\ R_{2} - \text{сумма рангов группы с новым скриптом} \\ {rank_{i_{2}}} - \text{ранги оценок из группы с новым  скриптом}
  3. Основываясь на предположении, что гипотеза о равенстве медиан верна и элементы обеих выборок равномерно распределены между собой, для обеих групп посчитаем ожидаемую сумму рангов. Формулы ниже по сути представляют собой сумму арифметической прогрессии.

    E(R_1) = \frac{n_1(n+1)}{2} \\ E(R_2) = \frac{n_2(n+1)}{2} \\ n = n_1 + n_2 \\ n_1 = 10 - \text{кол-во элементов в группе со старым скриптом} \\ n_2 = 12 - \text{кол-во элементов в группе с новым скриптом} \\
  4. Добавим к ожидаемым рангам дополнительный коэффициент, равный общему числу пар элементов, которые можно образовать из элементов первой и второй выборок. При неравных размерах выборок (как в нашем случае) он помогает учитывает вклад большей выборки в общую сумму рангов и позволяет нам корректно оценить ожидаемую сумму рангов элементов меньшей выборки.

    E(R_1)_{norm} = n_1 * n_2 + E(R_1) \\ E(R_2)_{norm} = n_1 * n_2 + E(R_2) \\
  5. И, наконец, посчитаем критерий Манна-Уитни в переменной U.

    U_1 = E(R_1)_{norm} - R_1 \\ U_2 = E(R_2)_{norm} - R_2 \\ U = min(U_1, U_2)

Как видим, суть параметра U и рассматриваемого статтеста заключается в поиске минимального размера отклонения фактической суммы рангов от ожидаемой (т. е. Той, которая существовала бы при равномерном распределении рангов в группах).

Критерий Пирсона

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

Допустим, коллеги из маркетинга принесли вам данные ниже и попросили оперативно выяснить, есть ли связь между выдачей промокода на первый заказ в сервисе и оформлением второго заказа — то есть тем, возвращается ли клиент.

Сделали первый заказ с промокодом

Сделали первый заказ без промокода

Не вернулись в повторный заказ

60

300

Вернулись в повторный заказ

10

390

Для этого упрощенного случая хорошо применим критерий Пирсона (еще его называют критерием независимости хи-квадрат). Говоря простыми словами, эта статистика основывается на сравнении разницы между ожидаемыми и фактическими значениями в каждой ячейке таблицы. Наблюдаемые значения — те, которые мы просто получили на практике. Ожидаемые — те, которые мы ожидали бы увидеть, если бы переменные «факт выдачи промокода на первый заказ» и «факт возвращения в повторный заказ» были действительно независимыми.

Формула для критерия Пирсона выглядит так:

X^2 = \sum_{i, j} \frac{{(E_{ij} - O_{ij})}^2}{E_{ij}} \\ E_{ij} - \text{ожидаемое значение i-ой строке j-ом столбце}\\ O_{ij} - \text{наблюдаемое значение i-ой строке j-ом столбце}

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

Подробнее про расчеты

Для расчета ожидаемого значения в ячейке в строке i, столбце j используем формулу ниже:

E_{ij} = \frac{\text{(суммма i-ой строки)} * \text{(сумма j-го столбца)}}{\text{общая сумма всех ячеек}}

Например, для ячейки с индексами i=1 и j=1 (клиенты, которые сделали первый заказ с промокодом, но не вернулись в повторный заказ) ожидаемое значение будет выглядеть так:

E_{11} = \frac{\text{360} * \text{70}}{\text{760}} = 33.16

Таким образом, исходная таблица с ожидаемыми значениями будет выглядеть следующим образом:

Сделали первый заказ с промокодом

Сделали первый заказ без промокода

Не вернулись в повторный заказ

33.16

362.84

Вернулись в повторный заказ

36.84

363.16

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

X^2 = 45.474

Критерий Пирсона применяется в ситуациях, когда:

  • есть две выборки с независимыми наблюдениями,

  • в каждой из выборок не менее 30 наблюдений,

  • данные дискретны.

Что делать с полученным критерием?

Допустим, мы начали понимать, что лежит в механизмах некоторых критериев, а также научились считать их для ряда случаев. Конечно же, возникает вопрос: что дает посчитанное значение критерия? И как с его помощью оценивать уровень значимости принятия / отвержения гипотезы?

Для поиска ответа вернемся к примеру с критерием Стьюдента: предположим, t-значение равно нулю. Это означает, что средние выборочные значения метрик в тестовой и контрольной группах совпадают. В таком случае почти наверняка можно сказать, что отличий между группами нет. Увеличение значения критерия Стьюдента будет означать, что разность выборочных средних значений исследуемой метрики между тестом и контролем становится все больше по сравнению со стандартным отклонением разности выборочных средних. И поэтому чем больше значение t-критерия, тем меньше вероятность, что разность между группами случайна.

Таким образом, на качественном уровне значение критерия — это прокси-метрика значимости отличий между группами!

Чтобы проводить количественное соответствие между полученным значением статистики и значимостью отличий, используются специальные таблицы для соответствующего статистического критерия. В случае автоматизированного подхода используются функции специализированных библиотек, которые подбирают p-value под ваши выборки, степени свободы и посчитанное значение критерия.

Теперь я все знаю?

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

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

Product&data команда СберМаркета ведет соцсети с новостями и анонсами. Если хочешь узнать, что под капотом высоконагруженного e-commerce, следи за нами в Telegram и на YouTube. А также слушай подкаст «Для tech и этих» от наших it-менеджеров.

Комментарии (7)


  1. vtal007
    16.07.2024 13:32
    +2

    Спасибо!


  1. denisalpino
    16.07.2024 13:32
    +2

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

    Единственное, t-критерий применим не только к нормально распределенным данным, это ошибочное мнение. И t-критерий так же можно применять, если дисперсии выборок неравны, для этого пользуются распределением Уэлча. Метод ничем не отличается за исключением того, что нужно посчитать статистику Уэлча, которая передается параметром в распределение Стьюдента.

    Спасибо за статью!


    1. big_telescope Автор
      16.07.2024 13:32

      Спасибо, рад, что статья Вам понравилась!

      Насчет применимости критерия не только к нормально распределенным данным - согласен, написал свое утверждение для простоты повествования - применимость критерия для данных, распределенных ненормально, есть тонкая тема


  1. CitizenOfDreams
    16.07.2024 13:32

    Я только одного не понял - а нафига вы Сбермаркет-то переименовали? Из узнаваемого всеми бренда сделали что-то непонятное. У меня слово "Купер" в первую очередь ассоциируется с угонщиком самолетов и маркой автомобильных шин, и только потом доходит, что это так слово "купить" англифицировали, стильно-модно-молодежно.


  1. Lisichka_v_tufelkah
    16.07.2024 13:32
    +2

    Наконец доступное объяснение


  1. Frugalister
    16.07.2024 13:32

    В критерии Манн-Уитни, в 3 разделе на картинке с формулой, маленькая описка. n2 - должно быть во втором случае, но и без этого смысл в целом ясен.

    Спасибо за статью


    1. big_telescope Автор
      16.07.2024 13:32

      Спасибо, поправил!