Bhyllabus l'énigme

Les pèlerins au-dessus des nuages

Belajar Analisis Data – Hari 5: Persentil, Kuartil, dan Boxplot

Ilustrasi kotak boxplot vertikal dengan label Q1 dan Q3 serta satu titik outlier, dengan judul Belajar Analisis Data Hari 5: Persentil, Kuartil, dan Boxplot

Ringkasan: Persentil dan kuartil membagi data yang sudah diurutkan menjadi bagian-bagian yang kurang lebih sama banyak, dan boxplot menggambarkan pembagian itu dalam satu gambar. Bagi data analyst, IQR (selisih Q3 dan Q1) adalah cara ringkas untuk mengukur sebaran dan menemukan nilai yang perlu diperiksa lebih lanjut.

Tujuan belajar

  • Menghitung Q1, median, Q3, dan IQR dari satu kumpulan data.
  • Membaca boxplot dan menjelaskan apa yang diwakili kotak, garis tengah, whisker, dan titik.
  • Menentukan outlier dengan aturan 1,5 × IQR, sambil memahami bahwa aturan itu hanya titik awal pemeriksaan.

Konsep inti

Pemula sering mengira kotak pada boxplot menggambarkan seluruh data. Padahal kotak hanya menunjukkan separuh data di tengah. Untuk memahaminya, saya mulai dari persentil.

Persentil adalah nilai yang berada di atas atau di bawah sejumlah persen tertentu dari data. Kuartil pertama (Q1) didefinisikan Minitab sebagai nilai terurut sehingga 25 persen nilai data lebih kecil atau sama dengan nilai tersebut (Minitab, n.d.).

Kuartil adalah tiga persentil khusus yang membagi data menjadi empat bagian: Q1 (persentil ke-25), Q2 (persentil ke-50, yaitu median), dan Q3 (persentil ke-75). Median yang sudah kita bahas pada Hari 4 adalah Q2.

IQR (interquartile range, rentang antarkuartil) adalah selisih Q3 dikurangi Q1. Ukuran ini menggambarkan lebar rentang tempat 50 persen data tengah berada. NIST menyebut IQR sebagai ukuran skala yang dipakai boxplot, dan IQR kurang terpengaruh nilai ekstrem dibanding standar deviasi (NIST/SEMATECH, n.d.).

Outlier pada boxplot gaya Tukey dihitung dengan batas 1,5 × IQR di atas Q3 dan di bawah Q1. Whisker atas berhenti di nilai terbesar yang masih berada dalam batas, dan whisker bawah di nilai terkecil yang masih dalam batas. Nilai di luar batas digambar sebagai titik (Wikipedia, n.d.). Aturan 1,5 × IQR adalah konvensi, bukan kebenaran mutlak, jadi titik di luar batas belum tentu salah input.

Ilustrasi berikut memakai 11 nilai sintetis: 12, 15, 17, 20, 22, 25, 28, 31, 35, 40, dan 75. Dengan metode setengah data (median dari bagian bawah dan bagian atas, tanpa memasukkan median keseluruhan), Q1 = 17, Q2 = 25, Q3 = 35, dan IQR = 18. Batas atas adalah 35 + 1,5 × 18 = 62, sehingga 75 adalah outlier.

Garis bilangan 0 sampai 80 dengan 11 titik data sintetis; kotak IQR berada di antara Q1 = 17 dan Q3 = 35, Q2 = 25 di tengah, dan satu titik outlier di 75
Kotak IQR memuat sebagian besar data di tengah, sedangkan 75 berada di luar batas atas. Data sintetis.

Ada satu hal yang membingungkan saat saya berlatih: angka kuartil bisa berbeda antar-alat hitung. Minitab mencatat bahwa kuartil adalah nilai hasil hitungan yang sering kali perlu interpolasi di antara dua nilai terurut (Minitab, n.d.). Pandas, dengan pengaturan default-nya, memakai interpolasi linear pada data yang sama dan mendapat Q1 = 18,5 serta Q3 = 33, sehingga IQR-nya 14,5. Saya memeriksanya dengan menjalankan kodenya sendiri. Jadi, sebelum membandingkan dua angka, catat dulu metode yang dipakai.

Diagram berikut menunjukkan bagian-bagian boxplot untuk data tersebut. Whisker atas berhenti di 40 karena 75 berada di luar batas.

Anatomi boxplot untuk data 12, 15, 17, 20, 22, 25, 28, 31, 35, 40, 75Boxplot horizontal dengan kotak dari Q1 = 17 sampai Q3 = 35, garis median di 25, whisker kiri ke 12, whisker kanan ke 40, dan titik outlier di 75.Anatomi boxplot: data 12 sampai 75Q1 = 17Q3 = 35Q2 = 2575020406080Kotak: dari Q1 sampai Q3, lebarnya IQR = 18Garis di dalam kotak: median (Q2 = 25)Whisker: sampai nilai terdekat dalam batas 1,5 × IQR (12 dan 40)Titik: outlier di luar batas (75)

Ketiga contoh kode berikut memakai data sintetis yang sama. Ketiganya menghitung kuartil dengan interpolasi, bukan dengan hitungan setengah data, sehingga angkanya bisa berbeda dari contoh manual di atas.

Contoh kode

-- SQL (PostgreSQL): Q1, median, dan Q3 dengan PERCENTILE_CONT
WITH data(nilai) AS (
  VALUES (12), (15), (17), (20), (22), (25), (28), (31), (35), (40), (75)
)
SELECT
  PERCENTILE_CONT(0.25) WITHIN GROUP (ORDER BY nilai) AS q1,  -- persentil ke-25 (interpolasi)
  PERCENTILE_CONT(0.50) WITHIN GROUP (ORDER BY nilai) AS q2,  -- median
  PERCENTILE_CONT(0.75) WITHIN GROUP (ORDER BY nilai) AS q3   -- persentil ke-75 (interpolasi)
FROM data;
# Python (pandas): kuartil, IQR, dan deteksi outlier
import pandas as pd

nilai = pd.Series([12, 15, 17, 20, 22, 25, 28, 31, 35, 40, 75])

q1 = nilai.quantile(0.25)    # 18,5 dengan interpolasi linear (default)
q2 = nilai.quantile(0.50)    # median = 25
q3 = nilai.quantile(0.75)    # 33
iqr = q3 - q1

batas_bawah = q1 - 1.5 * iqr
batas_atas = q3 + 1.5 * iqr
outlier = nilai[(nilai < batas_bawah) | (nilai > batas_atas)]

print("Q1:", q1, "| Q2:", q2, "| Q3:", q3, "| IQR:", iqr)
print("Outlier:", outlier.tolist())   # [75]
# R (tidyverse): kuartil dan IQR
library(tidyverse)

tibble(nilai = c(12, 15, 17, 20, 22, 25, 28, 31, 35, 40, 75)) |>
  summarise(
    q1  = quantile(nilai, 0.25),   # tipe 7 (default R): interpolasi linear
    q2  = median(nilai),
    q3  = quantile(nilai, 0.75),
    iqr = IQR(nilai)               # sama dengan q3 - q1
  )

Contoh kecil. Ubah nilai 75 menjadi 90 pada data di atas. Dengan metode setengah data, Q1 tetap 17 dan Q3 tetap 35, sehingga IQR tetap 18. Batas atas juga tetap 62, dan 90 tetap menjadi outlier. IQR tidak bergeser oleh nilai ekstrem, tetapi nilai ekstrem itu tetap terlihat sebagai titik yang perlu diperiksa.

Kesalahan yang sering terjadi

Waspadai tiga hal ini:

  • Menganggap whisker selalu sampai nilai minimum dan maksimum. Whisker hanya sampai nilai terdekat dalam batas 1,5 × IQR, sehingga nilai minimum atau maksimum bisa tampil sebagai titik terpisah.
  • Membuang outlier begitu saja. Minitab mengingatkan bahwa outlier hanya boleh dikeluarkan dari analisis dengan alasan yang baik (Minitab, n.d.).
  • Membandingkan Q1 atau IQR dari dua alat tanpa memastikan keduanya memakai metode hitung yang sama.

Latihan

Gunakan data 3, 5, 7, 8, 9, 11, 13, 15, 18.

  1. Hitung Q1, median, Q3, dan IQR dengan metode setengah data.
  2. Tambahkan nilai 40 ke data tersebut. Berapa Q3 yang baru, dan apakah 40 termasuk outlier menurut aturan 1,5 × IQR?
  3. Hitung Q1 dan Q3 dengan pandas untuk data soal 1. Apakah hasilnya sama dengan jawaban soal 1? Jelaskan alasannya.

Kunci jawaban singkat: (1) Q1 = 6 (rata-rata 5 dan 7), median = 9, Q3 = 14 (rata-rata 13 dan 15), IQR = 8. (2) Q3 yang baru adalah 15, dan IQR tetap 8. Batas atas menjadi 15 + 12 = 27, sehingga 40 adalah outlier. (3) Pandas memberi Q1 = 7 dan Q3 = 13, berbeda dari metode setengah data. Pandas mengambil posisi (n − 1) × p dan menginterpolasi di sana, sedangkan metode setengah data membagi data menjadi dua bagian yang sama lalu mengambil mediannya.

Ringkasan

Persentil membagi data terurut, kuartil menandai tiga titik pembagi utama, dan IQR mengukur lebar 50 persen data tengah. Boxplot memperlihatkan semuanya sekaligus, tetapi outlier perlu diperiksa dulu sebelum dikeluarkan. Besok kita membahas distribusi dan skewness, yaitu bagaimana bentuk sebaran data memengaruhi posisi mean, median, dan modus.

Sumber bacaan

Minitab. (n.d.). Boxplot lesson. https://math.uni.wroc.pl/~mpal/academic/Minitab/Minitab-tutorial/Boxplot_Lesson.pdf

NIST/SEMATECH. (n.d.). Dataplot reference manual: BOX PLOT. https://itl.nist.gov/div898/software/dataplot/refman1/auxillar/boxplot.htm

NIST/SEMATECH. (n.d.). Dataplot reference manual: INTERQUARTILE RANGE. https://itl.nist.gov/div898/software/dataplot/refman2/auxillar/iqrange.htm

Wikipedia. (n.d.). Box plot (salinan arsip). https://webarchive.library.unt.edu/web/20141031033530/http://en.wikipedia.org/wiki/Box_plot

Navigasi seri Belajar Analisis Data

Commenting 101: “Be kind, and respect each other” // Bersikaplah baik, dan saling menghormati (Indonesian) // Soyez gentils et respectez-vous les uns les autres (French) // Sean amables y respétense mutuamente (Spanish) // 待人友善,互相尊重 (Chinese) // كونوا لطفاء واحترموا بعضكم البعض (Arabic) // Будьте добры и уважайте друг друга (Russian) // Seid freundlich und respektiert einander (German) // 親切にし、お互いを尊重し合いましょう (Japanese) // दयालु बनें, और एक दूसरे का सम्मान करें (Hindi) // Siate gentili e rispettatevi a vicenda (Italian)

Tinggalkan Balasan