Anova di welch in python (passo dopo passo)
L’ANOVA di Welch è un’alternativa alla tipica ANOVA unidirezionale quando il presupposto dell’uguaglianza delle varianze non è soddisfatto.
Il seguente esempio passo passo mostra come eseguire l’ANOVA di Welch in Python.
Passaggio 1: creare i dati
Per determinare se tre diverse tecniche di studio portano a risultati di esame diversi, un professore assegna casualmente a 10 studenti l’uso di ciascuna tecnica (tecnica A, B o C) per una settimana, quindi assegna a ciascuno studente un test di uguale difficoltà.
I risultati degli esami dei 30 studenti sono presentati di seguito:
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]
Passaggio 2: test delle differenze uguali
Successivamente, possiamo eseguire il test di Bartlett per determinare se le varianze tra ciascun gruppo sono uguali.
Se il valore p della statistica test è inferiore a un certo livello di significatività (come α = 0,05), allora possiamo rifiutare l’ipotesi nulla e concludere che non tutti i gruppi hanno la stessa varianza.
Possiamo usare il seguente codice per eseguire il test Bartlett in Python:
import scipy. stats as stats
#perform Bartlett's test
stats. bartlett (A, B, C)
BartlettResult(statistic=9.039674395, pvalue=0.010890796567)
Il valore p ( 0,01089 ) del test di Bartlett è inferiore a α = 0,05, il che significa che possiamo rifiutare l’ipotesi nulla che ciascun gruppo abbia la stessa varianza.
Pertanto, l’assunzione dell’uguaglianza delle varianze viene violata e possiamo procedere con l’ANOVA di Welch.
Passaggio 3: eseguire l’ANOVA di Welch
Per eseguire l’ANOVA di Welch in Python, possiamo utilizzare la funzione welch_anova() dal pacchetto Penguin.
Per prima cosa dobbiamo installare Penguin:
pip install Penguin
Quindi possiamo utilizzare il seguente codice per eseguire l’ANOVA di Welch:
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
Il valore p complessivo ( 0,001598 ) della tabella ANOVA è inferiore a α = 0,05, il che significa che possiamo rifiutare l’ipotesi nulla che i risultati dell’esame siano uguali tra le tre tecniche di studio.
Possiamo quindi eseguire il test post-hoc di Games-Howell per determinare esattamente quali medie di gruppo sono diverse:
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
Dai valori p, possiamo vedere che la differenza media tra i gruppi a e b è significativamente diversa e la differenza media tra i gruppi b e c è significativamente diversa.
Risorse addizionali
Come eseguire ANOVA unidirezionale in Python
Come eseguire un’ANOVA bidirezionale in Python
Come eseguire misure ripetute ANOVA in Python