Не все метрики это средние. Иногда сравнивают распределения по категориям (какой тариф выбирают), иногда данные такие кривые, что среднее теряет смысл. Для этого есть хи-квадрат, точный тест Фишера и ранговые тесты вроде Манна-Уитни.
Хи-квадрат: наблюдаемое против ожидаемого
Есть таблица сопряжённости: строки это группы, колонки это исходы.
| купил | не купил | |
|---|---|---|
| A | 120 | 880 |
| B | 150 | 850 |
Если группа не влияет на исход (H0: независимость), ожидаемое значение в ячейке:
E = (сумма строки × сумма колонки) / общий итог
Статистика:
χ² = Σ (O - E)² / E
Число степеней свободы: (строк - 1) × (колонок - 1). Для таблицы 2×2 это 1. Большое χ² значит, что наблюдаемое сильно отличается от ожидаемого при независимости.
Полезный факт: для таблицы 2×2 без поправки χ² равен квадрату z-статистики двухвыборочного z-теста долей. Это одна и та же проверка.
Где применяется:
- Тест независимости: связана ли платформа с выбором тарифа.
- Тест согласия: совпадает ли распределение с ожидаемым. Классика A/B это SRM-проверка: разделили трафик 50/50, а пришло 50 600 и 49 400. Хи-квадрат по одной строке против ожидаемых 50 000 и 50 000 показывает, случайно ли такое расхождение.
Ограничения: ожидаемые частоты в ячейках должны быть не слишком маленькими (правило: не меньше 5). Наблюдения должны быть независимы: один пользователь попадает в одну ячейку один раз.
Поправка Йейтса для 2×2 делает тест консервативнее. На больших выборках A/B она почти ничего не меняет, на маленьких лучше сразу взять Фишера.
Точный тест Фишера
Для маленьких таблиц 2×2 (единицы и десятки наблюдений) Фишер считает точную вероятность получить такую или более экстремальную таблицу при фиксированных итогах строк и колонок, без нормальной аппроксимации. На больших данных он медленный и даёт почти то же, что хи-квадрат.
Манна-Уитни: что он на самом деле проверяет
Тест Манна-Уитни (он же Уилкоксона для независимых выборок) работает с рангами: все наблюдения объединяют, сортируют и смотрят, чьи ранги в среднем выше.
Статистика U для группы A равна числу пар (a, b), где a > b, плюс половина ничьих. Если U близко к n_a × n_b / 2, группы перемешаны равномерно.
Главная ловушка собеса: Манна-Уитни не проверяет равенство медиан. Он проверяет, что случайное наблюдение из A с вероятностью 1/2 больше случайного из B (стохастическое равенство). Медианы могут быть одинаковыми, а тест значим (разная форма распределений), и наоборот. Как тест медиан его можно читать только при допущении, что распределения отличаются лишь сдвигом.
Почему это важно для A/B: бизнес обычно хочет знать, выросла ли средняя выручка на пользователя, потому что деньги складываются. Манна-Уитни может показать «значимо», когда среднее не изменилось или даже упало: например, больше людей стали покупать дёшево, а крупные покупки исчезли. Поэтому для денежных метрик чаще используют t-тест на больших выборках, бутстреп среднего или t-тест после винзоризации.
Где Манна-Уитни уместен: порядковые шкалы (оценки 1-5), маленькие выборки с выбросами, метрики, где интересен именно «типичный пользователь».
Ранги и ничьи
При большом числе одинаковых значений (например, 90% пользователей с нулевой выручкой) много ничьих. Ранговые тесты используют средние ранги и поправку на ничьи, но информативность падает: тест в основном сравнивает долю ненулевых.
Частые ошибки
- «Манна-Уитни сравнивает медианы».
- Хи-квадрат по событиям, а не по пользователям: наблюдения зависимы.
- Хи-квадрат при ожидаемых частотах 1-2 вместо Фишера.
- Переход на непараметрический тест «потому что данные не нормальные» при огромной выборке, где t-тест работает.
- Игнорирование SRM: если сплит сломан, результат теста нельзя интерпретировать.
Что спросят на собесе
- Как считается хи-квадрат и что такое ожидаемые частоты?
- Как проверить SRM?
- Что проверяет тест Манна-Уитни?
- Почему для выручки Манна-Уитни может ввести в заблуждение?
- Когда нужен точный тест Фишера?