Welch's anova in python (stap voor stap)


De ANOVA van Welch is een alternatief voor de typische eenrichtings-ANOVA wanneer niet aan de aanname van gelijkheid van varianties wordt voldaan.

In het volgende stapsgewijze voorbeeld ziet u hoe u Welch’s ANOVA in Python uitvoert.

Stap 1: Creëer de gegevens

Om te bepalen of drie verschillende studietechnieken tot verschillende examenresultaten leiden, wijst een professor willekeurig 10 studenten toe om elke techniek (Techniek A, B of C) een week lang te gebruiken, en geeft vervolgens elke student een test van gelijke moeilijkheidsgraad.

Hieronder vindt u de examenresultaten van de 30 studenten:

 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]

Stap 2: Test op gelijke verschillen

Vervolgens kunnen we de Bartlett-test uitvoeren om te bepalen of de varianties tussen elke groep gelijk zijn.

Als de p-waarde van de teststatistiek onder een bepaald significantieniveau ligt (zoals α = 0,05), kunnen we de nulhypothese verwerpen en concluderen dat niet alle groepen dezelfde variantie hebben.

We kunnen de volgende code gebruiken om de Bartlett-test in Python uit te voeren:

 import scipy. stats as stats

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

BartlettResult(statistic=9.039674395, pvalue=0.010890796567)

De p-waarde ( .01089 ) van de Bartlett-test is kleiner dan α = .05, wat betekent dat we de nulhypothese kunnen verwerpen dat elke groep dezelfde variantie heeft.

De aanname van gelijkheid van varianties wordt dus geschonden en we kunnen doorgaan met Welch’s ANOVA.

Stap 3: Voer de ANOVA van Welch uit

Om Welch’s ANOVA in Python uit te voeren, kunnen we de functie welch_anova() uit het Penguin-pakket gebruiken.

Eerst moeten we Penguin installeren:

 pip install Penguin

Vervolgens kunnen we de volgende code gebruiken om Welch’s ANOVA uit te voeren:

 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

De totale p-waarde ( 0,001598 ) van de ANOVA-tabel is minder dan α = 0,05, wat betekent dat we de nulhypothese kunnen verwerpen dat de examenresultaten gelijk zijn voor de drie studietechnieken.

We kunnen vervolgens de post-hoc-test van Games-Howell uitvoeren om precies te bepalen welke groepsgemiddelden verschillend zijn:

 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

Uit de p-waarden kunnen we zien dat het gemiddelde verschil tussen groepen a en b significant verschillend is en dat het gemiddelde verschil tussen groepen b en c significant verschillend is.

Aanvullende bronnen

Eenrichtings-ANOVA uitvoeren in Python
Hoe u een tweerichtings-ANOVA uitvoert in Python
Hoe herhaalde metingen ANOVA in Python uit te voeren

Einen Kommentar hinzufügen

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert