Одним из методов демонстрации взаимосвязи между двумя категориальными переменными является использование статистики хи-квадрат. В Python Scipy есть метод chisquare() для этой демонстрации в модуле scipy.stats.
Метод chisquare() проверяет нулевую гипотезу о том, что категориальные данные действительно имеют указанные частоты:
- Если наблюдаемые или ожидаемые частоты в каждой группе слишком низкие, этот тест недействителен. Согласно общему критерию, наблюдаемые и прогнозируемые частоты должны быть не менее 5.
Синтаксис:
scipy.stats.chisquare(f_obs, ddof=1, f_exp=None, axis=1)
Где параметры:
- f_obs (array_data): наблюдаемые частоты каждой категории.
- ddof() это «Дельта-степени свободы»: значения p-степеней свободы корректируются. Распределение хи-квадрат со степенями свободы k – 1 – ddof используется для расчета значения p, где k — количество наблюдаемых частот. ddof имеет значение по умолчанию 0.
- f_exp(): ожидаемые частоты в каждой категории. По умолчанию предполагается, что категории равновероятны.
- axis (int): тест должен применяться вдоль оси широковещательного результата f_obs и f_exp. Все значения в fobs считаются единым набором данных, если ось имеет значение None.
Метод возвращает chisq (статистику теста хи-квадрат) и значение p(значение p теста) типа ndarray или float.
Давайте рассмотрим пример, выполнив следующие шаги:
- Импортируйте необходимые библиотеки, используя приведенный ниже код Python.
from scipy import stats
- Теперь создайте массив и учтите, что f_obs указаны, прогнозируемые частоты предполагаются постоянными и представляют собой среднее из наблюдаемых частот. Используйте приведенный ниже код, чтобы вычислить хи-квадрат значений этого массива.
arr = [9,8,12,15,18] stats.chisquare(arr)
Посмотрите на приведенный выше вывод: мы рассчитали хи-квадрат или p-значение значений массива, используя метод chisqure() Python SciPY.
- Метод chi2-contingency()
- Таблица непредвиденных обстоятельств
- Категориальные переменные
- Нормальное распределение
- Проверка на соответствие
- P-значение
Метод chi2-contingency()
Критерий независимости хи-квадрат используется для проверки того, имеют ли две категориальные переменные значимую связь. В Python SciPy есть метод chi2-contingency() для такого рода тестов, который существует в модуле scipy.stats.
Синтаксис:
scipy.stats.chi2_contingency(observed, lambda_=None correction=False)
Где параметры:
- observed (array_data): таблица непредвиденных обстоятельств. Наблюдаемые частоты(количество случаев) каждой категории указаны в таблице.
- lambda_ (str или float): статистика хи-квадрат Пирсона является статистикой по умолчанию, вычисляемой в этом тесте. Вместо этого лямбда_ позволяет вам использовать статистику из семейства степенных расхождений Кресси-Рида.
- correction (логическое значение): применить поправку Йейтса для непрерывности, если значение True и степени свободы равны. Коррекция приводит к корректировке каждого наблюдаемого значения на 0,5 в направлении ожидаемого значения.
Метод chi2_contingency() возвращает chi (статистику теста), p (значение p теста), dof (степень свободы) и ожидаемое значение (ожидаемые частоты).
Давайте рассмотрим пример, выполнив следующие шаги:
- Импортируйте необходимые библиотеки, используя приведенный ниже код Python.
from scipy import stats
- Создайте массив, содержащий значения наблюдений, используя приведенный ниже код.
observation = np.array([[5, 5, 5], [8, 8, 8]])
Передайте наблюдение методу chi2_contengency() для проверки независимости переменных, используя приведенный ниже код.
stats.chi2_contingency(observation)
Таблица непредвиденных обстоятельств
В статистике таблица сопряженности (иногда называемая перекрестной таблицей) обобщает связи между несколькими категориальными переменными. Мы рассмотрим таблицу, показывающую количество мужчин и женщин, купивших различные виды фруктов.
Яблоко | манго | Банан | Клубника | |
женщины | 203 | 150 | 190 | 305 |
Мужчины | 195 | 170 | 250 | 400 |
сумма | 398 | 320 | 440 | 705 |
Цель теста — определить, связаны ли между собой две переменные: пол и предпочтение фруктов.
Начнем с формулировки нулевой гипотезы (H0), которая утверждает, что переменные не имеют никакой связи. Альтернативная гипотеза (H1) заключается в том, что между ними существует значительная связь.
Теперь мы будем использовать метод chi2_contingency() для проверки вышеуказанной гипотезы, выполнив следующие шаги:
- Импортируйте необходимые библиотеки, используя приведенный ниже код Python.
from scipy.stats import chi2_contingency
- Создайте таблицу, используя массив, который мы создали выше, используя приведенный ниже код.
tab_data = [[203, 150, 190, 305], [195, 170, 250, 400]]
- Выполните тест, используя метод chi2_contingency(), используя приведенный ниже код.
chi2_contingency(tab_data)
Из приведенного выше вывода мы видим, что значение p больше 0,5, что означает независимость между вышеуказанными переменными, полом и фруктами.
Категориальные переменные
Мы уже знаем о тесте хи-квадрат и о том, существует ли связь между двумя категориальными переменными или нет. Для выполнения этого теста мы использовали метод chisquare() модуля scipy.stats.
Давайте возьмем пример, выполнив следующие шаги, где наши данные будут категориальными:
- Импортируйте необходимые библиотеки, используя приведенный ниже код Python.
import numpy as np from scipy.stats import chisquare
- Создайте два типа данных: первый содержит данные о фактическом количестве часов, которые посетители проводят на веб-сайте «pythonguides.com», а другой — ожидаемое время, которое посетитель проводит на веб-сайте, используя приведенный ниже код.
obs_data = [3,8,6,5,7,10] exp_data = [4,6,7,8,1,2]
- Передайте эти два данных в метод chisquare(), чтобы проверить связь между этими двумя категориальными переменными, используя приведенный ниже код.
chisquare(obs_data,exp_data)
Глядя на приведенный выше вывод, нас интересует значение p, которое показывает связь между категориальными переменными, и значение p-значения составляет 9,380 с чем-то.
Значение p больше 0,5, что означает отсутствие связи между двумя вышеуказанными категориальными переменными.
Нормальное распределение
Здесь, в этом разделе, мы будем использовать метод chisquare() Python SciPy, чтобы проверить, принадлежит ли выборка к нормальному распределению или нет.
Давайте разберемся на примере, выполнив следующие шаги:
- Импортируйте необходимые библиотеки, используя приведенный ниже код Python.
from scipy import stats import numpy as np
- Сгенерируйте данные, содержащие значения нормального распределения, используя приведенный ниже код.
norm_data = np.random.normal(10,3,200)
- Выполните проверку нормальности, используя приведенный ниже код.
stats.chisquare(norm_data)
Из выходных данных мы видим, что значение p больше 0,5, что означает, что выборочные данные принадлежат к нормальному распределению.
Проверка на соответствие
Чтобы проверить, соответствует ли категориальная переменная прогнозируемому распределению, используется критерий соответствия хи-квадрат. В модуле scipy.stats есть метод chisquare().
Давайте рассмотрим пример, выполнив следующие шаги:
- Импортируйте необходимые библиотеки, используя приведенный ниже код Python.
from scipy.stats import chisquare
- Предположим, мы ожидаем одинаковое количество посетителей на нашем сайте pythonguides.com каждый день недели. Чтобы проверить это ожидание или гипотезу, количество клиентов, посещающих веб-сайт, фиксируется для каждого дня недели.
Создайте два массива для хранения количества посетителей на веб-сайте для ожидаемых и наблюдаемых посетителей, используя приведенный ниже код.
exp = [90, 90, 90, 90, 90] obs = [40, 70, 60, 50, 85]
- Критерий соответствия хи-квадрат — это то, что мы можем сделать с этими данными, чтобы проверить гипотезу. Используйте метод chisquare() и созданные выше массивы exp и obs.
chisquare(obs,exp)
Значение p для теста хи-квадрат составляет 2,53, а статистика теста хи-квадрат равна 60,36.
Помните, что нулевая и альтернативная гипотезы для теста соответствия хи-квадрат следующие:
- H0: Распределение переменной основано на гипотезе.
- H1: переменная отличается от ожидаемого распределения.
Мы можем отвергнуть нулевую гипотезу, поскольку значение p(2,53) больше 0,05. Если вы не знаете о гипотезе, прочитайте подраздел ниже «Р-значение теста хи-квадрат Python Scipy».
P-значение
Значение p используется для измерения значимости ваших результатов относительно нулевой гипотезы при выполнении тестов хи-квадрат.
Чтобы понять, как используется p-значение, нам нужно знать о гипотезе. Обоснованное предположение о чем-то в окружающем нас мире и есть гипотеза. Оно должно быть наблюдаемым или проверяемым.
Существует два вида гипотез:
- Нулевая гипотеза (H0): нулевая гипотеза теста всегда предсказывает отсутствие эффекта или связи между переменными.
- Альтернативная гипотеза (H1): альтернативная гипотеза — это заявление о том, что две измеримые переменные имеют некоторую статистическую значимость.
Теперь, когда мы знаем о нулевой гипотезе, следует ли нам принять нулевую или альтернативную гипотезу, такого рода решение можно принять, используя значение p:
- В общем, если ценность гипотезы меньше 0,5, это дает существенные доказательства против нулевой гипотезы, поскольку вероятность того, что нулевая гипотеза окажется верной, составляет менее 5%. В результате нулевая гипотеза отклоняется, тогда как альтернативная гипотеза принимается.
- Значение p, большее или равное 0,05, не является статистически значимым и предполагает сильную поддержку нулевой гипотезы. Это означает, что нулевая гипотеза сохраняется, а альтернативная гипотеза отклоняется.