Détecter les valeurs aberrantes au-delà de 1.5*IQR
Introduction
Les valeurs aberrantes, ou outliers, sont des points de données qui s’écartent significativement du reste du jeu de données. Elles peuvent être dues à des erreurs de saisie, des variations naturelles, ou des phénomènes rares. Leur détection est une étape essentielle du data cleaning, car les valeurs aberrantes peuvent fausser les résultats d’analyse et impacter négativement la performance des modèles de machine learning.
La méthode de l’IQR (Interquartile Range)
L’une des méthodes les plus couramment utilisées pour détecter les valeurs aberrantes est basée sur l’IQR (Intervalle Interquartile). Cette méthode est simple, robuste et très utilisée en statistiques descriptives.
L’IQR est défini comme la différence entre le troisième quartile (Q3) et le premier quartile (Q1) :
IQR = Q3 - Q1
Une valeur est considérée comme aberrante si elle est :
x < Q1 - 1.5 × IQR
ou
x > Q3 + 1.5 × IQR
Cette règle permet d’identifier les points situés en dehors de la zone de concentration des données. Le facteur 1.5 est un seuil empirique souvent utilisé, mais il peut être ajusté en fonction du contexte (2 ou 3 pour être plus strict, par exemple).
Étapes pour détecter les outliers
Exemple avec des données simples :
D = [7, 9, 10, 12, 13, 14, 15, 16, 18, 20, 21, 50]
- Trier les données (déjà fait ici).
- Calculer Q1 (1er quartile) : médiane de la moitié inférieure → Q1 = 10
- Calculer Q3 (3e quartile) : médiane de la moitié supérieure → Q3 = 18
- Calculer l’IQR :
IQR = Q3 - Q1 = 18 - 10 = 8
- Calculer les bornes :
Borne inférieure = Q1 - 1.5 × IQR = 10 - 12 = -2 Borne supérieure = Q3 + 1.5 × IQR = 18 + 12 = 30
- Identifier les valeurs en dehors de ces bornes :
La valeur 50 est > 30 → valeur aberrante
Détection automatique avec Python
Utilisation de NumPy :
import numpy as np
data = np.array([7, 9, 10, 12, 13, 14, 15, 16, 18, 20, 21, 50])
q1 = np.percentile(data, 25)
q3 = np.percentile(data, 75)
iqr = q3 - q1
lower_bound = q1 - 1.5 * iqr
upper_bound = q3 + 1.5 * iqr
outliers = data[(data < lower_bound) | (data > upper_bound)]
print("Outliers détectés :", outliers)
Avec Pandas :
import pandas as pd
df = pd.Series([7, 9, 10, 12, 13, 14, 15, 16, 18, 20, 21, 50])
q1 = df.quantile(0.25)
q3 = df.quantile(0.75)
iqr = q3 - q1
lower_bound = q1 - 1.5 * iqr
upper_bound = q3 + 1.5 * iqr
outliers = df[(df < lower_bound) | (df > upper_bound)]
print("Outliers détectés :", outliers.tolist())
Avantages de la méthode IQR
- Robuste : elle n’est pas influencée par les valeurs extrêmes comme le sont la moyenne et l’écart-type.
- Simple à appliquer : quelques lignes de code suffisent.
- Non paramétrique : elle ne suppose pas de distribution normale des données.
Limites
- Peut être trop sensible ou trop tolérante selon le seuil choisi (1.5).
- Moins efficace sur des données très asymétriques ou multimodales.
Conclusion
Détecter les valeurs aberrantes est une étape essentielle dans le processus d’analyse de données. La méthode du 1.5 × IQR offre une approche simple, intuitive et robuste pour identifier les points anormaux. Une fois détectés, ces outliers peuvent être retirés, corrigés ou analysés séparément, en fonction des objectifs du projet.
Une bonne compréhension de cette méthode renforce la qualité de vos analyses statistiques et améliore la fiabilité de vos modèles prédictifs.