Détection de la fraude en R
Tim Verdonck
Professor Data Science at KU Leuven
Une valeur aberrante est une observation qui s'écarte du comportement de la majorité des données.
Une valeur aberrante peut signaler une fraude.
Un outil courant pour détecter les valeurs aberrantes consiste à
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}$$
L'ensemble 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 !
Mean <- mean(loginc)
Sd <- sd(loginc)
zscore <- (loginc - Mean) / Sd
abs(zscore) > 3
FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
Moyenne d'échantillon : $$\overline{x}=\frac{1}{n}\sum_i x_i$$
mean(loginc)mean(loginc9)
7.9864477.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 de l'échantillon, $Med(X_n)$, est la $(n+1)/2$e observation (si $n$ est impair) ou la moyenne des $n/2$e et $(n/2+1)$e observations (si $n$ est pair).
median(loginc)
7.816658
median(loginc9)
7.764296
(1) Écart-type d'échantillon : $$s= \sqrt{\frac{1}{n-1}\sum_i (x_i-\hat{\mu})^2}$$
sd(loginc)
0.6976615
sd(loginc9)
0.1791729
(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
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

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


Valeurs aberrantes selon la boîte à moustaches ajustée :
library(robustbase)
adjbox(los)$out
59 67 102
Statistiques calculées par la boîte à moustaches ajustée :
adjboxStats(los)$stats
2 4 8 13 47


Détection de la fraude en R