Détecter les valeurs aberrantes univariées

Détection de fraude en R

Tim Verdonck

Professor Data Science at KU Leuven

Valeurs aberrantes

Une valeur aberrante est une observation qui s'écarte du schéma de la majorité des données. poisson aberrant Une valeur aberrante peut signaler une fraude.

Détection de fraude en R

Détection de valeurs aberrantes

  • Un outil courant pour détecter les valeurs aberrantes consiste à

    • calculer le z-score de chaque observation
    • signaler une observation comme aberrante si la valeur absolue de son z-score est supérieure à 3
  • Le z-score $z_i$ pour l'observation $x_i$ se calcule ainsi :

$$z_i=\frac{x_i-\hat{\mu}}{\hat{\sigma}} = \frac{x_i-\overline{x}}{s}$$

  • $\overline{x}$ est la moyenne empirique : $\overline{x}=\frac{1}{n}\sum_i x_i$
  • $s$ est l'écart type empirique : $s= \sqrt{\frac{1}{n-1}\sum_i(x_i-\hat{\mu})^2}$
Détection de fraude en R

Le jeu loginc contient les revenus mensuels de 10 personnes après transformation logarithmique :

loginc: 7.876 7.681 7.628  ...  7.764 9.912 # <-- le dernier revenu est clairement aberrant !
  • (1) Calculez le z-score de chaque observation
Mean <- mean(loginc)
Sd <- sd(loginc)
zscore <- (loginc - Mean) / Sd
  • (2) Vérifiez si les z-scores sont supérieurs à 3 en valeur absolue
abs(zscore) > 3
FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
  • Aucune valeur aberrante n'est identifiée avec ces z-scores !
Détection de fraude en R

Statistiques robustes

  • Les méthodes statistiques classiques reposent sur des hypothèses (de normalité). Même une seule valeur aberrante peut fortement influencer les conclusions et mener à des résultats trompeurs.
  • Les statistiques robustes restent fiables en présence de valeurs aberrantes et proposent des outils automatiques de détection.
  • « Il est idéal d'utiliser de façon routinière méthodes classiques et robustes, et de ne s'inquiéter que lorsqu'elles diffèrent assez pour que cela compte… Mais lorsqu'elles diffèrent, réfléchissez sérieusement. » J. W. Tukey (1979)
Détection de fraude en R

Estimateurs de position : moyenne et médiane

Moyenne empirique : $$\overline{x}=\frac{1}{n}\sum_i x_i$$

mean(loginc)

mean(loginc9)
7.986447

7.772392

loginc9 contient les mêmes observations que loginc, sauf la valeur aberrante.

Ordonnez les $n$ observations de la plus petite à la plus grande, puis la médiane empirique, $Med(X_n)$, est la $(n+1)$/2e observation (si $n$ est impair) ou la moyenne des observations $n/2$ et $n/2+1$ (si $n$ est pair).

median(loginc)
7.816658
median(loginc9)
7.764296
Détection de fraude en R

Estimateurs d'échelle : sd

(1) Écart type empirique : $$s= \sqrt{\frac{1}{n-1}\sum_i (x_i-\hat{\mu})^2}$$

sd(loginc)
0.6976615
sd(loginc9)
0.1791729
Détection de fraude en R

Estimateurs d'échelle : mad, IQR

(2) Écart absolu médian : $$Mad(X_n)=1.4826Med(|x_i-Med(X_n)|)$$

(3) Étendue interquartile (normalisée) : $$IQR(X_n)= IQR = 0.7413(Q_3-Q_1)$$ où $Q_1$ et $Q_3$ sont les premier et troisième quartiles des données

IQR(loginc)/1.349
0.2056784
mad(loginc)
0.2396159
mad(loginc9)
0.201305
IQR(loginc9)/1.349
0.1839295
Détection de fraude en R

Z-scores robustes pour la détection d'anomalies

Insérez les estimateurs robustes pour calculer des z-scores robustes :

$$z_i=\frac{x_i-\hat{\mu}}{\hat{\sigma}} =\frac{x_i-Med(X_n)}{Mad(X_n)}$$

robzscore <- (loginc - median(loginc)) / mad(loginc)

abs(robzscore) > 3 ## Vérifier les valeurs aberrantes
FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE TRUE
robzscore[10] ## Z-score robuste de la valeur aberrante
8.748523
Détection de fraude en R

Boxplot

  • Le boxplot de Tukey est aussi un outil populaire pour identifier les valeurs aberrantes
  • Une observation est signalée comme aberrante si elle est en dehors des limites du boxplot $$[Q_1-1.5IQR; Q_3+1.5IQR]$$

explication du boxplot

Détection de fraude en R

Exemple : durée de séjour (LOS) à l'hôpital

boxplot(los, col = "blue", ylab = "Lenght of Stay (LOS)")$out
59  33  42  67  35  47 102  36  27  31  27  30  29  32  37  27  38

boxplot LOS avec ggplot

Détection de fraude en R

Boxplot ajusté

  • Pour des distributions asymétriques, le boxplot peut signaler à tort de nombreux points réguliers comme aberrants.
  • Le boxplot ajusté pour l'asymétrie corrige cela en utilisant une mesure robuste d'asymétrie pour fixer les limites (Hubert et Vandervieren, 2008)

boxplot ajusté pour khi-deux

Détection de fraude en R

Exemple LOS : boxplot ajusté

Valeurs aberrantes selon le boxplot ajusté :

library(robustbase)
adjbox(los)$out
59  67 102

Statistiques calculées par le boxplot ajusté :

adjboxStats(los)$stats
2  4  8 13 47
Détection de fraude en R

Exemple LOS : boxplot vs boxplot ajusté

Boxplot LOS

Boxplot LOS ajusté

Détection de fraude en R

Passons à la pratique !

Détection de fraude en R

Preparing Video For Download...