Как выполнить тест Брауна-Форсайта в Python


Однофакторный дисперсионный анализ используется для определения того, существует ли значительная разница между средними значениями трех или более независимых групп.

Одно из предположений однофакторного дисперсионного анализа состоит в том, что дисперсии совокупностей, из которых взяты выборки , равны.

Один из наиболее распространенных способов проверить это — использовать тест Брауна-Форсайта , который представляет собой статистический тест, использующий следующие гипотезы :

  • H 0 : Различия между популяциями равны.
  • H A : Дисперсия между популяциями неодинакова.

Если p-значение теста меньше некоторого уровня значимости (например, α = 0,05), то мы отклоняем нулевую гипотезу и делаем вывод, что дисперсии неодинаковы среди разных популяций.

В этом руководстве представлен пошаговый пример выполнения теста Брауна-Форсайта в Python.

Шаг 1: введите данные

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

Они случайным образом выбирают 30 разных растений и делят их на три группы по 10 штук, применяя к каждой группе разные удобрения. В конце месяца измеряют высоту каждого растения.

Следующие массивы показывают высоту растений в каждой из трех групп:

group1 = [7, 14, 14, 13, 12, 9, 6, 14, 12, 8]
group2 = [15, 17, 13, 15, 15, 13, 9, 12, 10, 8]
group3 = [6, 8, 8, 9, 5, 14, 13, 8, 10, 9]

Шаг 2: суммируйте данные

Прежде чем мы проведем тест Брауна-Форсайта, мы можем рассчитать дисперсию измерений растений в каждой группе:

#import numpy
import numpy as np

#calculate variance of plant measurements in each group
print(np.var (group1), np.var (group2), np.var (group3))

8.69 7.81 7.0

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

Шаг 3. Проведите тест Брауна-Форсайта

Чтобы выполнить тест Брауна-Форсайта в Python, мы можем использовать функцию scipy.stats.levene() и указать центр как медианный :

import scipy.stats as stats

stats. levene (group1, group2, group3, center='median')

LeveneResult(statistic=0.17981072555205047, pvalue=0.8364205218185946)

Из вывода мы можем наблюдать следующее:

  • Статистика теста: 0,1798
  • р-значение: 0,8364

Значение p теста оказывается больше 0,05, поэтому мы не можем отвергнуть нулевую гипотезу теста.

Различия в дисперсии между группами не являются статистически значимыми.

Следующие шаги

Если нам не удастся отклонить нулевую гипотезу теста Брауна-Форсайта, мы можем приступить к однофакторному ANOVA для данных.

Однако, если мы отклоняем нулевую гипотезу, это указывает на то, что предположение о равных дисперсиях нарушается. В этом случае у нас есть два варианта:

1. Все равно продолжите однофакторный дисперсионный анализ.

Оказывается, однофакторный дисперсионный анализ на самом деле устойчив к неравным дисперсиям, если наибольшая дисперсия не превышает наименьшую дисперсию более чем в 4 раза.

На шаге 2 из приведенного выше примера мы обнаружили, что наименьшая дисперсия составляет 7,0, а наибольшая — 8,69. Таким образом, отношение наибольшей дисперсии к наименьшей равно 8,69/7,0 = 1,24 .

Поскольку это значение меньше 4, мы могли бы просто продолжить однофакторный дисперсионный анализ, даже если тест Брауна-Форсайта показал, что дисперсии не равны.

2. Проведите тест Крускала-Уоллиса

Если отношение наибольшей дисперсии к наименьшей дисперсии больше 4, мы можем вместо этого выбрать выполнение теста Краскела-Уоллиса.Это считается непараметрическим эквивалентом однофакторного дисперсионного анализа.

Пошаговый пример теста Крускала-Уоллиса на Python можно найти здесь .

Замечательно! Вы успешно подписались.
Добро пожаловать обратно! Вы успешно вошли
Вы успешно подписались на кодкамп.
Срок действия вашей ссылки истек.
Ура! Проверьте свою электронную почту на наличие волшебной ссылки для входа.
Успех! Ваша платежная информация обновлена.
Ваша платежная информация не была обновлена.