R 的詐欺偵測
Tim Verdonck
Professor Data Science at KU Leuven
MASS 套件的 Animals 資料集包含「28 種動物的平均腦重與體重」。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))
體重與腦重取對數後的「盒狀圖」


觀測值的「Mahalanobis(廣義)距離」是該點到中心的距離,並考量共變異矩陣。

「傳統 Mahalanobis 距離」:以「樣本平均」估計位置、以「樣本共變異矩陣」估計散佈。
偵測多變量離群值時,將 Mahalanobis 距離與臨界值比較;臨界值由卡方分配導出。
在 2 維中可構造對應的「$97.5\%$ 容忍橢球」,定義為 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)

Rousseeuw 的「最小共變異行列式(MCD)」是常見的強健多變量位置與散佈估計量。
使用 MCD 取得強健的位置與散佈估計
library(robustbase)
animals.mcd <- covMcd(X)
# 強健的位置估計
animals.mcd$center
# 強健的散佈估計
animals.mcd$cov
將這些強健的位置與散佈估計帶入 Mahalanobis 距離的定義,可得到「強健距離」,並據此建立強健的容忍橢球。
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)

MCD 物件得到的傳統 Mahalanobis 距離。plot(animals.mcd, which = "dd")


R 的詐欺偵測