ANOVA Уэлча в Python (шаг за шагом)


Дисперсионный анализ Уэлча является альтернативой типичному однофакторному дисперсионному анализу , когда нарушается допущение о равных дисперсиях .

В следующем пошаговом примере показано, как выполнить дисперсионный анализ Уэлча в 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. Выполните дисперсионный анализ Уэлча.

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

Во-первых, нам нужно установить Pingoin:

pip install Pingouin

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

import pingouin as pg
import pandas as pd
import numpy as np

#create DataFrame
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, что означает, что мы можем отклонить нулевую гипотезу о том, что экзаменационные баллы равны между тремя методами обучения.

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

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 значительно отличается.

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

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

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