Хи-квадрат тест — что это и когда применять
Коротко
Хи-квадрат (chi-squared, X2) — статистический критерий для проверки связи между категориальными переменными. Конверсия отличается на мобильных и десктопе? Распределение ответов в опросе соответствует ожидаемому? Хи-квадрат отвечает именно на такие вопросы. На собеседованиях аналитиков его спрашивают реже, чем p-value или A/B-тесты, но знать его нужно — особенно если работаете с категориальными данными.
Два типа хи-квадрат теста
Тест на независимость (Test of Independence)
Проверяет, есть ли связь между двумя категориальными переменными. Например: зависит ли конверсия (да/нет) от типа устройства (мобильное/десктоп)? Данные организуются в таблицу сопряжённости (contingency table).
| Конверсия | Нет конверсии | Всего | |
|---|---|---|---|
| Мобильное | 120 | 880 | 1000 |
| Десктоп | 180 | 820 | 1000 |
| Всего | 300 | 1700 | 2000 |
Нулевая гипотеза (H0): конверсия и тип устройства независимы — распределение конверсий одинаково для обоих устройств. Альтернативная гипотеза (H1): связь между переменными существует.
Тест согласия (Goodness of Fit)
Проверяет, соответствует ли наблюдаемое распределение ожидаемому. Например: распределены ли ответы в опросе равномерно по четырём вариантам? Ожидаете 25% на каждый вариант, а в реальности — 30%, 22%, 28%, 20%. Случайное отклонение или нет?
В продуктовой аналитике тест на независимость используется значительно чаще, поэтому дальше сосредоточимся на нём.
Как работает хи-квадрат: ожидаемые vs наблюдаемые частоты
Идея проста: сравниваем то, что мы наблюдаем в данных (observed), с тем, что ожидали бы при отсутствии связи (expected).
Ожидаемая частота для каждой ячейки таблицы:
E = (сумма строки * сумма столбца) / общая суммаДля ячейки «мобильное + конверсия»: E = (1000 * 300) / 2000 = 150. Если бы устройство не влияло на конверсию, мы ожидали бы 150 конверсий с мобильных, а не 120.
Статистика хи-квадрат:
X2 = SUM((O - E)^2 / E)Суммируем по всем ячейкам таблицы. Чем больше наблюдаемые значения отклоняются от ожидаемых, тем больше X2. Большое X2 означает, что данные плохо совместимы с гипотезой о независимости.
Рассчитаем для нашего примера:
| Ячейка | O | E | (O-E)^2/E |
|---|---|---|---|
| Моб + конв | 120 | 150 | 6.00 |
| Моб + нет | 880 | 850 | 1.06 |
| Деск + конв | 180 | 150 | 6.00 |
| Деск + нет | 820 | 850 | 1.06 |
X2 = 6.00 + 1.06 + 6.00 + 1.06 = 14.12. Число степеней свободы df = (строки - 1) * (столбцы - 1) = 1. При df = 1 критическое значение для alpha = 0.05 — 3.84. Наше X2 = 14.12 значительно больше, p-value < 0.001. Вывод: конверсия статистически значимо зависит от типа устройства.
Python: хи-квадрат тест
import numpy as np
from scipy.stats import chi2_contingency
# Таблица сопряжённости: строки — устройство, столбцы — конверсия
# конверсия нет конверсии
observed = np.array([[120, 880], # мобильное
[180, 820]]) # десктоп
chi2, p_value, dof, expected = chi2_contingency(observed)
print(f"X2 = {chi2:.2f}")
print(f"p-value = {p_value:.4f}")
print(f"Степени свободы: {dof}")
print(f"Ожидаемые частоты:\n{expected}")
# X2 = 14.12
# p-value = 0.0002
# Степени свободы: 1
# Ожидаемые частоты:
# [[150. 850.]
# [150. 850.]]chi2_contingency по умолчанию применяет поправку Йейтса (Yates' correction) для таблиц 2x2. Чтобы отключить: chi2_contingency(observed, correction=False).
Когда применять хи-квадрат
Подходит:
- Обе переменные категориальные (пол, устройство, тарифный план, вариант A/B-теста)
- Сравнение распределений конверсий, кликов, ответов по группам
- A/B-тест с бинарной метрикой: конверсия в покупку, клик по кнопке, подписка
- Проверка SRM (Sample Ratio Mismatch) — перекос распределения пользователей по группам
Не подходит:
- Сравнение средних (средний чек, время на сайте) — используйте t-тест
- Непрерывные переменные — без категоризации хи-квадрат не работает
- Парные наблюдения (до/после для одного пользователя) — нужен тест Макнемара
Условия применимости
- Ожидаемые частоты >= 5 в каждой ячейке. Если в какой-то ячейке E < 5, тест ненадёжен. Решение: объедините категории или используйте точный тест Фишера.
- Наблюдения независимы. Каждый пользователь попадает только в одну ячейку таблицы.
- Достаточный размер выборки. Хи-квадрат — асимптотический тест: работает хорошо на больших выборках, ненадёжен на малых.
Хи-квадрат и A/B-тесты
В A/B-тестировании хи-квадрат применяется для сравнения бинарных метрик: конверсия, клик, подписка. Таблица сопряжённости — 2x2: строки — группа (A/B), столбцы — исход (конверсия/нет).
На практике для A/B-тестов с бинарной метрикой чаще используют z-тест для долей, который математически эквивалентен хи-квадрат тесту при таблице 2x2 (X2 = z^2). Результат одинаковый, но z-тест позволяет строить односторонние тесты и доверительные интервалы для разности долей.
Ещё одно применение: проверка SRM. Если в тесте 50/50 распределение, а в группе A — 51 200 пользователей, а в B — 48 800, хи-квадрат покажет, случайный ли это перекос. При p < 0.05 — с рандомизацией что-то не так, и результатам теста доверять нельзя.
Вопросы с собеседований
1. Что такое хи-квадрат тест и когда его применять?
Хи-квадрат — критерий для проверки связи между категориальными переменными. Применяется когда обе переменные категориальные: например, тип устройства и факт конверсии. Сравнивает наблюдаемые частоты с ожидаемыми при независимости переменных. Большое значение X2 говорит о наличии связи.
2. Чем хи-квадрат отличается от t-теста?
Хи-квадрат — для категориальных переменных (сравнение частот). T-тест — для непрерывных (сравнение средних). Конверсия (да/нет) по группам — хи-квадрат. Средний чек по группам — t-тест.
3. Что делать, если ожидаемая частота в ячейке меньше 5?
Хи-квадрат тест становится ненадёжным. Варианты: объединить редкие категории, использовать точный тест Фишера (для таблиц 2x2) или увеличить выборку.
4. Как хи-квадрат связан с A/B-тестированием?
В A/B-тестах с бинарной метрикой хи-квадрат проверяет, отличается ли конверсия между группами. Для таблицы 2x2 хи-квадрат эквивалентен z-тесту для долей: X2 = z^2. Также хи-квадрат используется для проверки SRM — перекоса в распределении пользователей по группам.
5. В чём разница между тестом на независимость и тестом согласия?
Тест на независимость проверяет связь между двумя категориальными переменными (таблица сопряжённости). Тест согласия проверяет, соответствует ли наблюдаемое распределение одной переменной теоретическому. Оба используют одну и ту же статистику X2, но задачи разные.
Потренируйтесь решать задачи по статистике и A/B-тестам в тренажёре Карьерник — 1500+ вопросов для подготовки к собеседованию аналитика.
FAQ
Что такое хи-квадрат тест простыми словами?
Хи-квадрат тест проверяет, есть ли связь между категориальными переменными. Он сравнивает наблюдаемые частоты с теми, которые ожидались бы при отсутствии связи. Если расхождение большое, связь статистически значима.
Когда нельзя использовать хи-квадрат тест?
Нельзя использовать при ожидаемых частотах меньше 5 в какой-либо ячейке, для сравнения средних значений (нужен t-тест) и для парных наблюдений (нужен тест Макнемара). Также не подходит для непрерывных переменных без категоризации.
Чем хи-квадрат тест отличается от z-теста для долей?
Для таблицы 2x2 — ничем: X2 = z^2, p-value одинаковое. Но z-тест позволяет строить односторонние тесты и доверительные интервалы для разности долей. Хи-квадрат обобщается на таблицы любого размера (3x4, 5x2 и т.д.).
Как проверить условие применимости хи-квадрат теста?
Посчитайте ожидаемые частоты для каждой ячейки: E = (сумма строки * сумма столбца) / общая сумма. Все E должны быть >= 5. В Python chi2_contingency возвращает массив ожидаемых частот — проверьте expected.min() >= 5.