Tek değişkenli aykırı değerleri tespit etme

R ile Dolandırıcılık Tespiti

Tim Verdonck

Professor Data Science at KU Leuven

Aykırı değerler

Aykırı değer, verilerin çoğunun deseninden sapan gözlemdir. aykırı balık Aykırı değer, dolandırıcılık için uyarı olabilir.

R ile Dolandırıcılık Tespiti

Aykırı değer tespiti

  • Aykırı değer tespiti için popüler bir araç,

    • her gözlem için z-skoru hesaplamak
    • z-skorunun mutlak değeri 3'ten büyükse gözlemi aykırı olarak işaretlemektir
  • Gözlem $x_i$ için z-skoru $z_i$ şöyle hesaplanır:

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

  • $\overline{x}$, örneklem ortalaması: $\overline{x}=\frac{1}{n}\sum_i x_i$
  • $s$, örneklem standart sapması: $s= \sqrt{\frac{1}{n-1}\sum_i(x_i-\hat{\mu})^2}$
R ile Dolandırıcılık Tespiti

loginc veri kümesi, log dönüşümünden sonra 10 kişinin aylık gelirlerini içerir:

loginc: 7.876 7.681 7.628  ...  7.764 9.912 # <-- son gelir açıkça aykırı!
  • (1) Her gözlemin z-skorunu hesapla
Mean <- mean(loginc)
Sd <- sd(loginc)
zscore <- (loginc - Mean) / Sd
  • (2) z-skorlarının mutlak değerce 3'ten büyük olup olmadığını kontrol et
abs(zscore) > 3
FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
  • Bu z-skorlarıyla hiç aykırı değer bulunmadı!
R ile Dolandırıcılık Tespiti

Sağlam istatistikler

  • Klasik istatistiksel yöntemler (normallik) varsayımlarına dayanır; ancak tek bir aykırı değer bile sonuçları ciddi biçimde etkileyip yanıltıcı olabilir.
  • Sağlam (robust) istatistikler, veri aykırı değer içerse bile güvenilir sonuçlar üretir ve otomatik aykırı değer araçları sunar.
  • "Klasik ve sağlam yöntemleri rutin olarak birlikte kullanmak mükemmeldir ve yalnızca fark anlamlı olacak kadar büyükse endişelen... Ama farklı olduklarında, iyi düşünmelisin." J.W. Tukey (1979)
R ile Dolandırıcılık Tespiti

Konum kestiricileri: ortalama ve medyan

Örneklem ortalaması: $$\overline{x}=\frac{1}{n}\sum_i x_i$$

mean(loginc)

mean(loginc9)
7.986447

7.772392

loginc9, loginc ile aynı gözlemleri içerir; yalnızca aykırı değer çıkarılmıştır.

$n$ gözlemi küçükten büyüğe sırala; sonra örneklem medyanı $Med(X_n)$, $n$ tek ise $(n+1)/2$. gözlemdir; $n$ çift ise $n/2$. ve $n/2+1$. gözlemlerin ortalamasıdır.

median(loginc)
7.816658
median(loginc9)
7.764296
R ile Dolandırıcılık Tespiti

Ölçek kestiricileri: sd

(1) Örneklem standart sapması: $$s= \sqrt{\frac{1}{n-1}\sum_i (x_i-\hat{\mu})^2}$$

sd(loginc)
0.6976615
sd(loginc9)
0.1791729
R ile Dolandırıcılık Tespiti

Ölçek kestiricileri: mad, IQR

(2) Medyan mutlak sapma: $$Mad(X_n)=1.4826Med(|x_i-Med(X_n)|)$$

(3) Çeyrekler arası aralık (normalize): $$IQR(X_n)= IQR = 0.7413(Q_3-Q_1)$$ burada $Q_1$ ve $Q_3$ verinin birinci ve üçüncü çeyrekleridir

IQR(loginc)/1.349
0.2056784
mad(loginc)
0.2396159
mad(loginc9)
0.201305
IQR(loginc9)/1.349
0.1839295
R ile Dolandırıcılık Tespiti

Aykırı değer tespiti için sağlam z-skorları

Sağlam z-skorları için sağlam kestiricileri yerine koy:

$$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 ## Aykırı değer kontrolü
FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE TRUE
robzscore[10] ## Aykırı değerin sağlam z-skoru
8.748523
R ile Dolandırıcılık Tespiti

Boxplot

  • Tukey'nin boxplot'ı aykırı değerleri belirlemek için de popülerdir
  • Gözlem, boxplot çitinin dışındaysa aykırı olarak işaretlenir $$[Q_1-1.5IQR; Q_3+1.5IQR]$$

boxplot açıklaması

R ile Dolandırıcılık Tespiti

Örnek: hastanede kalış süresi (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

los boxplot ggplot

R ile Dolandırıcılık Tespiti

Ayarlı boxplot

  • Asimetrik dağılımlarda, boxplot birçok normal noktayı aykırı diye işaretleyebilir.
  • Çarpıklık ayarlı boxplot, çiti belirlerken sağlam bir çarpıklık ölçüsü kullanarak bunu düzeltir (Hubert ve Vandervieren, 2008)

ki-kare boxplot

R ile Dolandırıcılık Tespiti

Örnek LOS: ayarlı boxplot

Ayarlı boxplot'a göre aykırı değerler:

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

Ayarlı boxplot tarafından hesaplanan istatistikler:

adjboxStats(los)$stats
2  4  8 13 47
R ile Dolandırıcılık Tespiti

Örnek LOS: boxplot vs ayarlı boxplot

LOS_boxplot

LOS_adjbox

R ile Dolandırıcılık Tespiti

Hadi pratik yapalım!

R ile Dolandırıcılık Tespiti

Preparing Video For Download...