Comment effectuer un test de Brown-Forsythe en Python
Une ANOVA unidirectionnelle est utilisée pour déterminer s’il existe ou non une différence significative entre les moyennes de trois groupes indépendants ou plus.
L’une des hypothèses d’une ANOVA unidirectionnelle est que les variances des populations dont proviennent les échantillons sont égales.
L’un des moyens les plus courants de tester cela consiste à utiliser un test de Brown-Forsythe , qui est un test statistique qui utilise les hypothèses suivantes :
- H 0 : Les variances entre les populations sont égales.
- H A : Les écarts entre les populations ne sont pas égaux.
Si la valeur p du test est inférieure à un certain niveau de signification (par exemple α = 0,05), alors nous rejetons l’hypothèse nulle et concluons que les variances ne sont pas égales entre les différentes populations.
Ce didacticiel fournit un exemple étape par étape de la façon d’effectuer un test de Brown-Forsythe en Python.
Étape 1 : Saisissez les données
Supposons que les chercheurs souhaitent savoir si trois engrais différents conduisent à différents niveaux de croissance des plantes.
Ils sélectionnent au hasard 30 plantes différentes et les divisent en trois groupes de 10, en appliquant un engrais différent à chaque groupe. Au bout d’un mois, ils mesurent la hauteur de chaque plante.
Les tableaux suivants montrent la hauteur des plantes dans chacun des trois groupes :
group1 = [7, 14, 14, 13, 12, 9, 6, 14, 12, 8] group2 = [15, 17, 13, 15, 15, 13, 9, 12, 10, 8] group3 = [6, 8, 8, 9, 5, 14, 13, 8, 10, 9]
Étape 2 : Résumer les données
Avant d’effectuer un test de Brown-Forsythe, nous pouvons calculer la variance des mesures des plantes dans chaque groupe :
#import numpy import numpy as np #calculate variance of plant measurements in each group print(np.var(group1), np.var(group2), np.var(group3)) 8.69 7.81 7.0
Nous pouvons voir que les variances entre les groupes diffèrent, mais pour déterminer si ces différences sontstatistiquement significatives , nous pouvons effectuer le test de Brown-Forsythe.
Étape 3 : Effectuer le test de Brown-Forsythe
Pour effectuer un test de Brown-Forsythe en Python, nous pouvons utiliser la fonction scipy.stats.levene() et spécifier que le centre soit médian :
import scipy.stats as stats
stats.levene(group1, group2, group3, center='median')
LeveneResult(statistic=0.17981072555205047, pvalue=0.8364205218185946)
À partir du résultat, nous pouvons observer ce qui suit :
- Statistique de test : 0,1798
- Valeur p : 0,8364
La valeur p du test s’avère supérieure à 0,05, nous ne parvenons donc pas à rejeter l’hypothèse nulle du test.
Les différences dans les variances entre les groupes ne sont pas statistiquement significatives.
Prochaines étapes
Si nous ne parvenons pas à rejeter l’hypothèse nulle du test de Brown-Forsythe, nous pouvons alors procéder à une ANOVA unidirectionnelle sur les données.
Cependant, si nous rejetons l’hypothèse nulle, cela indique que l’hypothèse d’égalité des variances n’est pas respectée. Dans ce cas, nous avons deux options :
1. Procédez quand même à une ANOVA unidirectionnelle.
Il s’avère qu’une ANOVA unidirectionnelle est en fait robuste aux variances inégales tant que la plus grande variance n’est pas supérieure à 4 fois la plus petite variance.
À l’étape 2 de l’exemple ci-dessus, nous avons constaté que la plus petite variance était de 7,0 et la plus grande variance était de 8,69. Ainsi, le rapport de la variance la plus grande à la plus petite est 8,69 / 7,0 = 1,24 .
Puisque cette valeur est inférieure à 4, nous pourrions simplement procéder à l’ANOVA unidirectionnelle même si le test de Brown-Forsythe indiquait que les variances n’étaient pas égales.
2. Effectuez un test de Kruskal-Wallis
Si le rapport de la plus grande variance à la plus petite variance est supérieur à 4, on peut plutôt choisir d’effectuer un test de Kruskal-Wallis . Ceci est considéré comme l’équivalent non paramétrique de l’ANOVA unidirectionnelle.
Vous pouvez trouver un exemple étape par étape d’un test Kruskal-Wallis en Python ici .