Outlier: Cara Deteksi dan Kapan Boleh Dibuang
TL;DR
Outlier adalah nilai data yang jauh menyimpang dari sebagian besar nilai lain di kumpulan yang sama. Dua cara deteksi paling umum: metode IQR (nilai di luar Q1 - 1.5×IQR sampai Q3 + 1.5×IQR) dan z-score (nilai dengan skor absolut di atas 3). Outlier boleh dibuang cuma kalau kamu bisa buktikan itu error — salah input, alat rusak, atau duplikasi. Outlier yang nyata (pembeli grosir, transaksi Harbolnas) jangan dihapus, karena justru di situ sering ada insight paling berharga.
Outlier adalah nilai data yang jauh menyimpang dari sebagian besar nilai lain di kumpulan data yang sama.
Contoh gampangnya: 999 transaksi di toko kamu nilainya antara Rp 20 ribu sampai Rp 500 ribu. Terus ada satu transaksi Rp 45 juta. Itu outlier.
Pertanyaan yang lebih penting bukan "gimana cara deteksinya" — itu gampang. Yang bikin orang salah langkah: apakah outlier itu boleh dibuang?
Apa itu outlier dan kenapa dia bikin masalah?
Outlier bikin masalah karena dia narik rata-rata. Sembilan orang punya gaji Rp 8 juta, satu orang Rp 200 juta. Rata-ratanya Rp 27,2 juta — angka yang nggak menggambarkan siapa pun di ruangan itu.
Ini kenapa median sering lebih jujur dari mean kalau ada outlier. Median dari data tadi: Rp 8 juta. Jauh lebih masuk akal.
Outlier juga bikin model prediksi meleset, bikin grafik gepeng (satu batang tinggi, sisanya kelihatan rata), dan bikin standar deviasi meledak.
Gimana cara deteksi outlier pakai metode IQR?
IQR (Interquartile Range) adalah jarak antara kuartil 1 dan kuartil 3 — alias rentang di mana 50% data tengah berada.
Rumusnya:
IQR = Q3 - Q1
Batas bawah = Q1 - (1.5 × IQR)
Batas atas = Q3 + (1.5 × IQR)
Nilai di luar dua batas itu = outlier
Angka 1.5 itu konvensi, bukan hukum alam. Kalau kamu mau lebih ketat, pakai 3 — itu nangkep outlier yang benar-benar ekstrem doang.
Di SQL, deteksinya gini:
WITH nilai AS (
SELECT
transaksi_id,
kota,
qty * harga_satuan AS total
FROM transaksi
WHERE status = 'selesai'
),
kuartil AS (
SELECT
PERCENTILE_CONT(0.25) WITHIN GROUP (ORDER BY total) AS q1,
PERCENTILE_CONT(0.75) WITHIN GROUP (ORDER BY total) AS q3
FROM nilai
)
SELECT
n.transaksi_id,
n.kota,
n.total,
k.q3 - k.q1 AS iqr
FROM nilai n
CROSS JOIN kuartil k
WHERE n.total > k.q3 + 1.5 * (k.q3 - k.q1)
OR n.total < k.q1 - 1.5 * (k.q3 - k.q1)
ORDER BY n.total DESC;
Di Excel atau Google Sheets, tinggal pakai QUARTILE:
Q1 =QUARTILE(A2:A1000; 1)
Q3 =QUARTILE(A2:A1000; 3)
IQR =Q3 - Q1
Batas atas =Q3 + 1.5 * IQR
Flag outlier:
=IF(OR(A2 > $E$4; A2 < $E$5); "OUTLIER"; "")
Gimana cara deteksi outlier pakai z-score?
Z-score ngukur berapa standar deviasi sebuah nilai jauhnya dari rata-rata.
z = (nilai - rata_rata) / standar_deviasi
z absolut > 3 → outlier
Ambang 3 dipakai karena di distribusi normal, cuma sekitar 0,3% data yang jatuh di luar 3 standar deviasi. Penjelasan sebarannya ada di NIST Engineering Statistics Handbook.
Tapi ada jebakan: rata-rata dan standar deviasi sendiri bisa ditarik sama outlier. Satu nilai ekstrem bisa bikin standar deviasi membengkak, dan tiba-tiba outlier itu jadi punya z-score cuma 2,4 — lolos dari deteksi.
Aturan praktisnya:
| Kondisi data | Pakai |
|---|---|
| Distribusi miring (nilai transaksi, pendapatan) | IQR |
| Distribusi mendekati normal (tinggi badan, skor tes) | Z-score |
| Ada outlier ekstrem yang udah keliatan | IQR |
| Data bisnis Indonesia (umumnya miring ke kanan) | IQR |
Kapan outlier boleh dibuang?
Cuma kalau kamu bisa buktikan itu error. Tiga kategori yang jelas boleh:
- Salah input. Umur pelanggan 250 tahun. Harga produk minus. Qty 999999.
- Duplikasi. Satu transaksi kecatat dua kali gara-gara bug sistem.
- Alat rusak. Sensor suhu baca 500°C di gudang.
Yang nggak boleh dibuang: outlier yang nyata.
Transaksi Rp 45 juta itu bisa jadi reseller yang belanja grosir. Kalau kamu hapus, kamu baru aja ngebuang pelanggan paling berharga dari analisis kamu.
Aturan yang aku pakai: investigasi dulu, baru putuskan. Buka barisnya, lihat siapa pelanggannya, cek tanggalnya. Kalau setelah dilihat masih masuk akal sebagai kejadian nyata, biarin.
Contoh kasus: transaksi Rp 42 juta di toko_berkah
Waktu jalanin deteksi IQR di dataset toko_berkah (24.500 transaksi), hasilnya: Q1 = Rp 28.500, Q3 = Rp 96.000, jadi IQR = Rp 67.500.
Batas atasnya: Rp 96.000 + (1.5 × 67.500) = Rp 197.250.
Yang lewat batas itu: 1.183 transaksi, alias 4,8% dari total. Kedengeran banyak, tapi wajar buat data yang miring ke kanan.
Yang menarik ada di ujung ekstrem. Ada 3 transaksi di atas Rp 40 juta. Waktu aku buka barisnya, ketahuan semua dari pelanggan yang sama, semua di bulan yang sama, semua produknya beras dan minyak dalam qty ratusan.
Itu bukan error. Itu warung yang kulakan.
Kalau 3 baris itu aku hapus sebagai "outlier", aku bakal kehilangan satu-satunya sinyal bahwa toko_berkah punya segmen B2B yang belum pernah digarap.
Outlier itu pertanyaan, bukan sampah.
Apa alternatif menghapus outlier?
Tiga pilihan yang lebih aman.
Winsorize. Ganti nilai ekstrem dengan batas persentil. Semua yang di atas persentil 99 diganti jadi nilai persentil 99. Datanya tetap ada, tapi pengaruhnya ke rata-rata dijinakkan.
Transformasi log. Ubah nilai jadi log. Ini bikin selisih antara Rp 100 ribu dan Rp 45 juta jadi lebih rapat. Sering dipakai buat data pendapatan dan harga rumah.
Laporkan dua versi. Kasih hasil dengan dan tanpa outlier, tulis selisihnya. Ini paling jujur, dan paling gampang dipertanggungjawabkan waktu ditanya bos.
Kesalahan umum
Hapus outlier sebelum dilihat. Ini kesalahan nomor satu. Deteksi dulu, buka barisnya, baru putuskan.
Pakai z-score di data yang miring. Data nilai transaksi hampir selalu miring ke kanan. Z-score bakal ngasih hasil yang nggak konsisten di sini.
Buang outlier tanpa nyatat. Kalau kamu hapus 40 baris, tulis di dokumentasi: berapa baris, kriterianya apa, alasannya apa. Tanpa catatan itu, hasil analisis kamu nggak bisa direproduksi.
Anggap semua outlier itu gangguan. Di deteksi fraud, outlier justru yang kamu cari.
FAQ
Outlier adalah apa dalam statistik?
Outlier adalah nilai data yang jauh menyimpang dari sebagian besar nilai lain di kumpulan data yang sama. Kalau 999 transaksi nilainya Rp 20 ribu sampai Rp 500 ribu, lalu ada satu transaksi Rp 45 juta, itu outlier. Penyebabnya bisa error input, alat rusak, atau kejadian nyata yang luar biasa.
Kapan outlier boleh dibuang?
Cuma kalau kamu bisa buktikan itu error — umur 250 tahun, harga minus, atau baris duplikat. Outlier yang nyata (pembeli grosir, lonjakan Harbolnas, gaji CEO di data karyawan) jangan dihapus. Kalau kamu hapus, kamu bukan lagi menganalisis realitas.
Apa bedanya metode IQR dan z-score?
IQR pakai kuartil, jadi tahan terhadap outlier itu sendiri dan cocok buat data yang miring — kayak nilai transaksi. Z-score pakai rata-rata dan standar deviasi, yang bisa ditarik oleh outlier ekstrem, jadi cuma pas buat data mendekati normal. Buat data bisnis Indonesia, IQR lebih aman.
Apakah outlier selalu buruk?
Nggak. Di deteksi fraud, outlier justru yang kamu cari. Di analisis pelanggan, outlier belanja sering ternyata reseller yang bisa kamu jadikan mitra. Outlier itu pertanyaan, bukan sampah.
Apa alternatif menghapus outlier?
Winsorize (ganti nilai ekstrem dengan batas persentil), transformasi log (bikin skala lebih rapat), atau laporkan dua versi hasil — dengan dan tanpa outlier — biar pembaca lihat pengaruhnya.
Langkah berikutnya
Yang perlu kamu bawa:
- IQR buat data miring, z-score buat data normal.
- Deteksi bukan berarti hapus. Buka barisnya dulu, lihat siapa dan kapan.
- Outlier yang nyata sering jadi insight paling mahal di dataset kamu.
Ambil satu kolom angka di data kamu, hitung IQR-nya hari ini, terus buka 5 baris teratas yang lewat batas. Lihat ceritanya apa.
Kalau kamu mau lanjut ke pembersihan data secara menyeluruh, baca checklist data cleaning. Buat konsep dasarnya, cek glossary outlier dan fungsi MEDIAN.
Mau praktek langsung? Mulai latihan SQL gratis
Latihan interaktif, langsung di browser.
Artikel Terkait
Glossary Istilah Data: 60 Istilah yang Sering Muncul di Kerjaan
Rapat data penuh istilah yang bikin bingung? Ini 60 istilah data analyst yang paling sering keluar di kerjaan, dijelasin dengan bahasa manusia plus contoh konkret.
Data Warehouse vs Data Lake: Pilih Mana buat Perusahaan Kamu
Data warehouse nyimpen data yang udah rapi dan siap dipakai. Data lake nyimpen apa aja mentah-mentah. Ini cara milih yang cocok buat ukuran perusahaan kamu.
ETL vs ELT: Bedanya dan Kenapa Sekarang Banyak yang Pindah
ETL transform data sebelum masuk warehouse, ELT masukin dulu baru transform di dalam. Ini beda praktisnya, dan kenapa tim data sekarang lebih sering pilih ELT.