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: Виконайте 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 ) таблиці дисперсійного аналізу є меншим за α = 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 значно відрізняється.

Додаткові ресурси

Як виконати односторонній дисперсійний аналіз у Python
Як виконати двосторонній дисперсійний аналіз у Python
Як виконувати повторювані вимірювання ANOVA в Python

Додати коментар

Ваша e-mail адреса не оприлюднюватиметься. Обов’язкові поля позначені *