Comment effectuer le test de Tukey en Python



Une ANOVA unidirectionnelle est utilisée pour déterminer s’il existe ou non une différence statistiquement significative entre les moyennes de trois groupes indépendants ou plus.

Si la valeur p globale du tableau ANOVA est inférieure à un certain niveau de signification, alors nous disposons de preuves suffisantes pour affirmer qu’au moins une des moyennes des groupes est différente des autres.

Cependant, cela ne nous dit pas quels groupes sont différents les uns des autres. Cela nous dit simplement que toutes les moyennes du groupe ne sont pas égales. Afin de savoir exactement quels groupes sont différents les uns des autres, nous devons effectuer un test post hoc .

L’un des tests post hoc les plus couramment utilisés est le test de Tukey , qui nous permet d’effectuer des comparaisons par paires entre les moyennes de chaque groupe tout en contrôlant le taux d’erreur par famille .

Ce didacticiel fournit un exemple étape par étape de la façon d’effectuer le test de Tukey en Python.

Étape 1 : Charger les packages et les fonctions nécessaires

Tout d’abord, nous allons charger les packages et fonctions nécessaires en Python :

import pandas as pd
import numpy as np
from scipy.stats import f_oneway
from statsmodels.stats.multicomp import pairwise_tukeyhsd

Étape 2 : Ajuster le modèle ANOVA

Le code suivant montre comment créer un faux ensemble de données avec trois groupes (A, B et C) et ajuster un modèle ANOVA unidirectionnel aux données pour déterminer si les valeurs moyennes de chaque groupe sont égales :

#enter data for three groups
a = [85, 86, 88, 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]

#perform one-way ANOVA
f_oneway(a, b, c)

F_onewayResult(statistic=5.167774552944481, pvalue=0.012582197136592609)

Nous pouvons voir que la valeur p globale du tableau ANOVA est de 0,01258 .

Puisque ce chiffre est inférieur à 0,05, nous disposons de suffisamment de preuves pour affirmer que les valeurs moyennes dans chaque groupe ne sont pas égales.

Ainsi, nous pouvons procéder au test de Tukey pour déterminer exactement quelles moyennes de groupe sont différentes.

Étape 3 : Effectuer le test de Tukey

Pour effectuer le test de Tukey en Python, nous pouvons utiliser la fonction pairwise_tukeyhsd() de la bibliothèque statsmodels :

#create DataFrame to hold data
df = pd.DataFrame({'score': [85, 86, 88, 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 Tukey's test
tukey = pairwise_tukeyhsd(endog=df['score'],
                          groups=df['group'],
                          alpha=0.05)

#display results
print(tukey)

 Multiple Comparison of Means - Tukey HSD, FWER=0.05 
=====================================================
group1 group2 meandiff p-adj   lower    upper  reject
-----------------------------------------------------
     a      b      8.4 0.0158   1.4272 15.3728   True
     a      c      1.3 0.8864  -5.6728  8.2728  False
     b      c     -7.1 0.0453 -14.0728 -0.1272   True
-----------------------------------------------------

Voici comment interpréter le résultat :

  • Valeur P pour la différence de moyenne entre a et b : 0,0158
  • Valeur P pour la différence de moyenne entre a et c : 0,8864
  • Valeur P pour la différence de moyenne entre b et c : 0,0453

Ainsi, nous conclurions qu’il existe une différencestatistiquement significative entre les moyennes des groupes a et b et des groupes b et c , mais pas de différence statistiquement significative entre les moyennes des groupes a et c .

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 *