Tester la normalité d'une distribution est une étape essentielle dans l'analyse statistique. C’est la suite logique après avoir effectué un nettoyage préliminaire de vos données et après avoir visualisé leur distribution une première fois.
Comprenez l’intérêt du test de normalité
Voici maintenant les principales raisons pour lesquelles tester la normalité est important.
Vérifier les conditions pour des tests paramétriques ou non paramétriques
Paramétrique ou non paramétrique, ça veut dire quoi exactement ?
En réalité c’est assez simple, un test paramétrique c’est un test que nous pouvons utiliser si nos données suivent une loi normale. A l’inverse, les tests non paramétriques doivent être utilisés si les données ne suivent pas une loi normale.
Pour les tests paramétriques comme ANOVA (nous en parlerons en détail dans le chapitre “Intégrez des approches mixtes”) il est très important de pouvoir confirmer que les données suivent une loi normale car nous n’avons “pas le droit” d’utiliser ce test, et donc les résultats, si cette condition n’est pas respectée. À l’inverse et malgré votre nettoyage, si les données ne sont pas normalement distribuées, il va falloir réaliser des tests non paramétriques comme le test de Mann-Whitney ou le test de Kruskal-Wallis.
La distribution de données gaussienne est typiquement celle qui va nous permettre de faire des tests paramétriques car ces données suivent une courbe normale.
Assurer la robustesse des estimations
Tester la normalité aide aussi à garantir que les estimations statistiques (comme la moyenne et l'écart-type) sont robustes et fiables. Les mesures de tendance centrale et de dispersion sont plus précises lorsqu'elles sont calculées sur des données normalement distribuées.
Comprendre les données
Tester la normalité vous donne une meilleure compréhension des caractéristiques de vos données. Cela peut révéler des biais ou des asymétries qui nécessitent des traitements spécifiques ou des transformations pour rendre les données analysables correctement.
Dans le cas de VertiGo, pourquoi serait-il pertinent de tester la normalité ?
Imaginons que VertiGo souhaite mieux comprendre les habitudes de dépenses de ses clients en termes de voyage. Une analyse statistique des budgets annuels des clients pourrait aider l'agence à adapter ses offres et ses stratégies de marketing. S’il y a des valeurs extrêmes dans les dépenses annuelles, utiliser un test paramétrique pourrait donner des résultats trompeurs. Tester la normalité permet alors de vérifier si l'utilisation d'un test paramétrique est appropriée.
Testez la normalité des données
Avant de réaliser tous tests, nous devons d’abord émettre deux types d’hypothèses.
Hypothèse nulle (H0) : elle postule que les données suivent une distribution normale.
Hypothèse alternative (H1) : elle indique que les données ne suivent pas une distribution normale. Elle est retenue si les données fournissent des preuves suffisantes pour rejeter l'hypothèse nulle. En gros, elle nous dit “H0 est fausse” et “H1” est probablement vraie.
C’est bon, nos hypothèses sont bien formulées. Il est temps maintenant de tester la normalité des dépenses annuelles des clients VertiGo via votre environnement Python. Pour ça, nous allons utiliser le test Shapiro-Wilk et suivre les étapes suivantes :
Charger les données depuis le fichier CSV.
Extraire la colonne “budget voyage annuel”.
Effectuer le test Shapiro-Wilk. Utilisez la fonction
shapiro
de la bibliothèquescipy.stats
pour effectuer le test.Afficher les résultats.
Interpréter les résultats.
import pandas as pd
from scipy.stats import shapiro
# Charger les données depuis le fichier CSV
file_path = 'chemin/vers/votre/fichier/Updated_Base_de_donnees_voyage.csv'
data = pd.read_csv(file_path)
# Extraire la colonne 'budget voyage annuel'
budgets = data['budget voyage annuel'].dropna()
# Effectuer le test de Shapiro-Wilk
stat, p_value = shapiro(budgets)
# Afficher les résultats
print(f"Statistique du test de Shapiro-Wilk : {stat}")
print(f"Valeur p : {p_value}")
# Interprétation des résultats
alpha = 0.05
if p_value > alpha:
print("Les données suivent une distribution normale (on ne rejette pas H0)")
else:
print("Les données ne suivent pas une distribution normale (on rejette H0)")
Et voilà le résultat ! Les données représentant le budget annuel des clients dépensé en voyage suivent bien une courbe normale.
Interprétez les résultats
Le test retourne deux valeurs : la statistique de test (W) et la valeur p.
Statistique de test (W) = 0,997…
Valeur p = 0,254…
Notez qu’on parle de pourcentage de chance ici. On peut donc très bien avoir une valeur p de 0,03 (et donc de rejeter H0) et pour autant faire face à une distribution normalement distribuée. C’est juste que cette distribution a 3% de chance d’être obtenue à partir d’une loi normale. C’est tellement peu probable qu’en général, nous préférons rejeter H0. Maintenant, si vous êtes joueurs et que vous pariez souvent avec seulement 3% de chance d’avoir raison… et bien libre à vous de diminuer le seuil de la valeur p ! C’est vous qui fixez le seuil, donc c’est à vous de voir quel est votre goût du risque !
Pour approfondir la notion clé de p value, regardez cette vidéo basée sur des échantillons aléatoires avant de passer à un exemple concret. Retrouvez également le code associé sur GitHub.
Les données de VertiGo que nous avons analysées semblent bien alignées avec une distribution normale.
La statistique W s’élève à 0,997, ce qui est très proche de 1.
La valeur p est égale à 0,257. C’est supérieur au seuil de 0,05, nous n’avons donc pas de raisons de rejeter H0.
La vidéo ci-dessous vous montre les étapes à suivre dans le cadre de l’entreprise VertiGo. Elle vous partage aussi une interprétation des résultats.
Comprenez les limites du test Shapiro-Wilk
Le test de Shapiro-Wilk est utile pour vérifier la normalité des données dans de nombreux contextes, mais il a ses limites, surtout en présence de beaucoup de données ou de valeurs aberrantes. Ce test est optimisé pour des petits à moyens échantillons, généralement de moins de 2000 observations. Comme nous l’avons remarqué précédemment, pour ces tailles d'échantillon, il est particulièrement puissant pour détecter si les données suivent ou non une distribution normale. Mais quand l'échantillon devient plus grand, le test devient extrêmement sensible aux petites déviations par rapport à la normalité. En gros, il peut rejeter la normalité même pour des écarts très mineurs qui en réalité n'auraient pas d'impact significatif sur votre analyse statistique.
Peut-on se passer de ce test de normalité ?
Oui, on peut parfois se passer du test de Shapiro-Wilk. Il existe d’autres méthodes statistiques pour évaluer la normalité des données, comme le test Kolmogorov-Smirnov. Certaines analyses statistiques sont robustes aux violations de la normalité, ce qui signifie qu'elles peuvent être utilisées même si les données ne sont pas parfaitement normales.
À vous de jouer
Contexte
L’histogramme que vous avez généré dans le chapitre précédent devrait montrer que les durées annuelles de voyage des clients de VertiGo ne suivent pas clairement une courbe gaussienne. C’est bien le cas ? Eh bien, votre mission ne s’arrête pas là. Vous devez maintenant tester la normalité de ces données pour savoir quel type de test sera le plus approprié pour atteindre votre objectif.
Consignes
Effectuez le test de Shapiro-Wilk.
Interprétez les résultats.
Livrable
Rédigez un script Python et un rapport qui fournit l’interprétation des résultats obtenus.
En résumé
Tester la normalité d'une distribution est essentiel pour confirmer si les données suivent une distribution normale, ce qui influence le choix des tests statistiques à utiliser.
Les tests paramétriques comme le test T et ANOVA nécessitent que les données soient normalement distribuées, tandis que les tests non paramétriques comme le test de Mann-Whitney ou de Kruskal-Wallis sont utilisés lorsque ce n'est pas le cas.
Tester la normalité permet de mieux comprendre les caractéristiques des données, y compris les biais et asymétries, et de décider des transformations nécessaires pour une analyse correcte.
La statistique W mesure l'écart des données par rapport à une distribution normale, tandis que la valeur p détermine si l'on peut rejeter l'hypothèse nulle de normalité en comparant cette valeur à un seuil prédéfini (souvent 0,05).
Le test de Shapiro-Wilk est puissant pour les petits à moyens échantillons, mais il peut devenir trop sensible pour les grands échantillons, rejetant la normalité pour des écarts mineurs sans impact significatif sur l'analyse.
Une fois que vous avez déterminé la normalité de vos données, il est crucial de choisir les tests quantitatifs appropriés. Ces tests vous permettront d'analyser les données numériques de manière précise.