Как выполнить тест соответствия хи-квадрат в Python
Введение
Исследователи данных часто используют статистические методы для проверки гипотез, чтобы получить ценную информацию из наборов данных. Несмотря на то, что существует множество статистических методов, в этой статье будет обсуждаться критерий соответствия хи-квадрат с его реализацией на Python. Критерий хи-квадрат подтверждает соответствие наблюдаемого распределения категориальных переменных ожидаемому распределению. Он сообщает нам, отличаются ли доступные значения событий от ожидаемых значений.
Тест хи-квадрат
Вы можете выполнить тест хи-квадрат, чтобы проверить распределение набора данных для наблюдаемых событий. Тест хи-квадрат делает некоторые предположения, а именно:
Переменные независимы.
Присутствует только один категориальный признак.
-
Каждая переменная должна содержать категории с более чем пятью частотами.
Случайно выбранный набор данных.
Каждая группа данных должна демонстрировать взаимоисключаемость при подсчете частот.
Статистика теста хи-квадрат
Тест хи-квадрат использует следующую формулу для получения статистических результатов:
Где
v обозначает степень свободы
O подразумевает выборочные наблюдаемые значения
E означает ожидаемые значения совокупности.
n указывает количество категорий переменных.
Теперь давайте узнаем, как мы можем выполнить тест хи-квадрат.
Этапы проверки гипотезы
Выполнение теста хи-квадрат состоит из нескольких шагов:
Сначала вам нужно создать нулевую гипотезу H0 и альтернативную гипотезу H1.
Затем вам нужно определить порог вероятности принятия или отклонения нулевой гипотезы. Типичное значение этого порога составляет 5%, а соответствующее критическое значение зависит от распределения.
Затем рассчитайте статистику хи-квадрат, используя приведенную выше формулу.
Наконец, вам нужно сравнить значение статистики теста с критическим значением. Если статика теста превышает критическое значение, мы отвергаем нулевую гипотезу; в противном случае мы не сможем отвергнуть нулевую гипотезу.
Давайте реализуем тест, используя вышеупомянутые шаги —
Здесь нулевая гипотеза заключается в том, что переменная распределяется заранее определенным образом. Альтернативная гипотеза — переменная, не распределяющаяся по-разному. Мы реализуем тест хи-квадрат с двумя подходами, обсуждаемыми ниже:
Реализация хи-квадрата со встроенной функцией
Синтаксис
chi_square_test_statistic, p_value = stats.chisquare(
experience_in_years, Salary)
Эта функция принимает два объекта, применяет к ним формулу хи-квадрат и возвращает статистику теста хи-квадрат и p_value.
Алгоритм
Загрузите необходимые зависимости, такие как scipy и numpy.
-
Передайте функции функции хи-квадрат scipy.stats, к которой вы хотите применить тестовую статистику.
Получите тестовую статистику и p_value.
Примите или отклоните нулевую и альтернативную гипотезу на основе значения p и статистики хи-квадрат.
Пример
Процесс начинается с загрузки всех необходимых зависимостей.
# importing packages
import scipy.stats as stats
import numpy as np
Давайте подготовим демонстрационные данные, в которых у нас будут два столбца «опыт_в_годах» и «зарплата». Для этих данных мы будем выполнять тест хи-квадрат.
# No of years of experience of an employee
# Yearly Salary package in lakhs
experience_in_years= [8, 6, 10, 7, 8, 11, 9]
Salary= [9, 8, 11, 8, 10, 7, 6]
# Chi-Square Goodness of Fit Test
chi_square_test_statistic, p_value = stats.chisquare(
experience_in_years, Salary)
# chi square test statistic and p value
print('chi_square_test_statistic is : ' +
str(chi_square_test_statistic))
print('p_value : ' + str(p_value))
# find Chi-Square critical value
print(stats.chi2.ppf(1-0.05, df=6))
Объяснение
Приведенный выше код представляет собой реализацию теста хи-квадрат на Python с использованием встроенной функции в библиотеке Scipy. Метод хи-квадрат был импортирован из статистики, которая возвращает два значения: chi_square_test_statistic и p-value. Этот метод использует две функции: сравнивает обе переменные и применяет вышеупомянутую формулу хи-квадрат для расчета статистики хи-квадрат. Здесь мы сравниваем зависимость количества стажа в годах от годового пакета (оклада).
Выход
chi_square_test_statistic is : 5.0127344877344875
p_value : 0.542180861413329
12.591587243743977
Как мы видим здесь, значение p составляет 0,54, а критическое значение — 12,59. Статистика теста меньше критического значения, поэтому мы можем принять нулевую гипотезу и отклонить альтернативную гипотезу.
Реализация хи-квадрата с нуля
Синтаксис
chi_square_test_statistic1 = chi_square_test_statistic1 + \
(np.square(experience_in_years[i]-salary[i]))/salary[i]
Рассчитайте значение хи-квадрат каждого образца в наборе данных, используя вышеупомянутую формулу, и сложите их, чтобы получить окончательный результат.
Алгоритм
Загрузите необходимые зависимости, например numpy.
Инициализируйте переменную со значением 0, в которой будет храниться окончательное значение статистики.
Переберите каждую выборку данных, вычислите статистику для каждой выборки и добавьте ее в переменную, содержащую окончательное значение статистики.
После расчета статистики примите или отклоните нулевую и альтернативную гипотезу.
Пример
Этот подход позволит реализовать критерий соответствия хи-квадрат с использованием формулы. Этот метод даст те же результаты, что и описанный выше метод.
import scipy.stats as stats
import numpy as np
# No of years of experience of an employee
# Yearly Salary package in lakhs
experience_in_years= [8, 6, 10, 7, 8, 11, 9]
salary= [9, 8, 11, 8, 10, 7, 6]
# determining chi square goodness of fit using formula
chi_square_test_statistic1 = 0
for i in range(len(experience_in_years)):
chi_square_test_statistic1 = chi_square_test_statistic1 + \
(np.square(experience_in_years[i]-salary[i]))/salary[i]
print('chi square value determined by formula : ' +
str(chi_square_test_statistic1))
# find Chi-Square critical value
print(stats.chi2.ppf(1-0.05, df=6))
Объяснение
Приведенный выше код был реализован на Python для выполнения теста хи-квадрат на тех же данных. В этом методе мы реализовали статистическую формулу хи-квадрат только на Python вместо импорта встроенного метода. Цикл for помогает перебирать наборы данных. Затем мы реализовали вышеупомянутую формулу с помощью NumPy и добавили оценку к предыдущей оценке, чтобы получить общую оценку для всего набора данных. Наконец, мы проверяем статистику хи-квадрат, полученную с помощью этого метода.
Выход
chi square value determined by formula : 5.0127344877344875
12.591587243743977
Как мы и ожидали, результаты такие же, как и полученные предыдущим методом. Этот результат также показывает, что мы не должны отвергать нулевую гипотезу, но можем отвергнуть альтернативную гипотезу.
Заключение
Мы узнали о тесте соответствия хи-квадрат и о том, как его реализовать с помощью Python. Подведем итог статьи несколькими ключевыми выводами:
Критерий хи-квадрат проверяет распределение наблюдаемой категориальной переменной с ожидаемым распределением переменной.
Критерий хи-квадрат делает некоторые предположения, включая только одну категориальную переменную, независимые переменные, как минимум пять уникальных категорий и данные, выбранные случайным образом.
Мы подводим итоги теста, принимая или отвергая нулевую гипотезу.
Пороговое значение должно быть меньше критического значения для принятия нулевой гипотезы.