Détection de fraude en R
Tim Verdonck
Professor Data Science at KU Leuven
Animals du package MASS contient les poids moyens du cerveau et du corps pour 28 animaux library(MASS)
data("Animals")
body brain
Mountain beaver 1.35 8.1
Cow 465.00 423.0
Grey wolf 36.33 119.5
Goat 27.66 115.0
X <- data.frame(log_body = log(Animals$body), log_brain = log(Animals$brain))
Boîtes à moustaches des logarithmes du poids corporel et du poids du cerveau


La distance de Mahalanobis (ou généralisée) pour une observation est la distance de cette observation au centre, en tenant compte de la matrice de covariance

Distances de Mahalanobis classiques : moyenne empirique comme estimation de la position et matrice de covariance empirique comme estimation de la dispersion
Pour détecter des valeurs aberrantes multivariées, on compare la distance de Mahalanobis à une valeur seuil, dérivée de la loi du khi deux
En deux dimensions, on peut construire l'ellipsoïde de tolérance à $97,5\%$, défini par les observations dont la distance de Mahalanobis ne dépasse pas ce seuil
animals.clcenter <- colMeans(X) animals.clcov <- cov(X) rad <- sqrt(qchisq(0.975, df = ncol(X)))library(car) ellipse.cl <- data.frame(ellipse(center = animals.clcenter, shape = animals.clcov,radius = rad, segments = 100, draw = FALSE)) colnames(ellipse.cl) <- colnames(X)fig <- fig + geom_polygon(data=ellipse.cl, color = "dodgerblue", fill = "dodgerblue", alpha = 0.2) + geom_point(aes(x = animals.clcenter[1], y = animals.clcenter[2]), color = "blue", size = 6)

L'estimateur Minimum Covariance Determinant (MCD) de Rousseeuw est un estimateur robuste populaire de la position et de la dispersion multivariées
Estimations robustes de position et de dispersion avec le MCD
library(robustbase)
animals.mcd <- covMcd(X)
# Estimation robuste de la position
animals.mcd$center
# Estimation robuste de la dispersion
animals.mcd$cov
En injectant ces estimations robustes de position et de dispersion dans la définition des distances de Mahalanobis, on obtient des distances robustes et on peut créer un ellipsoïde de tolérance robuste.
library(robustbase) animals.mcd <- covMcd(X) ellipse.mcd <- data.frame(ellipse(center = animals.mcd$center, shape = animals.mcd$cov, radius = rad, segments = 100, draw = FALSE)) colnames(ellipse.mcd) <- colnames(X)fig2 <- fig + geom_polygon(data = ellipse.mcd, color = "red", fill = "red", alpha = 0.3) + geom_point(aes(x = animals.mcd$center[1], y = animals.mcd$center[2]), color = "red", size = 6)

MCDplot(animals.mcd, which = "dd")


Détection de fraude en R