Anova уэлча в python (шаг за шагом)


ANOVA Уэлча является альтернативой типичному однофакторному ANOVA, когда предположение о равенстве дисперсий не выполняется.

В следующем пошаговом примере показано, как выполнить дисперсионный анализ Уэлча в Python.

Шаг 1. Создайте данные

Чтобы определить, приводят ли три разных метода обучения к разным результатам экзамена, профессор случайным образом назначает 10 студентов использовать каждый метод (метод A, B или C) в течение недели, а затем дает каждому студенту тест равной сложности.

Результаты экзаменов 30 студентов представлены ниже:

 A = [64, 66, 68, 75, 78, 94, 98, 79, 71, 80]
B = [91, 92, 93, 90, 97, 94, 82, 88, 95, 96]
C = [79, 78, 88, 94, 92, 85, 83, 85, 82, 81]

Шаг 2: Тест на равные различия

Затем мы можем выполнить тест Бартлетта , чтобы определить, равны ли дисперсии между каждой группой.

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

Мы можем использовать следующий код для выполнения теста Бартлетта в Python:

 import scipy. stats as stats

#perform Bartlett's test 
stats. bartlett (A, B, C)

BartlettResult(statistic=9.039674395, pvalue=0.010890796567)

Значение p ( 0,01089 ) теста Бартлетта меньше α = 0,05, что означает, что мы можем отвергнуть нулевую гипотезу о том, что каждая группа имеет одинаковую дисперсию.

Таким образом, предположение о равенстве дисперсий нарушается, и мы можем приступить к дисперсионному анализу Уэлча.

Шаг 3. Выполните дисперсионный анализ Уэлча.

Чтобы выполнить ANOVA Уэлча в Python, мы можем использовать функцию welch_anova() из пакета Penguin.

Сначала нам нужно установить Penguin:

 pip install Penguin

Затем мы можем использовать следующий код для выполнения ANOVA Уэлча:

 import penguin as pg
import pandas as pd
import numpy as np

#createDataFrame
df = pd. DataFrame ({' score ': [64, 66, 68, 75, 78, 94, 98, 79, 71, 80,
                             91, 92, 93, 90, 97, 94, 82, 88, 95, 96,
                             79, 78, 88, 94, 92, 85, 83, 85, 82, 81],
                   ' group ': np. repeat (['a', 'b', 'c'], repeats = 10 )}) 

#perform Welch's ANOVA
pg. welch_anova (dv=' score ', between=' group ', data=df)

        Source ddof1 ddof2 F p-unc np2
0 group 2 16.651295 9.717185 0.001598 0.399286

Общее значение p ( 0,001598 ) таблицы ANOVA меньше α = 0,05, что означает, что мы можем отвергнуть нулевую гипотезу о том, что результаты экзамена равны между тремя методами исследования.

Затем мы можем выполнить апостериорный тест Геймса-Хауэлла, чтобы точно определить, какие групповые средние отличаются:

 pg. pairwise_gameshowell (dv=' score ', between=' group ', data=df)


        A B mean(A) mean(B) diff se T df pval	
0 a b 77.3 91.8 -14.5 3.843754 -3.772354 11.6767 0.0072
1 a c 77.3 84.7 -7.4 3.952777 -1.872102 12.7528 0.1864
2 b c 91.8 84.7 7.1 2.179959 3.256942 17.4419 0.0119

Из значений p мы видим, что средняя разница между группами a и b значительно различается, а средняя разница между группами b и c значительно различается.

Дополнительные ресурсы

Как выполнить однофакторный дисперсионный анализ в Python
Как выполнить двусторонний дисперсионный анализ в Python
Как выполнить повторные измерения ANOVA в Python

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *