Detekce jednorozměrných odlehlých hodnot

Detekce podvodů v R

Tim Verdonck

Professor Data Science at KU Leuven

Odlehlé hodnoty

Odlehlá hodnota je pozorování, které se odchyluje od vzoru většiny dat. odlehlá ryba Odlehlá hodnota může signalizovat podvod.

Detekce podvodů v R

Detekce odlehlých hodnot

  • Oblíbeným nástrojem pro detekci odlehlých hodnot je

    • výpočet z-skóre pro každé pozorování
    • označení pozorování jako odlehlého, pokud má jeho z-skóre absolutní hodnotu větší než 3
  • Z-skóre $z_i$ pro pozorování $x_i$ se vypočítá jako:

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

  • $\overline{x}$ je výběrový průměr: $\overline{x}=\frac{1}{n}\sum_i x_i$
  • $s$ je výběrová směrodatná odchylka: $s= \sqrt{\frac{1}{n-1}\sum_i(x_i-\hat{\mu})^2}$
Detekce podvodů v R

Datová sada loginc obsahuje měsíční příjmy 10 osob po logaritmické transformaci:

loginc: 7.876 7.681 7.628  ...  7.764 9.912 # <-- last income is clearly an outlier!
  • (1) Výpočet z-skóre každého pozorování
Mean <- mean(loginc)
Sd <- sd(loginc)
zscore <- (loginc - Mean) / Sd
  • (2) Ověření, zda jsou z-skóre větší než 3 v absolutní hodnotě
abs(zscore) > 3
FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
  • Pomocí těchto z-skóre nebyly identifikovány žádné odlehlé hodnoty!
Detekce podvodů v R

Robustní statistika

  • Klasické statistické metody se opírají o předpoklady (normality), avšak i jediná odlehlá hodnota může výrazně ovlivnit závěry a vést k zavádějícím výsledkům.
  • Robustní statistika poskytuje spolehlivé výsledky i při přítomnosti odlehlých hodnot a nabízí nástroje pro jejich automatickou detekci.
  • Je ideální rutinně používat klasické i robustní metody a znepokojovat se jen tehdy, když se dostatečně liší... Ale pokud se liší, je třeba to důkladně promyslet." J.W. Tukey (1979)
Detekce podvodů v R

Odhady polohy: průměr a medián

Výběrový průměr: $$\overline{x}=\frac{1}{n}\sum_i x_i$$

mean(loginc)

mean(loginc9)
7.986447

7.772392

loginc9 obsahuje stejná pozorování jako loginc kromě odlehlé hodnoty.

Seřadíme $n$ pozorování od nejmenšího k největšímu; výběrový medián, $Med(X_n)$, je $(n+1)/2$-té pozorování (je-li $n$ liché) nebo průměr $n/2$-tého a $(n/2+1)$-tého pozorování (je-li $n$ sudé).

median(loginc)
7.816658
median(loginc9)
7.764296
Detekce podvodů v R

Odhady rozptylu: sd

(1) Výběrová směrodatná odchylka: $$s= \sqrt{\frac{1}{n-1}\sum_i (x_i-\hat{\mu})^2}$$

sd(loginc)
0.6976615
sd(loginc9)
0.1791729
Detekce podvodů v R

Odhady rozptylu: mad, IQR

(2) Medián absolutních odchylek: $$Mad(X_n)=1.4826Med(|x_i-Med(X_n)|)$$

(3) Mezikvartilové rozpětí (normalizované): $$IQR(X_n)= IQR = 0.7413(Q_3-Q_1)$$ kde $Q_1$ a $Q_3$ jsou první a třetí kvartil dat

IQR(loginc)/1.349
0.2056784
mad(loginc)
0.2396159
mad(loginc9)
0.201305
IQR(loginc9)/1.349
0.1839295
Detekce podvodů v R

Robustní z-skóre pro detekci odlehlých hodnot

Dosadíme robustní odhady pro výpočet robustních z-skóre:

$$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
Detekce podvodů v R

Krabicový graf

  • Tukeyův krabicový graf je oblíbeným nástrojem pro identifikaci odlehlých hodnot
  • Pozorování je označeno jako odlehlé, pokud leží mimo hranice krabicového grafu $$[Q_1-1.5IQR; Q_3+1.5IQR]$$

vysvětlení krabicového grafu

Detekce podvodů v R

Příklad: délka hospitalizace (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

krabicový graf LOS ggplot

Detekce podvodů v R

Adjustovaný krabicový graf

  • U asymetrických rozdělení může krabicový graf označit mnoho běžných hodnot jako odlehlé.
  • Adjustovaný krabicový graf toto koriguje pomocí robustní míry šikmosti při určování hranic (Hubert a Vandervieren, 2008)

krabicový graf chisq

Detekce podvodů v R

Příklad LOS: adjustovaný krabicový graf

Odlehlé hodnoty dle adjustovaného krabicového grafu:

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

Statistiky vypočtené adjustovaným krabicovým grafem:

adjboxStats(los)$stats
2  4  8 13 47
Detekce podvodů v R

Příklad LOS: krabicový graf vs. adjustovaný krabicový graf

krabicový graf LOS

adjustovaný krabicový graf LOS

Detekce podvodů v R

Pojďme si procvičit!

Detekce podvodů v R

Preparing Video For Download...