Detektering av multivariata avvikare

Bedrägeridetektering i R

Tim Verdonck

Professor Data Science at KU Leuven

Animals-data

  • Datamängden Animals i paketet MASS innehåller genomsnittlig hjärn- och kroppsvikt för 28 djur
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
  • Tillämpa logaritmisk transformation på både kroppsvikt och hjärnvikt
X <- data.frame(log_body = log(Animals$body), log_brain = log(Animals$brain))
Bedrägeridetektering i R

Animals-data: univariat avvikardetektering

Lådagram över logaritmerna för kroppsvikt och hjärnvikt

Lådagram för djurdata

Bedrägeridetektering i R

Animals-data: spridningsdiagram

Spridningsdiagram för djurdata

Bedrägeridetektering i R

Mahalanobisavstånd

Mahalanobisavstånd (generaliserat avstånd) för en observation är avståndet från observationen till centrum, med hänsyn till kovariansmatrisen

Jämförelse mellan Mahalanobis- och euklidiskt avstånd

Bedrägeridetektering i R

Mahalanobisavstånd för detektering av multivariata avvikare

  • Klassiska Mahalanobisavstånd: stickprovsmedelvärdet som skattning för läge och stickprovarkovariansmatrisen som skattning för spridning

  • För att detektera multivariata avvikare jämförs Mahalanobisavståndet med ett gränsvärde härlett från khikvadratfördelningen

  • I två dimensioner kan vi konstruera ett motsvarande $97,5\%$ toleransellipsoid, definierat av de observationer vars Mahalanobisavstånd inte överstiger gränsvärdet

Bedrägeridetektering i R

Toleransellipsoid baserad på Mahalanobisavstånd

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)
Bedrägeridetektering i R

Toleransellipsoid baserad på Mahalanobisavstånd för djurdata

Bedrägeridetektering i R

Robusta skattningar av läge och spridning

Minimum Covariance Determinant (MCD)-skattaren av Rousseeuw är en populär robust skattare av multivariata läges- och spridningsparametrar

  • MCD söker efter de $h$ observationer vars klassiska kovariansmatris har lägsta möjliga determinant
  • MCD-skattningen av läge är då medelvärdet av dessa $h$ observationer
  • MCD-skattningen av spridning är då stickprovskovariansmatrisen för dessa $h$ punkter (multiplicerad med en konsistensfaktor)
  • Ett omviktningssteg tillämpas för att förbättra effektiviteten vid normalfördelade data
  • Beräkning av MCD är krävande, men flera snabba algoritmer har föreslagits
Bedrägeridetektering i R

Robust avstånd

Robusta skattningar av läge och spridning med MCD

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

# Robust estimate of location
animals.mcd$center 

# Robust estimate of scatter
animals.mcd$cov

Genom att sätta in dessa robusta skattningar av läge och spridning i definitionen av Mahalanobisavstånden erhåller vi robusta avstånd och kan skapa ett robust toleransellipsoid.

Bedrägeridetektering i R

Animals: robust toleransellipsoid

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)
Bedrägeridetektering i R

Robust toleransellipsoid för djurdata

Bedrägeridetektering i R

Avstånd-avstånd-diagram

  • När $p>3$ går det inte att visualisera toleransellipsoiden.
  • Avstånd-avstånd-diagrammet visar det robusta avståndet för varje observation mot dess klassiska Mahalanobisavstånd, hämtat direkt från MCD-objektet
    plot(animals.mcd, which = "dd")
    
    Avstånd-avstånd-diagram för djurdata
Bedrägeridetektering i R

Animals: kontrollera avvikare

Avvikardetektering för djurdata

Bedrägeridetektering i R

Nu kör vi en övning!

Bedrägeridetektering i R

Preparing Video For Download...