Outlier atau pencilan merupakan nilai datanya terlalu jauh dengan data yang berada di sekitarnya. Sehingga adanya outlier membuat analisis dalam menganalisa data menjadi bias atau belum menampilkan sesuai dengan kenyataannya. Ada beberapa cara mendeteksi outlier dengan python antara lain adalah IQR dan Z-score.
Sebagai contoh kita memiliki data nilai mahasiswa sebanyak 40 data nilai mahasiswa, dimana 2 nilai mahasiswa adalah 10 dan 15 sedangkan mahasiswa lainya nilainya diantara 80 sampai 100. Maka, 2 data nilai mahasiswa ini yang disebut data oulier. Data oulier sangat terganggu dalam mengalisa data. Secara analisis metode ini disebut juga ketidakseimbangan data atau imbalanced data.
Menemukan outlier dengan metode IQR (Interquatile Range)
Apabila data masih sedikit bisa langsung menetukan outlier terhadap data tersebut. Bagaimana data yang kita gunakan banyak sekali untuk suatu analisa. Kita dapat menemukan oulier dengan cara metode IQR.
Baca juga : Cara Penulisan Statement pada Python
IQR merupakan selisih antara kuartil ketiga dan kuartil pertama (Q3 – Q1).
1. Penggunaan IQR pada Python
Mengimport library numpy dan membuat variabel dengan nama dataset yang terdiri beberapa data secara random .
|
1 2 3 |
import numpy as np dataset = [10,15,20,30,3,18,90,85,23,-50,28,31,35,27,11] |
Pada dataset di atas, kita menggunakan data sebanyak 15.
Menentukan nilai Quantile1 (Q1), Quantile3 (Q3) dari data tersebut. Selanjutnya kita menggunakan percentile dari numpy seperti skrip di bawah ini.
|
1 2 3 |
Q1 = np.percentile(dataset,25) Q3 = np.percentile(dataset,75) |
Lalu, kita hitung nilai IQR.
|
1 2 3 4 5 6 |
## Find the IQR IQR = Q3 - Q1 print('Quartile 1 = ', Q1) print('Quartile 3 = ', Q3) print('IQR : ', IQR) |
Jika dijalankan, program akan menghasilkan output sebagai berikut.
|
1 2 3 |
Quartile 1 = 13.0 Quartile 3 = 30.5 IQR : 17.5 |
Menghitung nilai IQR minimum dan maksimum
Untuk menghitung nilai IQR minimum dan maksimum dikalikan 1.5 (nilai konstanta) seperti di bawah ini.
|
1 2 3 4 5 6 |
IQR_min = Q1 - (1.5 * IQR) IQR_mak = Q3 + (1.5 * IQR) print('IQR minimum : ', IQR_min) print('IQR maksimum: ', IQR_max) |
Output:
|
1 2 |
IQR minimum : -13.25 IQR maksimum: 56.75 |
Menghitung nilai data minimum dan maksimum
|
1 2 3 4 5 |
data_min = np.min(dataset) data_max = np.max(dataset) print('Nilai minimum : ', data_min) print('Nilai maksimum : ', data_max) |
Kode program di atas akan menampilkan output sebagai berikut.
|
1 2 |
Nilai minimum : -50 Nilai maksimum : 90 |
Menentukan data yang termasuk ke dalam outlier.
|
1 2 3 4 5 6 7 8 9 |
outlier_low = [] outlier_high = [] for x in dataset: if (x < IQR_min): outlier_low.append(x) if (x > IQR_mak): outlier_high.append(x) |
Output :
|
1 2 |
Outlier Low : [-50] Outlier High : [90, 85] |
2. Penggunaan Z-score pada Python
Z-score merupakan angka yang merupakan hasil dari perbedaan antara nilai data dan rata-rata dan dibagi dengan standar deviasi. Z-skor dapat mengukur keanehan suatu observasi ketika data kita mengikuti distribusi normal. Z-score biasanya disebut dengan nilai standar atau nilai baku. Z-skor dapat digunakan untuk membantu dalam menentukan apakah sebuah data mempunyai nilai outlier atau sebaliknya data tidak terdapat outlier.