Поиск по сайту:

Как выполнить тест соответствия хи-квадрат в 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. Подведем итог статьи несколькими ключевыми выводами:

  • Критерий хи-квадрат проверяет распределение наблюдаемой категориальной переменной с ожидаемым распределением переменной.

  • Критерий хи-квадрат делает некоторые предположения, включая только одну категориальную переменную, независимые переменные, как минимум пять уникальных категорий и данные, выбранные случайным образом.

  • Мы подводим итоги теста, принимая или отвергая нулевую гипотезу.

  • Пороговое значение должно быть меньше критического значения для принятия нулевой гипотезы.

Статьи по данной тематике: