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