Appliquer la Winsorization pour limiter les valeurs extrêmes
Introduction
La Winsorization est une méthode de traitement des données extrêmes qui consiste à limiter les valeurs les plus faibles et les plus fortes à un certain seuil. Contrairement à la suppression, cette technique conserve toutes les observations dans le jeu de données, ce qui est souvent préférable dans les modèles statistiques sensibles à la taille de l’échantillon.
Elle est particulièrement utile lorsqu’on souhaite atténuer l’influence des outliers sans les exclure complètement, en « écrasant » les extrêmes vers une valeur plus raisonnable.
Principe de la Winsorization
On définit deux seuils, souvent basés sur des quantiles (par exemple les 5% les plus faibles et les 5% les plus élevés). Les valeurs situées en dehors de ces seuils sont ramenées aux valeurs limites définies.
- Les valeurs en dessous du quantile inférieur (ex : 5%) sont remplacées par la valeur du 5e percentile.
- Les valeurs au-dessus du quantile supérieur (ex : 95%) sont remplacées par la valeur du 95e percentile.
Implémentation avec Python
Utiliser SciPy
La bibliothèque scipy.stats
propose une fonction winsorize
très simple à utiliser.
from scipy.stats.mstats import winsorize
import numpy as np
data = np.array([10, 12, 14, 13, 11, 100]) # valeur extrême à 100
# Winsorization à 10% des deux côtés
data_winsorized = winsorize(data, limits=[0.1, 0.1])
print(data_winsorized)
Sans bibliothèque externe : Winsorization manuelle avec Pandas
On peut aussi réaliser la Winsorization avec des fonctions natives Pandas.
import pandas as pd
df = pd.DataFrame({"valeurs": [10, 12, 14, 13, 11, 100]})
# Définir les bornes selon les quantiles 5% et 95%
q_inf = df["valeurs"].quantile(0.05)
q_sup = df["valeurs"].quantile(0.95)
# Appliquer le clipping
df["valeurs_winsorized"] = df["valeurs"].clip(lower=q_inf, upper=q_sup)
print(df)
Avantages de la Winsorization
- Préserve toutes les lignes du dataset (contrairement à la suppression d’outliers).
- Réduit l’effet des valeurs extrêmes dans les statistiques de moyenne, écart-type, corrélation, etc.
- Simple à mettre en œuvre et interpréter.
Limites à garder en tête
- La Winsorization modifie les données originales, ce qui peut poser problème si les données doivent rester brutes.
- Le choix du pourcentage à Winsoriser est subjectif. Trop agressif, il peut masquer des tendances réelles.
- Elle est moins efficace si les données contiennent des valeurs extrêmes fortement dispersées.
Bonnes pratiques
- Comparer les résultats avec et sans Winsorization pour évaluer l’impact sur l’analyse.
- Documenter les seuils utilisés et les raisons de leur choix.
- Éviter d’utiliser cette méthode sur des variables qualitatives ou catégorielles.
Conclusion
La Winsorization est une solution élégante pour limiter l’impact des outliers sans les supprimer. Elle est particulièrement utile dans les modèles sensibles aux extrêmes, comme les régressions linéaires, ou lors de l’analyse de moyennes. Utilisée correctement, elle améliore la robustesse de vos analyses tout en préservant l’intégrité de vos données.