Критерий хи-квадрат (Chi-Square Statistic) - Лена Капаца
Критерий хи-квадрат (Chi-Square Statistic) by Лена Капаца April 8, 2021

Критерий хи-квадрат (χ2, критерий согласия Пирсона) – это метрика, которая измеряет, насколько Модель (Model) сопоставима с фактическими наблюдаемыми данными. Вычисляется с помощью формулы:

$$χ_c^2 = \sum_{} \frac{(O_i - E_i)^2}{E_i}, где$$
$$c\space{–}\space{степень}\space{свободы,}$$
$$χ^2\space{–}\space{Критерий}\space{хи-квадрат,}$$
$$O_i\space{–}\space{реальное}\space{i-e}\space{наблюдение,}$$
$$E_i\space{–}\space{ожидаемое}\space{i-e}\space{наблюдение}$$

Данные, используемые при вычислении этой Статистики (Statistics), должны быть случайными, необработанными, взаимоисключающими, взятыми из независимых переменных и взятыми из достаточно большой Выборки (Sample). Например, результаты подбрасывания монеты соответствуют этим критериям.

При проверке гипотез часто используется критерий Хи-квадрат. Статистика сравнивает размер любых расхождений между ожидаемыми и фактическими результатами, учитывая размер выборки и количество переменных. Для этих тестов используются Степени свободы (Degrees of Freedom), чтобы определить, можно ли отклонить определенную Нулевую гипотезу (Null Hypothesis) на основе общего количества переменных и выборок в эксперименте. Как и в случае с любой другой статистикой, чем больше размер выборки, тем надежнее результаты.

Существует два основных вида тестов хи-квадрат: тест на независимость, который задает вопрос о взаимоотношениях, например: «Есть ли связь между полом студента и выбором курса?»; и тест согласия, который спрашивает что-то вроде «Насколько хорошо монета в моей руке соответствует теоретически "честной" монете?»

Независимость

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

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

Адекватность модели

Критерий Хи-квадрат предоставляет способ проверить, насколько хорошо выборка соответствует характеристикам Генеральной совокупности (Population). Мы не будем использовать выборку, если она не соответствует ожидаемым свойствам интересующей нас совокупности.

Пример. Рассмотрим воображаемую монету с вероятностью выпадения орла или решки ровно 50/50 и реальную монету, которую вы подбрасываете 100 раз. Если эта реальная монета имеет "справедливую" форму, то она также будет иметь равную вероятность приземления с обеих сторон, и ожидаемый результат подбрасывания монеты: орел выпадет 50 раз, и решка столько же. В этом случае критерий может сказать нам, насколько хорошо фактические результаты 100 подбрасываний монеты сравниваются с теоретической моделью, согласно которой честная монета даст результат 50/50. Фактический бросок может составить 50/50, 60/40 или даже 90/10. Чем дальше фактические результаты от 50/50, тем меньше соответствие этого набора бросков теоретическому ожиданию 50/50 и тем более вероятно, что эта монета на самом деле несправедлива.

Критерий Хи-квадрат и SciPy

Критерий можно вычислить с помощью функции SciPy. Для начала импортируем необходимые библиотеки:

import numpy as np

import scipy
from scipy.stats import chisquare

Инициируем множества X и y, которые являются Предикторами (Predictor Variable) и Целевой переменной (Target Variable) соответственно:

X = np.array([[1, 0, 0, 0, 1],
           [1, 1, 0, 1, 1],
           [1, 0, 0, 0, 0],
           [0, 0, 0, 0, 0],
           [0, 0, 0, 0, 1],
           [1, 0, 0, 0, 1],
           [1, 0, 1, 1, 1],
           [0, 1, 1, 0, 0],
           [1, 0, 1, 1, 1],
          [1, 1, 1, 1, 0]])
y = np.array([1, 0, 0, 0, 1, 1, 1, 1, 0, 1])

Переформатируем целевую переменную с помощью метода vstack()^ то есть превратим массивы 1-y и y в вертикальные массивы. Выполним Векторное перемножение (Dot Product) X и Y и посмотрим на результат:

Y = np.vstack([1 - y, y])
observed = np.dot(Y, X)
observed

Это наблюдаемые частоты признаков для каждого класса, то есть Таблица сопряжённости (Contingency Table):

array([[3, 1, 1, 2, 2],
       [4, 2, 3, 2, 4]])

Теперь вычислим ожидаемые значения:

feature_count = X.sum(axis = 0)
class_prob = Y.mean(axis = 1)
expected = np.dot(feature_count.reshape(-1, 1), class_prob.reshape(1, -1)).T
expected

Ожидаемые частоты выглядят так:

array([[2.8, 1.2, 1.6, 1.6, 2.4],
       [4.2, 1.8, 2.4, 2.4, 3.6]])

Наконец проведем тест Хи-квадрат, и для этого создадим два объекта score – результаты теста, и pvalP-значение (P-Value):

score, pval = chisquare(observed, expected)
score

Реальные записи довольно плохо соответствуют ожидаемым, и это легко заметить по среднему низкому значению теста. Интересно, что создатели предполагают отображение 8 знаков после запятой, потому третий элемент ряда, "закончившийся" после третьего знака, так забавно выглядит:

array([0.02380952, 0.05555556, 0.375     , 0.16666667, 0.11111111])

Ноутбук, не требующий дополнительной настройки на момент написания статьи, можно скачать здесь.

Автор оригинальной статьи: Adam Hayes

Фото: @onefabian

© Лена Капаца. Все права защищены.