Критерий Пирсона, он же критерий хи-квадрат (χ²), проверяет, случайно ли наблюдаемые частоты отличаются от ожидаемых. Для каждой категории берёте разницу между фактом и ожиданием, возводите в квадрат, делите на ожидание и всё складываете. Сумму сравниваете с критическим значением для своего числа степеней свободы или смотрите на p-значение: если p меньше 0,05, расхождение считают неслучайным.
Не путайте его с коэффициентом корреляции Пирсона. Корреляция меряет связь двух числовых величин, например роста и веса, и про неё у нас есть отдельный разбор корреляции. Хи-квадрат работает с категориями и их количеством: грани кубика, «купил» и «не купил», варианты ответа в анкете.
Две задачи, которые решает критерий хи-квадрат

Карл Пирсон описал критерий в статье 1900 года в журнале Philosophical Magazine. Сейчас им решают две разные задачи. Формула у них одна, а ожидаемые частоты и степени свободы считаются по-разному.
| Задача | Какой вопрос | Откуда ожидаемые частоты | Степени свободы |
|---|---|---|---|
| Критерий согласия | Соответствуют ли данные заданному распределению | Из теоретических вероятностей: n × pi | k − 1 − m |
| Критерий независимости | Связаны ли два категориальных признака | Из итогов таблицы сопряжённости: итог строки × итог столбца / n | (r − 1) × (c − 1) |
Здесь k означает число категорий, m показывает, сколько параметров распределения вы оценили по той же выборке, а r и c равны числу строк и столбцов таблицы.
Задача на согласие: честный ли кубик, подчиняются ли данные нормальному закону. Задача на независимость: зависит ли покупка от версии лендинга в A/B-тесте, по-разному ли отвечают на анкету мужчины и женщины. Обе встречаются в работе статистика и аналитика, а учат им на курсах по анализу данных.
Формула критерия Пирсона и степени свободы
χ² = Σ (O − E)² / E
O — наблюдаемая (фактическая) частота в ячейке
E — ожидаемая частота в той же ячейке
Чем больше χ², тем сильнее данные расходятся с нулевой гипотезой. Ноль получается, только когда факт совпадает с ожиданием в каждой ячейке.
Степени свободы показывают, сколько ячеек могут меняться свободно при заданных итогах. Для критерия согласия это число категорий минус единица минус число параметров, оценённых по выборке. Проверяете нормальность и берёте среднее и стандартное отклонение из тех же данных? Вычитайте ещё два. Так же считает справочник NIST по инженерной статистике.
Для таблицы сопряжённости правило проще: (строки − 1) × (столбцы − 1). Его же приводит справка Microsoft по функции ХИ2.ТЕСТ.
Критические значения для уровней значимости 0,05 и 0,01 мы посчитали функцией chi2.ppf из SciPy:
| Степени свободы | α = 0,05 | α = 0,01 |
|---|---|---|
| 1 | 3,84 | 6,63 |
| 2 | 5,99 | 9,21 |
| 3 | 7,81 | 11,34 |
| 4 | 9,49 | 13,28 |
| 5 | 11,07 | 15,09 |
| 6 | 12,59 | 16,81 |
| 7 | 14,07 | 18,48 |
| 8 | 15,51 | 20,09 |
| 9 | 16,92 | 21,67 |
| 10 | 18,31 | 23,21 |
Если ваш χ² больше числа из таблицы, нулевую гипотезу отвергают.
Канал основателя Checkroi Вани Буявца3 700 человек читают мой Телеграм-канал про нейросетиСобрал промпты для Claude Code и ChatGPT, разборы ИИ-инструментов и лайфхаки по продвижению бизнеса в одном местеПрисоединитьсяКак посчитать критерий Пирсона вручную

Возьмём кубик, который бросили 120 раз. Если он честный, каждая грань должна выпасть примерно 20 раз. Такие броски легко смоделировать самому модулем random в Python и посмотреть, как χ² ведёт себя на честных данных.
- Сформулируйте гипотезы. H0: кубик честный, все грани равновероятны. H1: какие-то грани выпадают чаще других.
- Выберите уровень значимости до расчёта. Чаще всего берут α = 0,05.
- Посчитайте ожидаемые частоты: 120 / 6 = 20 для каждой грани.
- Для каждой грани посчитайте (O − E)² / E и сложите результаты.
- Найдите степени свободы: 6 − 1 = 5.
- Сравните сумму с критическим значением из таблицы выше.
| Грань | Выпало (O) | Ожидали (E) | (O − E)² / E |
|---|---|---|---|
| 1 | 25 | 20 | 1,25 |
| 2 | 17 | 20 | 0,45 |
| 3 | 15 | 20 | 1,25 |
| 4 | 23 | 20 | 0,45 |
| 5 | 24 | 20 | 0,80 |
| 6 | 16 | 20 | 0,80 |
| Итого | 120 | 120 | 5,00 |
Получилось χ² = 5,0. Критическое значение для пяти степеней свободы и α = 0,05 равно 11,07. Пять меньше 11,07, значит, оснований считать кубик нечестным нет. Точное p-значение здесь 0,416.
Обратите внимание на формулировку. Тест не доказал, что кубик честный. Он только не нашёл расхождения, которое трудно списать на случай, а небольшой перекос на 120 бросках вполне может пропустить. С корреляцией история та же: нулевой коэффициент не доказывает, что связи нет, об этом подробнее в разборе корреляции.
Пример с таблицей сопряжённости: A/B-тест лендинга

Две версии лендинга получили по 1 000 посетителей. На версии А купили 120 человек, на версии Б 150. Разница в три процентных пункта настоящая или случайная?
| Купили | Не купили | Итого | |
|---|---|---|---|
| Лендинг А | 120 | 880 | 1 000 |
| Лендинг Б | 150 | 850 | 1 000 |
| Итого | 270 | 1 730 | 2 000 |
Ожидаемая частота ячейки = итог строки × итог столбца / общий итог. Для «купили» на лендинге А это 1 000 × 270 / 2 000 = 135. Так же получаются остальные три ячейки: 865, 135 и 865.
χ² = (120 − 135)²/135 + (880 − 865)²/865 + (150 − 135)²/135 + (850 − 865)²/865
= 1,667 + 0,260 + 1,667 + 0,260 = 3,85
Степень свободы одна: (2 − 1) × (2 − 1). Критическое значение 3,84, наш χ² = 3,85 чуть больше, p = 0,0496. Формально различие значимо.
Но для таблиц 2 × 2 часто применяют поправку Йетса на непрерывность: каждое наблюдаемое значение сдвигают на 0,5 к ожидаемому. С ней χ² = 3,60, p = 0,058, и вывод меняется на противоположный.
По такому пограничному результату мы бы не объявляли победу лендинга Б: честнее продолжить тест и набрать ещё посетителей. Как не обмануться на результатах, мы подробно разобрали в статье про A/B-тестирование.
Как рассчитать критерий Пирсона в Excel
В Excel для хи-квадрата есть три функции, и важно не перепутать, что каждая возвращает.
| Функция | Что возвращает | Пример для кубика |
|---|---|---|
| ХИ2.ТЕСТ(фактический_интервал;ожидаемый_интервал) | p-значение, а не сам χ² | =ХИ2.ТЕСТ(B2:G2;B3:G3) → 0,416 |
| ХИ2.ОБР.ПХ(вероятность;степени_свободы) | критическое значение | =ХИ2.ОБР.ПХ(0,05;5) → 11,07 |
| ХИ2.РАСП.ПХ(x;степени_свободы) | p-значение для готового χ² | =ХИ2.РАСП.ПХ(5;5) → 0,416 |
Порядок действий для кубика:
- В строку 1 впишите номера граней, в строку 2 фактические частоты, ячейки B2:G2.
- В B3 введите ожидаемую частоту
=СУММ($B$2:$G$2)/6и протяните формулу до G3. - В свободную ячейку введите
=ХИ2.ТЕСТ(B2:G2;B3:G3), получится около 0,416. - Если нужен сам χ², посчитайте его формулой
=СУММПРОИЗВ((B2:G2-B3:G3)^2/B3:G3), выйдет 5.
Две ловушки. Ожидаемые частоты Excel сам не считает, для таблицы сопряжённости их надо вывести формулой «итог строки × итог столбца / общий итог». А в формуле из справки по ХИ2.ТЕСТ нет поправки Йетса, поэтому для A/B-примера функция покажет вариант без поправки.
Перед расчётом полезно посмотреть на данные глазами. Постройте гистограмму в Excel, и сильный перекос станет виден ещё до всяких формул.
Критерий Пирсона в Python: chisquare и chi2_contingency
В Python хи-квадрат считают библиотекой SciPy. Поставьте её командой pip install scipy, лучше в виртуальном окружении.
Критерий согласия считает функция scipy.stats.chisquare:
from scipy.stats import chisquare
observed = [25, 17, 15, 23, 24, 16] # сколько раз выпала каждая грань
expected = [20, 20, 20, 20, 20, 20] # честный кубик: 120 / 6
stat, p = chisquare(observed, expected)
print(f"хи-квадрат = {stat:.2f}, p = {p:.3f}")
хи-квадрат = 5.00, p = 0.416
Если ожидаемые частоты не передать, функция считает категории равновероятными, для кубика результат будет тем же. Оценивали параметры распределения по выборке? Укажите их число в аргументе ddof, и степеней свободы станет k − 1 − ddof.
Для таблицы сопряжённости есть scipy.stats.chi2_contingency. Ожидаемые частоты и степени свободы она находит сама:
from scipy.stats import chi2_contingency
# купили не купили
table = [[120, 880], # лендинг А
[150, 850]] # лендинг Б
res = chi2_contingency(table)
print(f"хи-квадрат = {res.statistic:.2f}, p = {res.pvalue:.3f}, df = {res.dof}")
print("ожидаемые частоты:")
print(res.expected_freq)
res_raw = chi2_contingency(table, correction=False)
print(f"без поправки Йетса: хи-квадрат = {res_raw.statistic:.2f}, p = {res_raw.pvalue:.3f}")
хи-квадрат = 3.60, p = 0.058, df = 1
ожидаемые частоты:
[[135. 865.]
[135. 865.]]
без поправки Йетса: хи-квадрат = 3.85, p = 0.050
По умолчанию функция применяет поправку Йетса, когда степень свободы одна, так написано в документации SciPy. Поэтому Python и Excel на одной таблице 2 × 2 дают разные p, и ошибки здесь нет ни у того, ни у другого.
Силу связи покажет функция scipy.stats.contingency.association. Она умеет считать V Крамера и коэффициент сопряжённости Пирсона:
from scipy.stats.contingency import association
table = [[120, 880],
[150, 850]]
print(f"V Крамера = {association(table, method='cramer'):.3f}")
print(f"коэффициент сопряжённости Пирсона = {association(table, method='pearson'):.3f}")
V Крамера = 0.044
коэффициент сопряжённости Пирсона = 0.044
Оба коэффициента лежат между 0 и 1. Значение 0,044 близко к нулю, связь слабая. Если хотите считать такие вещи уверенно, начните с основ языка:
Частые ошибки и когда критерий не подходит
- Мало наблюдений в ячейках. В документации SciPy типичным правилом названы наблюдаемые и ожидаемые частоты не меньше 5 в каждой категории. В справке Microsoft осторожнее: «некоторые специалисты по статистике» считают, что ожидаемая частота должна быть от 5. Решение: объединить редкие категории, а для таблицы 2 × 2 взять точный критерий Фишера, в SciPy это fisher_exact.
- Проценты вместо количеств. χ² зависит от объёма выборки, поэтому доли и проценты в формуле дают неверную статистику. Решение: подставлять только абсолютные частоты.
- Одно наблюдение попадает в несколько ячеек. Критерий рассчитан на независимые наблюдения: один человек занимает одну ячейку. Если в анкете можно отметить несколько вариантов, обычный хи-квадрат к ней не подходит.
- Значимость путают с силой связи. В A/B-примере V Крамера 0,044, связь слабая даже при p около 0,05. На выборке в сотни тысяч человек значимым становится и крошечное расхождение.
- Не вычли оценённые параметры. Проверяя нормальность со средним и разбросом из той же выборки, отнимайте ещё две степени свободы. Иначе степеней свободы окажется больше, критическое значение выйдет завышенным, и расхождение с нормальным законом вы будете пропускать.
- Подогнали интервалы под ответ. Для непрерывных данных χ² зависит от того, как вы разбили значения на интервалы, это прямо отмечает NIST. Решение: выбрать интервалы до расчёта и больше их не трогать.
Где освоить статистику системно
Хи-квадрат лишь один из критериев, которые нужны аналитику. Рядом с ним стоят t-тест, дисперсионный анализ и регрессия, и без системы легко взять не тот метод. Если думаете о профессии, посмотрите план, как стать статистиком. Сравнить программы можно в каталоге курсов по статистике, пять из них ниже:
| Курс | Школа | Стоимость со скидкой | В рассрочку | Длительность | Обзор курса от Checkroi |
|---|---|---|---|---|---|
| Статистика и A/B-тестирование Перейти на сайт курса | 24 900 ₽ | 1658 ₽/мес. | 2 месяца | Обзор курса | |
| Теория вероятностей и математическая статистика Перейти на сайт курса | 15 000 ₽ | 417 ₽/мес. | 1 месяц | Обзор курса | |
| Основы практической статистики Перейти на сайт курса | 4800 ₽ | - | 14 дней | Обзор курса | |
| Экономика и статистика Перейти на сайт курса | 45 000 ₽ | 6250 ₽/мес. | 54 месяца | Обзор курса | |
| Профессиональная переподготовка «Медицинская статистика» Перейти на сайт курса | 21 500 ₽ | 3916 ₽/мес. | 288 часов | Обзор курса |
Больше программ — в полном каталоге курсов по статистике




