Detectando outliers multivariados

Detecção de Fraudes em R

Tim Verdonck

Professor Data Science at KU Leuven

Dados de Animals

  • O conjunto Animals, do pacote MASS, contém pesos médios de cérebro e corpo para 28 animais
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
  • Aplique transformação logarítmica aos pesos de corpo e cérebro
X <- data.frame(log_body = log(Animals$body), log_brain = log(Animals$brain))
Detecção de Fraudes em R

Dados de Animals: detecção univariada de outliers

Boxplot dos logaritmos do peso do corpo e do cérebro

animalsbp

Detecção de Fraudes em R

Dados de Animals: gráfico de dispersão

scatteranimals_ggplot

Detecção de Fraudes em R

Distância de Mahalanobis

A distância de Mahalanobis (ou generalizada) de uma observação é a distância até o centro, levando em conta a matriz de covariância

mahalanobiseuclidean_ggplot

Detecção de Fraudes em R

Distância de Mahalanobis para detectar outliers multivariados

  • Distâncias de Mahalanobis clássicas: média amostral como estimativa de posição e matriz de covariância amostral como estimativa de dispersão

  • Para detectar outliers multivariados, a distância de Mahalanobis é comparada a um valor de corte derivado da distribuição qui-quadrado

  • Em duas dimensões, podemos construir o elipsoide de tolerância de $97.5\%$, definido pelas observações cuja distância de Mahalanobis não excede o corte

Detecção de Fraudes em R

Elipsoide de tolerância baseado na distância de Mahalanobis

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)
Detecção de Fraudes em R

cltolanimals_ggplot

Detecção de Fraudes em R

Estimativas robustas de posição e dispersão

O estimador Minimum Covariance Determinant (MCD), de Rousseeuw, é um estimador robusto popular de posição e dispersão multivariadas

  • O MCD busca as $h$ observações cuja matriz de covariância clássica tem o menor determinante possível
  • A estimativa MCD de posição é a média dessas $h$ observações
  • A estimativa MCD de dispersão é a matriz de covariância amostral desses $h$ pontos (multiplicada por um fator de consistência)
  • Um passo de reponderação é aplicado para melhorar a eficiência em dados normais
  • O cálculo do MCD é difícil, mas há algoritmos rápidos propostos
Detecção de Fraudes em R

Distância robusta

Estimativas robustas de posição e dispersão usando MCD

library(robustbase)
animals.mcd <- covMcd(X)

# Robust estimate of location
animals.mcd$center 

# Robust estimate of scatter
animals.mcd$cov

Ao inserir essas estimativas robustas na definição das distâncias de Mahalanobis, obtemos distâncias robustas e podemos criar um elipsoide de tolerância robusto.

Detecção de Fraudes em R

Animals: elipsoide de tolerância robusto

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)
Detecção de Fraudes em R

robtolanimals_ggplot_v3.png

Detecção de Fraudes em R

Gráfico distância-distância

  • Quando $p>3$ não é possível visualizar o elipsoide de tolerância.
  • O gráfico distância-distância mostra a distância robusta de cada observação versus sua distância de Mahalanobis clássica obtida diretamente do objeto MCD
    plot(animals.mcd, which = "dd")
    
    animalsddplot
Detecção de Fraudes em R

Animals: verificar outliers

animalsdetection

Detecção de Fraudes em R

Vamos praticar!

Detecção de Fraudes em R

Preparing Video For Download...