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.

 

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

Limites à garder en tête

 

Bonnes pratiques

 

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.