Mendeteksi outlier univariat

Deteksi Fraud di R

Tim Verdonck

Professor Data Science at KU Leuven

Outlier

Outlier adalah observasi yang menyimpang dari pola mayoritas data. ikan outlier Outlier bisa menjadi peringatan penipuan.

Deteksi Fraud di R

Deteksi outlier

  • Alat populer untuk deteksi outlier adalah:

    • hitung z-score untuk tiap observasi
    • tandai outlier jika nilai absolut z-score > 3
  • Z-score $z_i$ untuk observasi $x_i$ dihitung:

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

  • $\overline{x}$ adalah rata-rata sampel: $\overline{x}=\frac{1}{n}\sum_i x_i$
  • $s$ adalah simpangan baku sampel: $s= \sqrt{\frac{1}{n-1}\sum_i(x_i-\hat{\mu})^2}$
Deteksi Fraud di R

Dataset loginc berisi pendapatan bulanan 10 orang setelah transformasi log:

loginc: 7.876 7.681 7.628  ...  7.764 9.912 # <-- pendapatan terakhir jelas outlier!
  • (1) Hitung z-score tiap observasi
Mean <- mean(loginc)
Sd <- sd(loginc)
zscore <- (loginc - Mean) / Sd
  • (2) Periksa apakah z-score lebih besar dari 3 (nilai absolut)
abs(zscore) > 3
FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
  • Tidak ada outlier yang teridentifikasi dengan z-score ini!
Deteksi Fraud di R

Statistik robust

  • Metode statistik klasik bergantung pada asumsi (normalitas), tetapi satu outlier saja dapat sangat memengaruhi kesimpulan dan menyesatkan.
  • Statistik robust tetap andal saat data mengandung outlier dan menyediakan alat deteksi outlier otomatis.
  • "Sebaiknya gunakan metode klasik dan robust secara rutin, dan hanya khawatir saat hasilnya berbeda cukup jauh... Namun jika berbeda, pikirkan masak-masak." J.W. Tukey (1979)
Deteksi Fraud di R

Estimator lokasi: mean & median

Rata-rata sampel: $$\overline{x}=\frac{1}{n}\sum_i x_i$$

mean(loginc)

mean(loginc9)
7.986447

7.772392

loginc9 berisi observasi yang sama dengan loginc kecuali outlier.

Urutkan $n$ observasi dari kecil ke besar, lalu median sampel, $Med(X_n)$, adalah observasi ke-$(n+1)/2$ (jika $n$ ganjil) atau rata-rata observasi ke-$n/2$ dan ke-$(n/2+1)$ (jika $n$ genap).

median(loginc)
7.816658
median(loginc9)
7.764296
Deteksi Fraud di R

Estimator skala: sd

(1) Simpangan baku sampel: $$s= \sqrt{\frac{1}{n-1}\sum_i (x_i-\hat{\mu})^2}$$

sd(loginc)
0.6976615
sd(loginc9)
0.1791729
Deteksi Fraud di R

Estimator skala: mad, IQR

(2) Median absolute deviation: $$Mad(X_n)=1.4826Med(|x_i-Med(X_n)|)$$

(3) Rentang interkuartil (dinormalisasi): $$IQR(X_n)= IQR = 0.7413(Q_3-Q_1)$$ di mana $Q_1$ dan $Q_3$ adalah kuartil pertama dan ketiga

IQR(loginc)/1.349
0.2056784
mad(loginc)
0.2396159
mad(loginc9)
0.201305
IQR(loginc9)/1.349
0.1839295
Deteksi Fraud di R

Z-score robust untuk deteksi outlier

Gunakan estimator robust untuk menghitung z-score robust:

$$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 ## Periksa outlier
FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE TRUE
robzscore[10] ## Z-score robust untuk outlier
8.748523
Deteksi Fraud di R

Boxplot

  • Boxplot Tukey juga populer untuk mengidentifikasi outlier
  • Observasi ditandai outlier jika berada di luar pagar boxplot $$[Q_1-1.5IQR; Q_3+1.5IQR]$$

penjelasan boxplot

Deteksi Fraud di R

Contoh: lama rawat inap (LOS) di rumah sakit

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

boxplotlos_ggplot

Deteksi Fraud di R

Boxplot tereskalasi (adjusted)

  • Pada distribusi asimetris, boxplot bisa menandai banyak titik biasa sebagai outlier.
  • Skewness-adjusted boxplot mengoreksinya dengan ukuran kemiringan yang robust untuk menentukan pagar (Hubert dan Vandervieren, 2008)

chisqbp

Deteksi Fraud di R

Contoh LOS: adjusted boxplot

Outlier menurut adjusted boxplot:

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

Statistik dari adjusted boxplot:

adjboxStats(los)$stats
2  4  8 13 47
Deteksi Fraud di R

Contoh LOS: boxplot vs adjusted boxplot

Boxplot LOS

Adjusted LOS

Deteksi Fraud di R

Ayo berlatih!

Deteksi Fraud di R

Preparing Video For Download...