Как выполнить тест брауна-форсайта в python
Однофакторный дисперсионный анализ используется для определения того, существует ли значительная разница между средними значениями трех или более независимых групп.
Одно из допущений однофакторного дисперсионного анализа состоит в том, что дисперсии совокупностей, из которых взяты выборки , равны.
Одним из наиболее распространенных способов проверить это является использование теста Брауна-Форсайта , который представляет собой статистический тест, в котором используются следующие предположения :
- H 0 : Дисперсии между популяциями равны.
- ХА : Различия между популяциями не равны.
Если значение 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, поэтому мы не можем отвергнуть нулевую гипотезу теста.
Различия в дисперсиях между группами не являются статистически значимыми.
Следующие шаги
Если нам не удастся отвергнуть нулевую гипотезу теста Брауна-Форсайта, мы сможем выполнить односторонний дисперсионный анализ данных.
Однако если мы отвергаем нулевую гипотезу, это указывает на то, что предположение о равенстве дисперсий не выполняется. В этом случае у нас есть два варианта:
1. В любом случае выполните односторонний дисперсионный анализ.
Оказывается, однофакторный дисперсионный анализ на самом деле устойчив к неравным дисперсиям, если наибольшая дисперсия не превышает наименьшую более чем в 4 раза.
На шаге 2 приведенного выше примера мы обнаружили, что наименьшее отклонение составило 7,0, а наибольшее отклонение — 8,69. Таким образом, отношение наибольшей дисперсии к наименьшей составляет 8,69/7,0 = 1,24 .
Поскольку это значение меньше 4, мы могли бы просто продолжить однофакторный дисперсионный анализ, даже если тест Брауна-Форсайта показал, что дисперсии не равны.
2. Выполните тест Крускала-Уоллиса.
Если отношение наибольшей дисперсии к наименьшей дисперсии больше 4, вместо этого можно выполнить тест Крускала-Уоллиса . Это считается непараметрическим эквивалентом одностороннего дисперсионного анализа.
Пошаговый пример теста Крускала-Уоллиса на Python вы можете найти здесь .