Detectarea valorilor aberante univariate

Detecția fraudelor în R

Tim Verdonck

Professor Data Science at KU Leuven

Valori aberante

O valoare aberantă este o observație care se abate de la tiparul majorității datelor. pește aberant O valoare aberantă poate semnala o fraudă.

Detecția fraudelor în R

Detectarea valorilor aberante

  • Un instrument popular pentru detectarea valorilor aberante constă în:

    • calcularea scorului z pentru fiecare observație
    • marcarea observației ca aberantă dacă scorul z are valoare absolută mai mare de 3
  • Scorul z $z_i$ pentru observația $x_i$ se calculează astfel:

$$z_i=\frac{x_i-\hat{\mu}}{\hat{\sigma}} = \frac{x_i-\overline{x}}{s}$$

  • $\overline{x}$ este media eșantionului: $\overline{x}=\frac{1}{n}\sum_i x_i$
  • $s$ este abaterea standard a eșantionului: $s= \sqrt{\frac{1}{n-1}\sum_i(x_i-\hat{\mu})^2}$
Detecția fraudelor în R

Setul de date loginc conține veniturile lunare ale 10 persoane după transformarea logaritmică:

loginc: 7.876 7.681 7.628  ...  7.764 9.912 # <-- last income is clearly an outlier!
  • (1) Calculați scorul z al fiecărei observații
Mean <- mean(loginc)
Sd <- sd(loginc)
zscore <- (loginc - Mean) / Sd
  • (2) Verificați dacă scorurile z sunt mai mari de 3 în valoare absolută
abs(zscore) > 3
FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
  • Nu sunt identificate valori aberante cu aceste scoruri z!
Detecția fraudelor în R

Statistică robustă

  • Metodele statistice clasice se bazează pe ipoteze (de normalitate), dar chiar și o singură valoare aberantă poate influența semnificativ concluziile și poate duce la rezultate eronate.
  • Statistica robustă produce rezultate fiabile și atunci când datele conțin valori aberante și oferă instrumente automate de detectare a acestora.
  • „Este ideal să utilizați în mod curent atât metodele clasice, cât și cele robuste și să vă îngrijorați doar când diferă suficient de mult... Dar când diferă, trebuie să analizați cu atenție." J.W. Tukey (1979)
Detecția fraudelor în R

Estimatori ai locației: medie și mediană

Media eșantionului: $$\overline{x}=\frac{1}{n}\sum_i x_i$$

mean(loginc)

mean(loginc9)
7.986447

7.772392

loginc9 conține aceleași observații ca loginc, cu excepția valorii aberante.

Ordonați cele $n$ observații de la mic la mare; mediana eșantionului, $Med(X_n)$, este observația de rang $(n+1)/2$ (dacă $n$ este impar) sau media observațiilor de rang $n/2$ și $n/2+1$ (dacă $n$ este par).

median(loginc)
7.816658
median(loginc9)
7.764296
Detecția fraudelor în R

Estimatori ai dispersiei: sd

(1) Abaterea standard a eșantionului: $$s= \sqrt{\frac{1}{n-1}\sum_i (x_i-\hat{\mu})^2}$$

sd(loginc)
0.6976615
sd(loginc9)
0.1791729
Detecția fraudelor în R

Estimatori ai dispersiei: mad, IQR

(2) Deviația absolută mediană: $$Mad(X_n)=1.4826Med(|x_i-Med(X_n)|)$$

(3) Intervalul intercuartilic (normalizat): $$IQR(X_n)= IQR = 0.7413(Q_3-Q_1)$$ unde $Q_1$ și $Q_3$ sunt primul și al treilea cuartilă ale datelor

IQR(loginc)/1.349
0.2056784
mad(loginc)
0.2396159
mad(loginc9)
0.201305
IQR(loginc9)/1.349
0.1839295
Detecția fraudelor în R

Scoruri z robuste pentru detectarea valorilor aberante

Utilizați estimatorii robuști pentru a calcula scoruri z robuste:

$$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 ## Check for outliers
FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE TRUE
robzscore[10] ## Robust z-score of the outlier
8.748523
Detecția fraudelor în R

Boxplot

  • Boxplot-ul lui Tukey este un instrument popular pentru identificarea valorilor aberante
  • O observație este marcată ca aberantă dacă se află în afara limitelor boxplot-ului $$[Q_1-1.5IQR; Q_3+1.5IQR]$$

explicație boxplot

Detecția fraudelor în R

Exemplu: durata spitalizării (LOS)

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

boxplot_los_ggplot

Detecția fraudelor în R

Boxplot ajustat

  • La distribuții asimetrice, boxplot-ul poate marca mulți puncte normale ca aberante.
  • Boxplot-ul ajustat pentru asimetrie corectează acest lucru folosind o măsură robustă a asimetriei la determinarea limitelor (Hubert și Vandervieren, 2008)

chisqbp

Detecția fraudelor în R

Exemplu LOS: boxplot ajustat

Valori aberante conform boxplot-ului ajustat:

library(robustbase)
adjbox(los)$out
59  67 102

Statistici calculate de boxplot-ul ajustat:

adjboxStats(los)$stats
2  4  8 13 47
Detecția fraudelor în R

Exemplu LOS: boxplot vs. boxplot ajustat

boxplot LOS

boxplot ajustat LOS

Detecția fraudelor în R

Să exersăm!

Detecția fraudelor în R

Preparing Video For Download...