Sont-ils Également Dispersés ? Tester l’Égalité des Variances
Author
Affiliation
Wilson Toussile
ENSPY & ESSFAR
1 Pourquoi la Dispersion est-elle si Importante ?
Dans notre dernier article, nous avons comparé les moyennes de deux groupes avec le t-test. C’était puissant, mais nous avons fait une supposition importante en coulisses : que la dispersion des données (la variance) était la même dans les deux groupes.
Mais pourquoi s’en soucier ? Imaginez que vous comparez les scores de deux classes. Les deux ont une moyenne de 15/20. Cependant, dans la classe A, tous les scores sont entre 14 et 16, tandis que dans la classe B, ils s’étalent de 5 à 20. La situation est radicalement différente ! Ignorer cette différence de dispersion peut fausser les résultats de nos tests sur les moyennes.
Ce post est dédié à la vérification de cette hypothèse cruciale, connue sous le nom d’homogénéité des variances (ou homoscédasticité). C’est une étape qui transforme une analyse standard en une analyse rigoureuse.
2 Le Scénario Clé : Quand et Pourquoi Vérifier ?
Vous devez vérifier l’égalité des variances avant de réaliser :
Un t-test pour échantillons indépendants (standard).
Une Analyse de la Variance (ANOVA), que nous verrons bientôt.
L’idée est de s’assurer que les groupes que vous comparez sont “comparables” non seulement en termes de tendance centrale, mais aussi en termes de variabilité. Si un groupe est très homogène et l’autre très hétérogène, les outils standards peuvent être induits en erreur.
3 Le Test de Levene : Le Couteau Suisse
Il existe plusieurs tests pour vérifier l’égalité des variances, mais le plus recommandé et le plus utilisé est le test de Levene.
Pourquoi lui ? Car il est robuste. Contrairement à d’autres tests (comme celui de Bartlett), il n’est pas très sensible à la non-normalité de vos données, ce qui est un avantage énorme en pratique.
Son principe (simplifié) : Au lieu de travailler directement avec les données, le test de Levene calcule d’abord l’écart absolu de chaque observation par rapport au centre de son groupe (par défaut, la médiane, ce qui le rend robuste). Ensuite, il réalise une sorte d’ANOVA sur ces écarts. Si la moyenne de ces écarts est la même pour tous les groupes, cela signifie que la dispersion est similaire.
4 L’Hypothèse Nulle : Un Rôle Inversé
Pour les tests de variance, la formulation des hypothèses est un peu contre-intuitive.
\(H_0\) (Hypothèse Nulle) : Les variances des groupes sont égales. \[ H_0: \sigma_1^2 = \sigma_2^2 = \dots = \sigma_k^2 \]
\(H_1\) (Hypothèse Alternative) : Au moins deux des variances sont différentes.
Attention : On espère ne PAS rejeter \(\mathcal{H}_0\) !
C’est un des rares cas en statistique où l’on est “content” d’obtenir une p-value élevée (p > 0.05). Un tel résultat signifie que nous ne pouvons pas rejeter l’hypothèse nulle, et donc que nous pouvons valider notre supposition d’égalité des variances.
5 Atelier Pratique : La Dispersion des Salaires chez Innovatech
Reprenons les données de salaires des départements “Vente” et “IT”. Avant de conclure définitivement sur la différence de moyenne, vérifions si leurs variances sont égales.
import pandas as pdimport numpy as npfrom scipy import statsimport seaborn as snsimport matplotlib.pyplot as plt# --- Recréer les mêmes données que le post précédent ---np.random.seed(42)n =200data = pd.DataFrame({'departement': np.random.choice(['IT', 'Vente', 'RH'], n, p=[0.4, 0.4, 0.2]),'salaire_annuel': np.random.normal(55000, 15000, n)})data.loc[data['departement'] =='Vente', 'salaire_annuel'] *=1.1data.loc[data['departement'] =='IT', 'salaire_annuel'] *=1.05# Isoler les deux groupessalaire_vente = data[data['departement'] =='Vente']['salaire_annuel']salaire_it = data[data['departement'] =='IT']['salaire_annuel']# --- Étape 1 : Visualisation ---# Le box plot donne une bonne intuition de la dispersion (hauteur de la boîte)print("--- Étape 1: Visualisation de la Dispersion ---")plt.figure(figsize=(10, 7))sns.boxplot(x='departement', y='salaire_annuel', data=data[data['departement'].isin(['Vente', 'IT'])])plt.title('Comparaison de la Dispersion des Salaires', fontsize=16)plt.show()print("Visuellement, les hauteurs des boîtes (IQRs) et les étendues semblent assez similaires.\n")# --- Étape 2 : Réalisation du Test de Levene ---print("--- Étape 2: Test de Levene ---")# H0: Les variances des deux groupes sont égales.# H1: Les variances sont différentes.levene_statistic, p_value_levene = stats.levene(salaire_vente, salaire_it)print(f"Statistique de Levene: {levene_statistic:.3f}")print(f"P-value du test: {p_value_levene:.4f}\n")# --- Étape 3 : Interprétation ---alpha =0.05print("--- Étape 3: Conclusion sur l'Hypothèse de Variance ---")if p_value_levene < alpha:print(f"Décision: Rejeter H0 (car {p_value_levene:.4f} < {alpha}).")print("Conclusion: Les variances sont considérées comme significativement différentes (hétéroscédasticité).")else:print(f"Décision: Ne pas rejeter H0 (car {p_value_levene:.4f} >= {alpha}).")print("Conclusion: Nous pouvons supposer que les variances sont égales (homoscédasticité).")
--- Étape 1: Visualisation de la Dispersion ---
Visuellement, les hauteurs des boîtes (IQRs) et les étendues semblent assez similaires.
--- Étape 2: Test de Levene ---
Statistique de Levene: 0.377
P-value du test: 0.5401
--- Étape 3: Conclusion sur l'Hypothèse de Variance ---
Décision: Ne pas rejeter H0 (car 0.5401 >= 0.05).
Conclusion: Nous pouvons supposer que les variances sont égales (homoscédasticité).
6 Que Faire Après le Test ? Le Guide de Décision
Le résultat du test de Levene dicte la suite de votre analyse.
Cas 1 : \(pValue > 0.05\) (Notre cas ici)
Conclusion : L’hypothèse d’égalité des variances est validée.
Action : Vous êtes autorisé à utiliser le t-test de Student standard, celui que nous avons vu dans le post précédent (equal_var=True). Votre analyse initiale était donc méthodologiquement correcte.
Cas 2 : \(pValue < 0.05\)
Conclusion : Les variances sont significativement différentes.
Action : N’utilisez PAS le t-test standard! Vous devez utiliser une alternative robuste qui ne suppose pas l’égalité des variances : le test de Welch. Heureusement, c’est très simple à faire.
Si les variances étaient inégales
On passe simplement l’argument equal_var à False.
t_welch, p_welch = stats.ttest_ind(salaire_vente, salaire_it, equal_var=False)print(f"Résultat du test de Welch : t={t_welch:.3f}, p-value={p_welch:.4f}")
7 Conclusion
Vérifier les hypothèses de vos tests, comme l’égalité des variances, n’est pas une étape optionnelle ; c’est la marque d’un analyste de données rigoureux et fiable. Vous savez maintenant non seulement pourquoi c’est important, mais aussi comment le faire et comment adapter votre analyse en fonction du résultat.
Et maintenant ?
Nous avons exploré en détail la comparaison de groupes indépendants. Mais que se passe-t-il lorsque les mesures sont dépendantes, comme la mesure des compétences d’un employé avant et après une formation ? C’est ce que nous découvrirons dans notre prochain article sur le t-test pour échantillons appariés.