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

Как выполнить 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-статистики.

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