Cara membaca box plot
Box plot meringkas seluruh distribusi menjadi lima angka dan menggambarnya sebagai satu simbol yang ringkas. Cara membacanya bisa dipelajari dalam tiga puluh detik, jadi kita mulai dari situ. Setiap bagiannya punya arti yang pasti:
- Garis tebal di dalam kotak adalah median: separuh data berada di bawahnya, separuh di atasnya.
- Kotaknya sendiri mencakup rentang antarkuartil (IQR), dari kuartil pertama (25% data di bawahnya) sampai kuartil ketiga (75% di bawahnya). Separuh bagian tengah datamu berada di dalam kotak.
- Whisker adalah garis yang menjulur keluar dari kotak. Masing-masing menjangkau titik data paling ekstrem yang masih berada dalam 1,5 × IQR dari tepi kotak, jadi whisker mencakup "rentang biasa" data, bukan rentang penuhnya.
- Titik-titik tersendiri di luar whisker adalah nilai yang berjarak lebih dari 1,5 × IQR dari kotak: ditandai sebagai dugaan pencilan, digambar satu per satu supaya kamu bisa menghitungnya.
Kotak yang tinggi berarti datanya menyebar; garis median yang tidak berada di tengah kotak berarti datanya miring; deretan titik di luar satu whisker berarti ekor yang berat di sisi itu. Histogram menunjukkan distribusi yang sama dengan lebih detail, tapi kekuatan super box plot adalah selusin box plot bisa muat berdampingan, sehingga inilah plot untuk membandingkan kelompok.
Boxplot untuk satu variabel
Fungsinya adalah boxplot(), dan untuk satu numeric vector cukup satu pemanggilan:
scores <- c(52, 55, 58, 60, 61, 63, 64, 66, 68, 70, 72, 95)
boxplot(scores,
main = "Test scores",
ylab = "Score")
Gambar yang dihasilkan: sebuah kotak dari 59 sampai 69 dengan garis median di 63,5, whisker yang menjangkau ke bawah sampai 52 dan ke atas sampai 72, serta satu titik sendirian yang melayang di 95, pencilan yang diam-diam akan tertelan oleh ringkasan rata-rata dan simpangan baku. Kesan instan "ada satu nilai yang berbeda dari yang lain" itulah gunanya box plot.
(Seperti di setiap halaman dalam bab ini, pemanggilan plot adalah potongan kode statis; editor di bawah hanya menampilkan output teks. Jalankan secara lokal untuk melihat gambarnya.)
Membandingkan kelompok: antarmuka formula
Penggunaan sehari-hari yang sebenarnya adalah satu kotak per kelompok, dan untuk itu boxplot() menerima sebuah formula: y ~ group, dibaca sebagai "y dirinci per kelompok". Dataset bawaan R ToothGrowth (panjang gigi pada 60 marmut yang diberi vitamin C lewat jus jeruk (OJ) atau asam askorbat (VC)) adalah contoh klasiknya:
boxplot(len ~ supp,
data = ToothGrowth,
main = "Tooth growth by supplement",
xlab = "Supplement",
ylab = "Tooth length")
Dua kotak muncul pada skala vertikal yang sama: kotak OJ berada jelas lebih tinggi daripada kotak VC, dengan median sekitar 22 dibanding sekitar 19. Karena kedua kotak berbagi satu sumbu, perbandingannya jujur sejak awal: tidak mungkin dua plot dengan skala berbeda membuat satu kelompok terlihat lebih baik. Kolom pengelompokan sebaiknya berupa factor (atau character vector); setiap level menjadi satu kotak.
Formula juga bisa digabung: boxplot(len ~ supp * dose, data = ToothGrowth) menggambar enam kotak, satu untuk setiap kombinasi suplemen dan dosis. Saat perbedaan antarkelompok terlihat nyata di kotak-kotak itu, pertanyaan berikutnya yang wajar (apakah ini lebih dari sekadar derau?) dijawab oleh uji t.
Label, warna, dan boxplot horizontal
Argumen gaya mengikuti konvensi plot dasar. names memberi label pada kotak, col mengisi warnanya; berikan sebuah vector untuk mewarnai setiap kelompok secara berbeda:
boxplot(len ~ supp,
data = ToothGrowth,
names = c("Orange juice", "Ascorbic acid"),
col = c("orange", "lightblue"),
main = "Tooth growth by supplement",
ylab = "Tooth length")
Dua tombol lagi yang layak dipakai:
horizontal = TRUEmemutar seluruh plot sehingga kotak-kotaknya berjajar di sepanjang sumbu horizontal. Lakukan ini setiap kali nama kelompoknya panjang: label horizontal tetap terbaca di tempat label vertikal saling bertabrakan.notch = TRUEmembuat takik di sekitar setiap median; saat takik dua kelompok tidak saling tumpang tindih, median keduanya kemungkinan berbeda. Anggap ini petunjuk visual, bukan uji statistik.
Angka di balik kotak
Semua yang digambar plot berasal dari angka yang bisa kamu cetak. quantile() memberikan ringkasan lima angka, dan boxplot.stats() memberikan persis apa yang dipakai plot, termasuk pencilannya. Yang ini bisa kamu jalankan di sini:
Perhatikan bahwa keduanya mirip tapi tidak kembar: quantile() melaporkan nilai minimum dan maksimum yang sebenarnya, sedangkan s$stats berakhir di whisker, yaitu titik paling ekstrem di dalam batas 1,5 × IQR. Selisih di antara keduanya tepat s$out, di sini angka 95 yang sendirian itu. Saat seseorang bertanya "baris mana saja titik-titik pencilan itu?", x[x %in% boxplot.stats(x)$out] (atau filter berdasarkan nilai batasnya) menjawabnya.
Boxplot dengan ggplot2
Di ggplot2, pengelompokan dimasukkan ke pemetaan estetika, bukan ke formula:
library(ggplot2)
ggplot(ToothGrowth, aes(x = supp, y = len, fill = supp)) +
geom_boxplot() +
labs(title = "Tooth growth by supplement",
x = "Supplement", y = "Tooth length")
Dua kotak yang sama, dengan legenda dan tema tanpa usaha tambahan. Versi ggplot2 lebih mudah dikembangkan saat plotnya bertambah besar: buat facet berdasarkan dose, tumpangkan titik-titik mentah dengan geom_jitter(width = 0.1), dan kodenya tetap deklaratif. Untuk perbandingan sekali jalan saat analisis, boxplot(y ~ g, data = df) tetap jadi hal tercepat yang bisa kamu ketik.
Yang kamu bawa pulang
- Anatomi kotak: garis median, kotak = IQR, whisker = titik paling ekstrem dalam 1,5 × IQR, titik di luarnya = dugaan pencilan.
boxplot(x)untuk satu variabel;boxplot(y ~ group, data = df)untuk membandingkan kelompok berdampingan pada satu skala bersama yang jujur.- Atur gaya dengan
names, vectorcolper kelompok, danhorizontal = TRUEsaat labelnya panjang. boxplot.stats(x)$statsdan$outadalah plot dalam bentuk angka; pakai keduanya untuk mengambil pencilan yang ditunjuk plot.- ggplot2:
geom_boxplot()dengan kelompok dipetakan kexataufill.
Berikutnya: scatter plot, dari distribusi satu variabel ke hubungan antara dua variabel.
Pertanyaan yang sering diajukan
Bagaimana cara membuat boxplot di R?
Panggil boxplot(x) pada sebuah numeric vector untuk satu kotak, atau pakai antarmuka formula boxplot(y ~ group, data = df) untuk mendapat satu kotak per kelompok secara berdampingan. Keduanya sudah ada di base R, tanpa package tambahan.
Apa arti bagian-bagian box plot?
Garis tebal di dalam kotak adalah median. Kotaknya mencakup rentang antarkuartil (IQR), dari kuartil pertama sampai kuartil ketiga. Whisker menjangkau titik data paling ekstrem yang masih berada dalam 1,5 kali IQR dari kotak, dan apa pun di luar whisker digambar sebagai titik tersendiri, yaitu dugaan pencilan.
Bagaimana cara membuat boxplot per kelompok di R?
Pakai formula: boxplot(len ~ supp, data = ToothGrowth) menggambar satu kotak per level supp. Variabel pengelompokan sebaiknya berupa kolom factor atau character; setiap level menjadi satu kotak pada skala yang sama.
Bagaimana cara menemukan pencilan yang ditunjukkan boxplot?
boxplot.stats(x)$out mengembalikan persis nilai-nilai yang akan digambar sebagai titik di luar whisker, dan boxplot.stats(x)$stats memberikan lima angka di balik kotak: ujung whisker, engsel (hinge), dan median.