boxplot() di R: Cara Membuat BoxGrafik di RStudio

⚡ Ringkasan Cerdas

BoxFungsi `plot` di R merangkum distribusi numerik melalui median, kuartil, garis batas (whiskers), dan outlier menggunakan `geom_boxplot()` dari `ggplot2`. Panduan ini membangun plot kotak pada dataset kualitas udara dan menambahkan lapisan warna, titik, jitter, lekukan, dan perbandingan kelompok.

  • 📐 Ringkasan Lima Angka: Kotak tersebut mencakup kuartil pertama hingga ketiga, garis tersebut menandai median, dan garis-garis di sekelilingnya mencapai 1.5 kali rentang interkuartil.
  • 🧱 Sintaks Dasar: ggplot(df, aes(x = group, y = value)) + geom_boxplot() menghasilkan satu kotak per level grup.ping faktor.
  • ???? Gaya Outlier: outlier.colour, outlier.shape, dan outlier.size mengontrol bagaimana titik-titik di luar garis kumis digambar.
  • 💠 Menampilkan Pengamatan: geom_jitter() menggeser tumpang tindihping menunjuk ke samping, memperlihatkan ukuran sampel di balik setiap kotak.
  • 📉 Berkumai Boxadalah: notch = TRUE menggambar interval kepercayaan median, dan tidak tumpang tindih.ping Tanda takik menunjukkan perbedaan yang nyata.
  • 🎨 Grouping: Lokasiping Fungsi `fill inside geom_boxplot()` membagi setiap kategori menjadi beberapa kotak yang berdampingan.

Boxplot di R

boxplot() di R

boxplot() di R membantu memvisualisasikan distribusi data berdasarkan kuartil dan mendeteksi keberadaan outlier. Anda dapat menggunakan objek geometri geom_boxplot() dari pustaka ggplot2 untuk menggambar boxplot() di R.

Kita akan menggunakan dataset kualitas udara untuk memperkenalkan fungsi boxplot() di R dengan ggplot. Dataset ini mencatat pengukuran kualitas udara harian di New York dari Mei hingga September 1973 dan berisi 153 pengamatan. Kita akan menggunakan variabel-variabel berikut:

  • Ozon: Variabel numerik
  • Angin: Variabel numerik
  • Bulan: Mei hingga September. Variabel numerik

Sebelum menggambarnya, ada baiknya mengetahui dengan tepat apa yang diwakili oleh setiap bagian dari kotak tersebut.

Cara Membaca Box Grafik: Kuartil, IQR, dan Pencilan

Setiap elemen dalam diagram kotak (box plot) mewakili satu angka dari ringkasan lima angka tersebut. Mengetahui angka mana yang mana mengubah grafik dari sekadar hiasan menjadi analisis.

  • Engsel bawah: Kuartil pertama, Q1. Dua puluh lima persen dari pengamatan berada di bawahnya.
  • Garis median: Kuartil kedua. Posisinya di dalam kotak menunjukkan kemiringan: garis yang terdorong ke bawah berarti data miring ke kanan.
  • Engsel atas: Kuartil ketiga, Q3. Tujuh puluh lima persen dari pengamatan berada di bawahnya.
  • Box tinggi: Rentang interkuartil, IQR = Q3 – Q1, yang mencakup separuh data di tengah dan merupakan ukuran penyebaran yang standar dan kuat.
  • Cambang: Nilai-nilai tersebut meluas hingga pengamatan paling ekstrem yang masih berada dalam rentang 1.5 kali IQR dari titik terdekat. Nilai-nilai tersebut bukanlah nilai minimum dan maksimum.
  • Poin-poin di luar garis kumis: observasi yang ditandai sebagai outlier oleh aturan IQR 1.5 tersebut.

Dua hal yang perlu diperhatikan. Pertama, "outlier" di sini adalah penanda statistik, bukan kesalahan: dalam distribusi miring seperti konsentrasi ozon, nilai tinggi memang diharapkan dan tidak boleh dihapus. Kedua, plot kotak menyembunyikan bentuk distribusi, sehingga dua kelompok dengan kotak yang identik dapat memiliki data dasar yang sangat berbeda. Menambahkan titik-titik yang diacak, seperti yang ditunjukkan di bawah ini, dapat mencegah hal tersebut.

Box Plot vs Histogram vs Violin Plot di R

Ketiga grafik tersebut menggambarkan distribusi numerik, tetapi masing-masing mengungkapkan sesuatu yang disembunyikan oleh grafik lainnya.

Kriteria Box Merencanakan Histogram Plot Biola
Pertunjukkan Median, kuartil, outlier Frekuensi di setiap bin Kurva kepadatan penuh
Revbeberapa puncak Tidak Ya Ya
Bendera data pencilan Ya, secara eksplisit Hanya secara visual Tidak secara langsung
Membandingkan banyak kelompok Sangat baik Canggung baik
Membutuhkan pilihan penyetelan Tidak Ya, hitungan bin Ya, bandwidth
objek ggplot2 geom_boxplot() histogram geo geom_violin()

Kompromi yang umum adalah menggambar plot biola dengan plot kotak sempit di dalamnya, yang mempertahankan bentuk kepadatan dan ringkasan kuartil dalam satu grafik. Lihat tutorial histogram untuk sisi pengelompokan dalam perbandingan.

membuat Box Merencanakan

Sebelum Anda mulai membuat boxplot() pertama Anda di R, Anda perlu memanipulasi data sebagai berikut:

  • Langkah 1: Impor data
  • Langkah 2: Hilangkan variabel yang tidak perlu
  • Langkah 3: Ubah Bulan menjadi faktor terurut
  • Langkah 4: Buat variabel kategorikal baru yang membagi setiap bulan menjadi tiga bagian: Awal, Tengah, dan Akhir
  • Langkah 5: Hapus observasi yang hilang

Semua langkah ini dilakukan dengan dplyr dan operator saluran pipa %>%.

library(dplyr)
library(ggplot2)
# Step 1
data_air <- airquality %>%

#Step 2
select(-c(Solar.R, Temp)) %>%

#Step 3
mutate(Month = factor(Month, order = TRUE, labels = c("May", "June", "July", "August", "September")), 
       
#Step 4 
day_cat = factor(ifelse(Day < 10, "Begin", ifelse(Day < 20, "Middle", "End"))))

Praktik yang baik adalah memeriksa struktur data dengan fungsi sekilas().

glimpse(data_air)

Keluaran:

## Observations: 153
## Variables: 5
## $ Ozone   <int> 41, 36, 12, 18, NA, 28, 23, 19, 8, NA, 7, 16, 11, 14, ...
## $ Wind    <dbl> 7.4, 8.0, 12.6, 11.5, 14.3, 14.9, 8.6, 13.8, 20.1, 8.6...
## $ Month   <ord> May, May, May, May, May, May, May, May, May, May, May,...
## $ Day     <int> 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16,...
## $ day_cat <fctr> Begin, Begin, Begin, Begin, Begin, Begin, Begin, Begi...

Baik Ozone maupun Solar.R mengandung nilai NA. Karena geom_boxplot() akan menghapusnya secara diam-diam dan mencetak peringatan, akan lebih baik untuk menghapusnya secara eksplisit.

# Step 5
data_air_nona <-data_air %>% na.omit()	

Diagram kotak dasar

Sekarang, gambarkan sebaran ozon berdasarkan bulan.

# Store the graph
box_plot <- ggplot(data_air_nona, aes(x = Month, y = Ozone))
# Add the geometric object box plot
box_plot +
    geom_boxplot()

Code Penjelasan

  • Simpan grafik untuk digunakan lebih lanjut
    • box_plot: plot dasar disimpan dalam objek box_plot, yang memungkinkan Anda menambahkan lapisan nanti tanpa mengulangi seluruh panggilan.
  • Tambahkan objek geometris
    • Anda meneruskan dataset data_air_nona ke ggplot boxplot.
    • Di dalam argumen aes(), Anda menambahkan sumbu x dan sumbu y.
    • Tanda + berarti Anda ingin R terus membaca kode tersebut. Tanda ini membuat kode lebih mudah dibaca dengan memecahnya.
    • Gunakan geom_boxplot() untuk membuat diagram kotak

Keluaran:

Dasar Box Merencanakan

Ubah sisi grafik

Anda dapat membalik sisi grafik.

box_plot +
  geom_boxplot()+
  coord_flip()

Code Penjelasan

  • box_plot: Anda menggunakan grafik yang Anda simpan. Ini menghindari penulisan ulang semua kode setiap kali Anda menambahkan informasi baru ke grafik.
  • geom_boxplot(): menggambar kotak dan kumis.
  • coord_flip(): Membalik sisi grafik

Keluaran:

Ubah Sisi Grafik

Ubah warna outlier

Anda dapat mengubah warna, bentuk, dan ukuran outlier.

box_plot +
    geom_boxplot(outlier.colour = "red",
        outlier.shape = 2,
        outlier.size = 3) +
    theme_classic()

Code Penjelasan

  • outlier.colour=”red”: Mengontrol warna outlier
  • outlier.shape=2: Mengubah bentuk outlier. 2 mengacu pada segitiga
  • outlier.size=3: Mengubah ukuran segitiga. Angka yang lebih besar akan menghasilkan penanda yang lebih besar.

Keluaran:

Ubah Warna Pencilan

Tambahkan statistik ringkasan

Anda dapat menambahkan statistik ringkasan seperti rata-rata kelompok, yang tidak ditampilkan oleh diagram kotak itu sendiri.

box_plot +
    geom_boxplot() +
    stat_summary(fun.y = mean,
        geom = "point",
        size = 3,
        color = "steelblue") +
    theme_classic()

Code Penjelasan

  • stat_summary() menambahkan statistik terhitung di atas box plot.
  • Argumen `fun` mengontrol statistik mana yang dikembalikan. Di sini, nilainya adalah rata-rata. Perhatikan bahwa kode lama menggunakan `fun.y`, yang sudah usang di ggplot2 sejak versi 3.3.0.
  • Catatan: Statistik lain tersedia seperti min dan maks. Lebih dari satu statistik dapat ditampilkan dalam grafik yang sama
  • geom = “point”: Plot rata-rata dengan sebuah titik
  • size=3 : Ukuran titik
  • color =”steelblue”: Warna titik

Keluaran:

Tambahkan Statistik Ringkasan

Box Plot dengan Titik

Selanjutnya, tambahkan lapisan plot titik di atas kotak-kotak tersebut. Setiap titik mewakili satu pengamatan, yang membuat ukuran sampel di balik setiap kotak terlihat.

box_plot +
    geom_boxplot() +
    geom_dotplot(binaxis = 'y',
        dotsize = 1,
        stackdir = 'center') +
    theme_classic()

Code Penjelasan

  • geom_dotplot() menggambar satu titik per pengamatan, yang ditumpuk di dalam setiap bin.
  • binaxis='y': Mengubah posisi titik di sepanjang sumbu y. Secara default, sumbu x
  • dotsize=1 : Ukuran titik
  • stackdir='center': Cara menumpuk titik-titik: Empat nilai:
    • "naik" (default),
    • "turun"
    • "tengah"
    • “keseluruhan tengah”

Keluaran:

Box Plot dengan Titik

Kontrol Estetika Box Merencanakan

Ubah warna kotak

Anda dapat mengubah warna grup.

ggplot(data_air_nona, aes(x = Month, y = Ozone, color = Month)) +
    geom_boxplot() +
    theme_classic()

Code Penjelasan

  • Warna grup dikontrol dalam peta aes().pingAnda dapat menggunakan color=Month untuk mengubah warna plot kotak dan kumis sesuai dengan bulan.

Keluaran:

Ubah Warnanya Box

Box plot dengan banyak kelompok

Dimungkinkan juga untuk menambahkan beberapa grup. Anda dapat memvisualisasikan perbedaan kualitas udara menurut hari pengukuran.

ggplot(data_air_nona, aes(Month, Ozone)) +
    geom_boxplot(aes(fill = day_cat)) +
    theme_classic()

Code Penjelasan

  • Peta aes()ping Objek geometris mengontrol grup yang akan ditampilkan (variabel ini harus berupa faktor)
  • aes(fill= day_cat) memungkinkan pembuatan tiga kotak untuk setiap bulan di sumbu x

Keluaran:

Box Plot dengan Banyak Grup

Box Plot dengan Titik-Titik Bergetar

Cara lain untuk menampilkan pengamatan individual adalah dengan titik-titik yang diacak (jittered points). Pengacakan biasanya dipilih ketika sumbu x kategorikal menyebabkan banyak titik berada pada posisi yang sama.

Metode ini menghindari tumpang tindih.ping dari data diskrit.

box_plot +
    geom_boxplot() +
    geom_jitter(shape = 15,
        color = "steelblue",
        position = position_jitter(width = 0.21)) +
    theme_classic()

Code Penjelasan

  • geom_jitter() menambahkan pergeseran acak kecil ke setiap titik sehingga terjadi tumpang tindih.ping nilai menjadi terlihat.
  • shape=15 mengubah bentuk titik. 15 mewakili kotak
  • color = “steelblue”: Mengubah warna titik
  • position = position_jitter(width = 0.21): mengontrol seberapa jauh titik-titik digeser ke samping, diukur dalam satuan sumbu x. Nilai default adalah 40 persen dari jarak antar kategori.

Keluaran:

Box Plot dengan Titik-Titik Bergetar

Terlihat perbedaan antara grafik pertama dengan metode jitter dan grafik kedua dengan metode titik.

box_plot +
    geom_boxplot() +
    geom_point(shape = 5,
        color = "steelblue") +
    theme_classic()

Box Plot dengan Titik-Titik Bergetar

Berkumai Box Merencanakan

Fitur menarik dari geom_boxplot() adalah fungsi boxplot berlekuk di R. Plot berlekuk mempersempit kotak di sekitar median. Tujuan utama dari plot kotak berlekuk adalah untuk membandingkan signifikansi median antar kelompok. Ada bukti kuat bahwa dua kelompok memiliki median yang berbeda ketika lekukan tidak tumpang tindih. Lekuk dihitung sebagai berikut:

Berkumai Box Merencanakan

Di sini IQR adalah rentang interkuartil dan n adalah jumlah pengamatan dalam kelompok. Lekukan tersebut mencakup kira-kira interval kepercayaan 95 persen dari median.

box_plot +
    geom_boxplot(notch = TRUE) +
    theme_classic()

Code Penjelasan

  • geom_boxplot(notch = TRUE): menggambar box plot dengan takik di sekitar median

Keluaran:

Berkumai Box Merencanakan

Cara Menambahkan Judul, Label, dan Warna Kustom ke sebuah Box Plot di R

Grafik di atas menggunakan pengaturan default ggplot2, yang mengambil nama variabel langsung dari data frame. Grafik yang layak dipublikasikan membutuhkan label yang mudah dibaca dan palet warna yang terencana.

Judul dan label sumbu. Satu panggilan labs() mengatur setiap elemen teks:

box_plot +
    geom_boxplot(fill = "coral", alpha = 0.7) +
    labs(title = "Ozone concentration by month",
        subtitle = "New York, May to September 1973",
        x = "Month",
        y = "Ozone (parts per billion)",
        caption = "Source: airquality dataset") +
    theme_classic()

Pilih warna Anda sendiri. Gunakan scale_fill_manual() ketika fill dipetakan di dalam aes(), dan scale_colour_manual() ketika colour adalah:

ggplot(data_air_nona, aes(x = Month, y = Ozone, fill = Month)) +
    geom_boxplot() +
    scale_fill_manual(values = c("#0e9cd1", "coral", "#7dc27d", "#c9a227", "grey60")) +
    theme_classic() +
    theme(legend.position = "none")

Legenda dimatikan di sini karena sumbu x sudah menyebutkan setiap bulan, jadi mengulanginya akan membuang ruang.

Menyusun ulang kotak-kotak tersebut. Tingkat faktor menentukan urutan pada sumbu. Karena Bulan dibuat sebagai faktor yang diurutkan, maka urutannya sudah kronologis. Untuk faktor yang tidak diurutkan, urutkan berdasarkan median:

ggplot(data_air_nona, aes(x = reorder(Month, Ozone, FUN = median), y = Ozone)) +
    geom_boxplot() +
    theme_classic()

Menyimpan grafik. Fungsi ggsave() menyimpan plot terakhir ke disk pada resolusi yang dapat Anda kendalikan:

ggsave("ozone_boxplot.png", width = 8, height = 5, dpi = 300)

Box Plot di R: Code Referensi

Tabel di bawah ini mencantumkan perintah ggplot2 untuk setiap varian box plot yang dibahas di atas:

Tujuan Code
Diagram kotak dasar
ggplot(df, aes(x = x1, y = y)) + geom_boxplot()
Balikkan orientasinya
ggplot(df, aes(x = x1, y = y)) + geom_boxplot() + coord_flip()
Plot kotak berlekuk
ggplot(df, aes(x = x1, y = y)) + geom_boxplot(notch = TRUE)
Box plot dengan titik-titik yang gelisah
ggplot(df, aes(x = x1, y = y)) + geom_boxplot() + geom_jitter(position = position_jitter(0.21))
Warnai berdasarkan kelompok
ggplot(df, aes(x = x1, y = y, color = x1)) + geom_boxplot()
Beberapa grup per kategori
ggplot(df, aes(x = x1, y = y)) + geom_boxplot(aes(fill = x2))
Tambahkan rata-rata kelompok
ggplot(df, aes(x = x1, y = y)) + geom_boxplot() + stat_summary(fun = mean, geom = "point")

Juga Periksa: - Tutorial R untuk Pemula: Belajar Bahasa Pemrograman R

Pertanyaan Umum Demo Slot

Garis kumis (whiskers) mencapai pengamatan paling ekstrem yang terletak dalam 1.5 kali rentang interkuartil dari kuartil terdekat. Garis kumis bukanlah nilai minimum dan maksimum, dan apa pun di luarnya digambarkan sebagai titik outlier.

Tidak secara otomatis. Aturan IQR 1.5 adalah konvensi, bukan bukti kesalahan. Selidiki setiap titik terlebih dahulu: data yang menyimpang seperti pembacaan ozon secara alami menghasilkan nilai tinggi yang merupakan pengukuran yang sebenarnya.

Tumpang tindihping Lekukan menunjukkan tidak ada bukti kuat bahwa kedua median tersebut berbeda. Tidak ada tumpang tindihping Tanda takik menunjukkan kemungkinan perbedaan nyata, kira-kira setara dengan perbandingan dengan tingkat kepercayaan 95 persen.

Box Plot merupakan langkah eksplorasi standar sebelum pelatihan: plot ini mengungkap kemiringan, outlier, dan perbedaan skala fitur antar kelas. Tim juga menggunakannya untuk membandingkan akurasi model di seluruh lipatan validasi silang.

Ya. Asisten AI dapat menjelaskan kesalahan seperti sumbu x kontinu yang menghasilkan satu kotak, dan menyarankan peta aes() yang tepat.ping, dan tandai argumen yang sudah usang seperti fun.y. Selalu jalankan kembali kode yang sudah diperbaiki pada data Anda sendiri.

Ringkaslah postingan ini dengan: