ANOVA de Welch en Python (étape par étape)



L’ANOVA de Welch est une alternative à l’ ANOVA unidirectionnelle typique lorsque l’ hypothèse d’égalité des variances n’est pas respectée.

L’exemple étape par étape suivant montre comment effectuer l’ANOVA de Welch en Python.

Étape 1 : Créer les données

Pour déterminer si trois techniques d’étude différentes conduisent à des résultats d’examen différents, un professeur assigne au hasard 10 étudiants à utiliser chaque technique (Technique A, B ou C) pendant une semaine, puis fait passer à chaque étudiant un examen de difficulté égale.

Les résultats des examens des 30 étudiants sont présentés ci-dessous :

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]

Étape 2 : Test des écarts égaux

Ensuite, nous pouvons effectuer le test de Bartlett pour déterminer si les variances entre chaque groupe sont égales.

Si la valeur p de la statistique de test est inférieure à un certain niveau de signification (comme α = 0,05), nous pouvons alors rejeter l’hypothèse nulle et conclure que tous les groupes n’ont pas la même variance.

Nous pouvons utiliser le code suivant pour effectuer le test de Bartlett en Python :

import scipy.stats as stats

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

BartlettResult(statistic=9.039674395, pvalue=0.010890796567)

La valeur p ( .01089 ) du test de Bartlett est inférieure à α = .05, ce qui signifie que nous pouvons rejeter l’hypothèse nulle selon laquelle chaque groupe a la même variance.

Ainsi, l’hypothèse d’égalité des variances est violée et nous pouvons procéder à l’ANOVA de Welch.

Étape 3 : Effectuer l’ANOVA de Welch

Pour effectuer l’ANOVA de Welch en Python, nous pouvons utiliser la fonction welch_anova() du package Pingouin.

Tout d’abord, nous devons installer Pingouin :

pip install Pingouin

Ensuite, nous pouvons utiliser le code suivant pour effectuer l’ANOVA de Welch :

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

La valeur p globale ( 0,001598 ) du tableau ANOVA est inférieure à α = 0,05, ce qui signifie que nous pouvons rejeter l’hypothèse nulle selon laquelle les résultats des examens sont égaux entre les trois techniques d’étude.

Nous pouvons ensuite effectuer le test post-hoc de Games-Howell pour déterminer exactement quelles moyennes de groupe sont différentes :

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

À partir des valeurs p, nous pouvons voir que la différence moyenne entre les groupes a et b est significativement différente et que la différence moyenne entre les groupes b et c est significativement différente.

Ressources additionnelles

Comment effectuer une ANOVA unidirectionnelle en Python
Comment effectuer une ANOVA bidirectionnelle en Python
Comment effectuer une ANOVA à mesures répétées en Python

Ajouter un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *