Как выполнить F-тест в Python
Статистики используют F-тест, чтобы проверить, имеют ли два набора данных одинаковую дисперсию или нет. F-тест назван в честь сэра Рональда Фишера. Чтобы использовать F-тест, мы выдвигаем две гипотезы: нулевую гипотезу и одну альтернативную гипотезу. Затем мы выбираем любую из этих двух гипотез, одобренных F-тестом.
Дисперсия — это показатель распределения данных, позволяющий определить отклонение данных от среднего значения. Более высокие значения показывают большую дисперсию, чем меньшие значения.
В этой статье вы узнаете, как выполнить F-тест на языке программирования Python и варианты его использования.
F-Процесс тестирования
Процесс выполнения F-теста выглядит следующим образом:
Для начала определим нулевую и альтернативную гипотезы.
-
Нулевая гипотеза или H0: σ12=σ22 (дисперсии генеральной совокупности равны)
Альтернативная гипотеза или H1: σ12 ≠ σ22 (дисперсии популяций неравны)
Выберите статистику для тестирования.
Рассчитаем степени свободы популяций. Например, если m и n — формы населения, степень свободы обозначается как (df1)=m–1 и (df2)=n – 1 соответственно.
Теперь найдите значение F из F-таблицы.
Наконец, разделите значение альфа на 2 для двустороннего теста, чтобы вычислить критическое значение.
Таким образом, мы определяем значение F, используя степени свободы популяций. Мы читаем df1 в первой строке, а df2 в первом столбце.
Существуют различные таблицы F для уникальных видов степеней свободы. Мы сравниваем статистику F из шага 2 с критическим значением, рассчитанным на шаге 4. Затем мы можем отвергнуть нулевую гипотезу, если критическое значение меньше статистики F. Напротив, мы можем принять нулевую гипотезу, когда критическое значение превышает статистику F на каком-то значимом уровне.
Предположения
Перед выполнением F-теста на основе набора данных мы делаем некоторые предположения.
-
Совокупность данных соответствует нормальному распределению, т. е. соответствует колоколообразной кривой.
Выборки не коррелируют друг с другом, т. е. в популяции нет мультиколлинеарности.
Помимо этих предположений, мы также должны учитывать следующие ключевые моменты при выполнении F-теста:
Максимальное значение дисперсии должно быть в числителе для выполнения правостороннего теста.
Определите критическое значение после деления альфа на 2 в случае двустороннего теста.
Проверьте, есть ли у вас дисперсия или стандартные отклонения.
Если у вас нет степеней свободы в таблице F, используйте максимальное значение в качестве критического значения.
F-тест в Python
Синтаксис
scipy stats.f()
Параметры
x : quantiles
q : lower or upper tail probability
dfn, dfd shape parameters
loc :location parameter
scale : scale parameter (default=1)
size : random variate shape
moments : [‘mvsk’] letters, specifying which moments to compute
Объяснение
В этом методе пользователь должен передать f_value и итерируемую длину каждого массива в scipy.stats.f.cdf() и вычесть его с 1 для выполнения F-теста.
Алгоритм
Сначала импортируйте библиотеки NumPy и Scipy.stats для этой операции.
Затем создайте два списка случайно выбранных значений с двумя разными именами переменных, преобразуйте их в массивы NumPy и рассчитайте дисперсию каждого массива с помощью Numpy.
-
Определите функцию для расчета F-показателя, где сначала мы делим дисперсии массивов со степенью свободы, равной 1.
Затем вычислили повторяемую длину каждого массива, передали значение f (отношение дисперсий) и длины в функцию CDF и вычли это из 1, чтобы вычислить значение p.
Наконец, функция возвращает p_value и f_value.
Пример
import numpy as np
import scipy.stats
# Create data
group1 = [0.28, 0.2, 0.26, 0.28, 0.5]
group2 = [0.2, 0.23, 0.26, 0.21, 0.23]
# Converting the list to an array
x = np.array(group1)
y = np.array(group2)
# Calculate the variance of each group
print(np.var(group1), np.var(group2))
def f_test(group1, group2):
f = np.var(group1, ddof=1)/np.var(group2, ddof=1)
nun = x.size-1
dun = y.size-1
p_value = 1-scipy.stats.f.cdf(f, nun, dun)
return f, p_value
# perform F-test
f_test(x, y)
Выход
Variances: 0.010464 0.00042400000000000017
Вы можете заметить, что значение теста F составляет 4,38712, а соответствующее значение p равно 0,019127.
Мы откажемся от нулевой гипотезы, поскольку значение p меньше 0,05. Таким образом, мы можем сказать, что эти две популяции не имеют равных дисперсий.
Заключение
Прочитав эту статью, вы теперь знаете, как использовать F-тест, чтобы проверить, принадлежат ли две выборки к популяциям, имеющим одинаковые дисперсии. Вы узнали о процессе F-тестирования, предположениях и реализации Python. Подведем итоги статьи несколькими выводами —
F-тест показывает, имеют ли две популяции равные дисперсии.
Рассчитайте степени свободы и вычислите критическое значение.
Найдите F-статистику из F-таблицы и сравните ее с критическим значением, рассчитанным на предыдущем шаге.
Примите или отклоните нулевую гипотезу на основе критического значения и сравнения F-статистики.