Apa yang bisa dilakukan jika kita mengetahui dalam data terdapat outlier?

Outlier atau pencilan adalah data yang nilainya terlalu jauh dengan data lainnya. Keberadaan outlier akan membuat analisis terhadap data tersebut menjadi bias atau dengan kata lain tidak mencerminkan fenomena yang sebenarnya.

Contoh outliers misalnya nilai mahasiswa dalam satu kelas berkisar antara 60 sampai 100, namun ada satu mahasiswa yang nilainya 5. Nah, nilai 5 ini dianggap sebagai outliers karena tentunya akan mempengaruhi statistik data seperti mean alias nilai rata-rata kelas. Oleh sebab itu, biasanya data yang mengandung outliers akan dihapus.

Apa yang bisa dilakukan jika kita mengetahui dalam data terdapat outlier?

Menemukan outlier dengan IQR Score

Jika data yang kita miliki hanya sedikit seperti contoh di atas, tentunya kita akan dapat dengan mudah menemukan outlier-nya. Namun, jika kita bekerja menggunakan dataset yang jumlahnya ratusan bahkan ribuan baris pasti sulit menemukannya.

Nah, Salah satu cara untuk menemukan outlier adalah dengan IQR Score.

Baca Juga: 3 Cara Menambahkan Kolom Baru Pada Dataframe Pandas

IQR atau Interquartile Range adalah selisih dari kuartil ketiga (persentil 75) dengan kuartil pertama (persentil 25). Jika ditulis dalam formula IQR = Q3 – Q1.

Di Python, kita dapat menerapkan cara ini dengan beberapa tahap.

Penerapan IQR Score di Python

Agar Anda dapat membandingkan hasilnya dengan cara manual, contoh di sini akan menggunakan sedikit data saja.

Sebelumnya kita harus mengimpor Numpy terlebih dahulu.

import numpy as np

Kemudian kita definisikan data yang akan digunakan.

data = [5, 7, 9, 3, 4, -20, 3, 8, 8, 6, 90, 7, 56]

Seperti yang dapat dilihat di atas, ada 13 data yang akan digunakan. Jika kita amati tentunya kita dapat mengetahui dari rentetan bilangan tersebut yang termasuk outlier adalah -20, 90, dan 56, bukan?!

Sekarang bagaimana kode Python-nya untuk mendapatkan bilangan-bilangan tersebut?

Cari Q1 dan Q3, kemudian hitung IQR

Pertama kita harus mencari kuartil 1 dan kuartil 3 dari data tersebut. Kita dapat menggunakan quantile() dari Numpy seperti di bawah ini.

# Hitung nilai Q1 dan Q3
Q1 = np.quantile(data, .25)
Q3 = np.quantile(data, .75)

Selanjutnya kita cari nilai IQR-nya.

# Hitung nilai IQR
IQR = Q3 - Q1

Baca Juga: Membuat Line Plot dengan Matplotlib Python

Sekarang mari kita print hasilnya.

print('Kuartil 1 = ', Q1)
print('Kuartil 3 = ', Q3)
print('IQR = ', IQR)

Output:

    Kuartil 1 =  4.0
    Kuartil 3 =  8.0
    IQR =  4.0

Apa yang bisa dilakukan jika kita mengetahui dalam data terdapat outlier?

Hitung IQR minimum dan maksimum

Selanjutnya, kalikan IQR dengan 1.5 (konstanta untuk menemukan outliers) untuk mendapatkan nilai IQR minimum dan maksimum.

Untuk IQR minimum, kurangi Q1 dengan 1.5 x IQR, sedangkan untuk IQR maksimum, tambahkan Q3 dengan 1.5 x IQR

min_IQR = Q1 - 1.5 * IQR
max_IQR = Q3 + 1.5 * IQR

print('IQR minimum = ', min_IQR)
print('IQR maksimum = ', max_IQR)

Output:

    IQR minimum =  -2.0
    IQR maksimum =  14.0

Cari nilai minimun dan maksimum dari data

Kemudian cari nilai minimum dan maksimum dari data.

nilai_min = np.min(data)
nilai_max = np.max(data)

print('Nilai minimum data = ', nilai_min)
print('Nilai maksimum data = ', nilai_max)

Output:

    Nilai minimum data =  -20
    Nilai maksimum data =  90

Buat kondisi untuk mendefinisikan outlier

Selanjutnya, buat kondisi di mana jika nilai minimum data lebih kecil dari IQR minimum, berarti ada low outlier, dan jika nilai maksimum data lebih besar dari IQR maksimum, berarti ada high outlier.

if (nilai_min < min_IQR):
   print('Ditemukan low outlier!')
else:
   print('Tidak ditemukan low outlier!')  

if (nilai_max > max_IQR):
   print('Ditemukan high outlier!')
else:
    print('Tidak ditemukan high outlier!')

Output:

    Ditemukan low outlier!
    Ditemukan high outlier!

Dapat kita lihat bahwa ada low outlier atau data yang nilainya jauh di bawah range nilai normal, dan juga high outlier atau data yang nilainya jauh di atas range nilai normal.

Baca Juga: Manipulasi Series Pandas dengan map() Python

Sekarang mari kita tampilkan data yang termasuk outlier.

low_out = []
high_out = []

for i in data:
   if (i < min_IQR):
       low_out.append(i)
   if (i > max_IQR):
       high_out.append(i)

print('Low outlier : ', low_out)
print('High outlier : ', high_out)

Output:

    Low outlier :  [-20]
    High outlier :  [90, 56]

Dapat kita lihat bahwa dengan menggunakan IQR Score, juga didapatkan 3 outlier yaitu -20, 90, dan 56. Itulah cara penerapan IQR untuk menemukan outlier menggunakan Python.

Ketika data outlier muncul tindakan apa yang harus dilakukan?

Jika outlier tampaknya muncul akibat oleh kesalahan dalam data Anda; coba substitusi nilai outlier menggunakan mean atau median variabel berdasarkan distribusi data atau menggunakan model regresi untuk memprediksi nilai yang hilang.

Bagaimana cara mendeteksi adanya outlier dalam data penelitian?

Caranya adalah dengan melihat jarak antara rata-rata dan median sekelompok data tersebut. Semakin jauh jarak antara rata-rata dan mediannya maka semakin besar kemungkinan adanya outlier dalam sekelompok data tersebut.

Apabila ingin melakukan uji outlier data maka langkah pertama yang harus dilakukan adalah?

Langkah pertama adalah melakukan deteksi outlier. Dalam hal ini yang dideteksi adalah outlier univariat dan multivariat sekaligus. Caranya kita harus melakukan uji regresi linear seperti biasanya.

Apakah data outlier harus dibuang?

Pengeluaran data outliers atau penggunaan data outliers tidak semata-mata merujuk kepada statistiknya, tetapi juga adjustment dari peneliti. Jika memang data outliers tersebut tidak dapat dikeluarkan karena masih merupakan fenomena subjek penelitian ya sebaiknya tetap dipergunakan.