Menangani poin yang tumpang tindih

18 Menangani poin yang tumpang tindih

Ketika kita ingin memvisualisasikan kumpulan data yang besar atau sangat besar, kita sering mengalami tantangan bahwa plot pencar x - y sederhana tidak berfungsi dengan baik karena banyak titik yang saling bertumpukan dan tumpang tindih sebagian atau seluruhnya. Dan masalah yang sama dapat muncul bahkan dalam dataset kecil jika nilai data dicatat dengan presisi rendah atau bulat, sehingga beberapa pengamatan memiliki nilai numerik yang persis sama. Istilah teknis yang umum digunakan untuk menggambarkan situasi ini adalah "overplotting", yaitu memplot banyak poin di atas satu sama lain. Di sini saya menjelaskan beberapa strategi yang dapat Anda lakukan ketika menghadapi tantangan ini.

18.1 Transparansi dan jittering sebagian

Kami pertama-tama mempertimbangkan skenario dengan hanya sejumlah kecil titik data tetapi dengan pembulatan luas. Dataset kami berisi penghematan bahan bakar selama berkendara di kota dan perpindahan mesin untuk 234 model mobil populer yang dirilis antara 1999 dan 2008 (Gambar 18.1). Dalam dataset ini, penghematan bahan bakar diukur dalam mil per galon (mpg) dan dibulatkan ke nilai integer terdekat.Perpindahan mesin diukur dalam liter dan dibulatkan ke desiliter terdekat. Karena pembulatan ini, banyak model mobil memiliki nilai yang persis sama. Misalnya, ada total 21 mobil dengan perpindahan mesin 2,0 liter, dan sebagai grup mereka hanya memiliki empat nilai ekonomi bahan bakar yang berbeda, 19, 20, 21, atau 22 mpg. Oleh karena itu, pada Gambar 18.1 , 21 mobil ini hanya diwakili oleh empat titik berbeda, sehingga mesin 2,0 liter tampak jauh kurang populer daripada yang sebenarnya. Selain itu, dataset berisi dua mobil penggerak empat roda dengan mesin 2.0 liter, yang diwakili oleh titik-titik hitam. Namun, titik-titik hitam ini sepenuhnya tersumbat oleh titik-titik kuning, sehingga sepertinya tidak ada mobil penggerak empat roda dengan mesin 2.0 liter.
Ekonomi bahan bakar kota versus perpindahan mesin, untuk mobil-mobil populer yang dirilis antara 1999 dan 2008. Setiap titik mewakili satu mobil. Warna titik mengkodekan drive train: penggerak roda depan (FWD), penggerak roda belakang (RWD), atau penggerak empat roda (4WD). Angka tersebut diberi label "buruk" karena banyak titik diplot di atas yang lain dan mengaburkannya.
Gambar 18.1: Ekonomi bahan bakar kota versus perpindahan mesin, untuk mobil-mobil populer yang dirilis antara tahun 1999 dan 2008. Setiap titik mewakili satu mobil. Warna titik mengkodekan drive train: penggerak roda depan (FWD), penggerak roda belakang (RWD), atau penggerak empat roda (4WD). Angka tersebut diberi label "buruk" karena banyak titik diplot di atas yang lain dan mengaburkannya.
Salah satu cara untuk memperbaiki masalah ini adalah dengan menggunakan transparansi parsial. Jika kita membuat titik-titik individual sebagian transparan, maka titik-titik overplot muncul sebagai titik-titik yang lebih gelap dan dengan demikian bayangan titik-titik tersebut mencerminkan kerapatan titik-titik di lokasi grafik (Gambar 18.2 ).
Ekonomi bahan bakar kota versus perpindahan engine. Karena titik telah dibuat sebagian transparan, titik yang terletak di atas titik lain sekarang dapat diidentifikasi dengan warna yang lebih gelap.
Gambar 18.2: Ekonomi bahan bakar kota versus perpindahan engine.Karena titik telah dibuat sebagian transparan, titik yang terletak di atas titik lain sekarang dapat diidentifikasi dengan warna yang lebih gelap.
Namun, membuat poin transparan sebagian tidak selalu cukup untuk menyelesaikan masalah overplotting. Sebagai contoh, meskipun kita dapat melihat pada Gambar 18.2bahwa beberapa titik memiliki warna yang lebih gelap daripada yang lain, sulit untuk memperkirakan berapa banyak titik yang diplot satu sama lain di setiap lokasi. Selain itu, sementara perbedaan dalam naungan terlihat jelas, mereka tidak jelas. Pembaca yang melihat angka ini untuk pertama kalinya kemungkinan akan bertanya-tanya mengapa beberapa titik lebih gelap daripada yang lain dan tidak akan menyadari bahwa titik-titik itu sebenarnya banyak titik yang bertumpuk di atas satu sama lain. Trik sederhana yang membantu dalam situasi ini adalah menerapkan sejumlah kecil jitter ke titik, yaitu, untuk menggeser setiap titik secara acak dengan jumlah kecil baik dalam arah x atau y atau keduanya. Dengan jitter, segera terlihat bahwa area yang lebih gelap muncul dari titik yang diplot satu sama lain (Gambar 18.3 ). Juga, sekarang, untuk pertama kalinya titik-titik hitam yang mewakili mobil penggerak empat roda dengan mesin 2.0 liter terlihat jelas.
Ekonomi bahan bakar kota versus perpindahan engine. Dengan menambahkan sedikit jitter ke setiap titik, kita dapat membuat titik-titik yang terlihat lebih jelas tanpa secara substansial mendistorsi pesan plot.
Gambar 18.3: Ekonomi bahan bakar kota versus perpindahan engine.Dengan menambahkan sedikit jitter ke setiap titik, kita dapat membuat titik-titik yang terlihat lebih jelas tanpa secara substansial mendistorsi pesan plot.
Salah satu kelemahan dari jittering adalah mengubah data dan karenanya harus dilakukan dengan hati-hati. Jika terlalu banyak jitter, kami akhirnya menempatkan titik di lokasi yang tidak mewakili dataset yang mendasarinya. Hasilnya adalah visualisasi data yang menyesatkan. Lihat Gambar 18.4sebagai contoh.
Ekonomi bahan bakar kota versus perpindahan engine. Dengan menambahkan terlalu banyak jitter ke poin, kami telah membuat visualisasi yang tidak secara akurat mencerminkan dataset yang mendasarinya.
Gambar 18.4: Ekonomi bahan bakar kota versus perpindahan engine.Dengan menambahkan terlalu banyak jitter ke poin, kami telah membuat visualisasi yang tidak secara akurat mencerminkan dataset yang mendasarinya.

18.2 histogram 2D

Ketika jumlah poin individu menjadi sangat besar, transparansi parsial (dengan atau tanpa jittering) tidak akan cukup untuk menyelesaikan masalah overplotting. Apa yang biasanya akan terjadi adalah bahwa area dengan kerapatan titik tinggi akan muncul sebagai gumpalan warna gelap yang seragam sementara di daerah dengan kerapatan titik rendah, masing-masing titik hampir tidak terlihat (Gambar 18.5 ). Dan mengubah tingkat transparansi poin-poin individual akan memperbaiki satu atau yang lain dari masalah-masalah ini sementara memperburuk yang lain; tidak ada pengaturan transparansi yang dapat mengatasi keduanya secara bersamaan.
Penundaan keberangkatan dalam hitungan menit versus waktu keberangkatan penerbangan, untuk semua penerbangan yang berangkat dari bandara Newark (EWR) pada tahun 2013. Setiap titik mewakili satu keberangkatan.
Gambar 18.5: Penundaan keberangkatan dalam hitungan menit versus waktu keberangkatan penerbangan, untuk semua penerbangan yang berangkat dari bandara Newark (EWR) pada 2013. Setiap titik mewakili satu keberangkatan.
Gambar 18.5 menunjukkan penundaan keberangkatan untuk lebih dari 100.000 penerbangan individu, dengan setiap titik mewakili satu keberangkatan penerbangan. Meskipun kami telah membuat masing-masing titik cukup transparan, sebagian besar dari mereka hanya membentuk pita hitam antara penundaan keberangkatan 0 dan 300 menit. Pita ini mengaburkan apakah sebagian besar penerbangan berangkat kira-kira tepat waktu atau dengan penundaan substansial (katakanlah 50 menit atau lebih). Pada saat yang sama, penerbangan yang paling tertunda (dengan penundaan 400 menit atau lebih) hampir tidak terlihat karena transparansi titik-titik.
Dalam kasus seperti itu, alih-alih memplot poin individual, kita dapat membuat histogram 2D. 2D histogram secara konseptual mirip dengan histogram 1D seperti yang dibahas pada Bab 7 , tetapi sekarang kita menampar data dalam dua dimensi. Kami membagi seluruh bidang x - y menjadi persegi panjang kecil, menghitung berapa banyak pengamatan jatuh ke masing - masing, dan kemudian warna persegi panjang dengan hitungan itu. Gambar 18.6 menunjukkan hasil pendekatan ini untuk data keberangkatan-penundaan.Visualisasi ini dengan jelas menyoroti beberapa fitur penting dari data keberangkatan penerbangan. Pertama, sebagian besar keberangkatan pada siang hari (6 pagi sampai sekitar 9 malam) sebenarnya berangkat tanpa penundaan atau bahkan lebih awal (penundaan negatif). Namun, sejumlah kecil keberangkatan memiliki penundaan yang substansial.Selain itu, semakin lama sebuah pesawat berangkat pada hari itu, semakin banyak penundaan yang mungkin terjadi.Yang penting, waktu keberangkatan adalah waktu keberangkatan yang sebenarnya, bukan waktu keberangkatan yang dijadwalkan. Jadi angka ini tidak selalu memberi tahu kita bahwa pesawat yang dijadwalkan berangkat lebih awal tidak pernah mengalami keterlambatan.Apa yang dikatakannya kepada kita adalah, jika sebuah pesawat berangkat lebih awal, ia memiliki sedikit keterlambatan atau, dalam kasus yang sangat jarang, penundaan sekitar 900 menit.
Penundaan keberangkatan dalam hitungan menit versus waktu keberangkatan penerbangan. Setiap persegi panjang berwarna mewakili semua penerbangan yang berangkat pada saat itu dengan penundaan keberangkatan itu. Pewarnaan mewakili jumlah penerbangan yang diwakili oleh persegi panjang itu.
Gambar 18.6: Penundaan keberangkatan dalam hitungan menit versus waktu keberangkatan penerbangan. Setiap persegi panjang berwarna mewakili semua penerbangan yang berangkat pada saat itu dengan penundaan keberangkatan itu. Pewarnaan mewakili jumlah penerbangan yang diwakili oleh persegi panjang itu.
Sebagai alternatif untuk membuang data menjadi persegi panjang, kita juga bisa memasukkan bin menjadi segi enam.Pendekatan ini, pertama kali diusulkan oleh Carr et al. ( 1987) , memiliki keuntungan bahwa titik-titik dalam segi enam, rata-rata, lebih dekat ke pusat segi enam daripada titik-titik dalam kuadrat luas sama dengan pusat kuadrat. Oleh karena itu, segi enam berwarna mewakili data sedikit lebih akurat daripada persegi panjang berwarna. Gambar 18.7menunjukkan data keberangkatan penerbangan dengan binning segi enam daripada binning persegi panjang.
Penundaan keberangkatan dalam hitungan menit versus waktu keberangkatan penerbangan. Setiap segi enam berwarna mewakili semua penerbangan yang berangkat pada saat itu dengan penundaan keberangkatan itu. Pewarnaan mewakili jumlah penerbangan yang diwakili oleh segi enam itu.
Gambar 18.7: Penundaan keberangkatan dalam hitungan menit versus waktu keberangkatan penerbangan. Setiap segi enam berwarna mewakili semua penerbangan yang berangkat pada saat itu dengan penundaan keberangkatan itu. Pewarnaan mewakili jumlah penerbangan yang diwakili oleh segi enam itu.

18.3 Garis kontur

Alih-alih mengelompokkan titik data menjadi persegi panjang atau segi enam, kami juga dapat memperkirakan kerapatan titik di seluruh area plot dan menunjukkan wilayah dengan kepadatan titik berbeda dengan garis kontur. Teknik ini bekerja dengan baik ketika kerapatan titik berubah secara perlahan melintasi dimensi x dan y .
Sebagai contoh untuk pendekatan ini, kita kembali ke dataset blue jays dari Bab 12 . Gambar 12.1 menunjukkan hubungan antara panjang kepala dan massa tubuh selama 123 blue jays, dan ada beberapa jumlah yang tumpang tindih di antara titik-titik tersebut. Kita dapat menyoroti distribusi titik lebih jelas dengan membuat titik lebih kecil dan sebagian transparan dan menempatkannya di atas garis kontur yang menggambarkan daerah dengan kepadatan titik yang sama (Gambar 18.8 ). Kami selanjutnya dapat meningkatkan persepsi perubahan dalam kepadatan titik dengan menaungi daerah yang tertutup oleh garis kontur, menggunakan warna yang lebih gelap untuk daerah yang mewakili kepadatan titik yang lebih tinggi (Gambar 18.9 ).
Panjang kepala versus massa tubuh untuk 123 blue jays, seperti pada Gambar 12.1. Setiap titik sesuai dengan satu burung, dan garis-garis menunjukkan daerah dengan kepadatan titik yang sama. Kepadatan titik meningkat ke arah tengah plot, di dekat massa tubuh 75g dan panjang kepala antara 55mm dan 57,5mm. Sumber data: Keith Tarvin, Oberlin College
Gambar 18.8: Panjang kepala versus massa tubuh selama 123 blue jays, seperti pada Gambar 12.1 . Setiap titik sesuai dengan satu burung, dan garis-garis menunjukkan daerah dengan kepadatan titik yang sama.Kepadatan titik meningkat ke arah tengah plot, di dekat massa tubuh 75g dan panjang kepala antara 55mm dan 57,5mm. Sumber data: Keith Tarvin, Oberlin College
Panjang kepala versus massa tubuh selama 123 blue jays. Gambar ini hampir identik dengan Gambar 12.1, tetapi sekarang area yang dikelilingi oleh garis kontur diarsir dengan warna abu-abu yang semakin gelap. Naungan ini menciptakan kesan visual yang lebih kuat dari peningkatan titik kepadatan menuju pusat awan titik. Sumber data: Keith Tarvin, Oberlin College
Gambar 18.9: Panjang kepala versus massa tubuh selama 123 blue jays.Gambar ini hampir identik dengan Gambar 12.1 , tetapi sekarang area yang dikelilingi oleh garis kontur diarsir dengan warna abu-abu yang semakin gelap. Naungan ini menciptakan kesan visual yang lebih kuat dari peningkatan titik kepadatan menuju pusat awan titik. Sumber data: Keith Tarvin, Oberlin College
Dalam Bab 12 , kami juga melihat hubungan antara panjang kepala dan massa tubuh secara terpisah untuk burung jantan dan betina (Gambar 12.2 ). Kita dapat melakukan hal yang sama dengan garis kontur, dengan menggambar garis kontur berwarna terpisah untuk burung jantan dan betina (Gambar 18.10 ).
Panjang kepala versus massa tubuh selama 123 blue jays. Seperti pada Gambar 12.2, kita juga dapat menunjukkan jenis kelamin burung berdasarkan warna ketika menggambar garis kontur. Gambar ini menyoroti perbedaan distribusi titik untuk burung jantan dan betina. Khususnya, burung jantan lebih padat berkerumun di satu wilayah plot sedangkan burung betina lebih tersebar. Sumber data: Keith Tarvin, Oberlin College
Gambar 18.10: Panjang kepala versus massa tubuh selama 123 blue jays.Seperti pada Gambar 12.2 , kita juga dapat menunjukkan jenis kelamin burung berdasarkan warna ketika menggambar garis kontur. Gambar ini menyoroti perbedaan distribusi titik untuk burung jantan dan betina.Khususnya, burung jantan lebih padat berkerumun di satu wilayah plot sedangkan burung betina lebih tersebar. Sumber data: Keith Tarvin, Oberlin College
Menggambar beberapa set garis kontur dalam berbagai warna dapat menjadi strategi yang kuat untuk menunjukkan distribusi beberapa titik awan sekaligus. Namun, teknik ini perlu digunakan dengan hati-hati. Ini hanya berfungsi ketika jumlah kelompok dengan warna berbeda kecil (dua hingga tiga) dan kelompok-kelompok itu jelas dipisahkan. Kalau tidak, kita mungkin berakhir dengan bola rambut dari garis-garis berwarna berbeda semua saling silang dan tidak menunjukkan pola tertentu sama sekali.
Untuk menggambarkan masalah potensial ini, saya akan menggunakan dataset berlian, yang berisi informasi untuk 53.940 berlian, termasuk harga, berat (karat), dan potongannya. Gambar 18.11 menunjukkan dataset ini sebagai sebaran plot. Kami melihat masalah yang jelas dengan overplotting. Ada begitu banyak titik berbeda warna di atas satu sama lain sehingga tidak mungkin untuk membedakan apa pun di luar garis besar keseluruhan di mana berlian jatuh pada spektrum harga-karat.
Harga berlian versus nilai karatnya, untuk 53.940 berlian individu. Setiap potongan berlian ditandai dengan warna. Plot diberi label sebagai "buruk" karena plot berlebih yang luas tidak memungkinkan untuk membedakan pola di antara pemotongan berlian yang berbeda. Sumber data: Hadley Wickham, ggplot2
Gambar 18.11: Harga berlian versus nilai karatnya, untuk 53.940 berlian individu. Setiap potongan berlian ditandai dengan warna. Plot diberi label sebagai "buruk" karena plot berlebih yang luas tidak memungkinkan untuk membedakan pola di antara pemotongan berlian yang berbeda. Sumber data: Hadley Wickham, ggplot2
Kita dapat mencoba menggambar garis kontur berwarna untuk berbagai kualitas potongan, seperti pada Gambar 18.10 . Namun, dalam dataset berlian, kami memiliki lima warna berbeda dan grup sangat tumpang tindih. Oleh karena itu, plot kontur (Gambar 18.12 ) tidak jauh lebih baik daripada plot sebar asli (Gambar 18.11 ).
Harga berlian versus nilai karatnya. Seperti Gambar 18.11, tetapi sekarang poin individu telah digantikan oleh garis kontur. Plot yang dihasilkan masih diberi label "buruk", karena garis kontur semuanya saling bertumpukan. Baik distribusi titik untuk pemotongan individu maupun distribusi titik keseluruhan tidak dapat dibedakan. Sumber data: Hadley Wickham, ggplot2
Gambar 18.12: Harga berlian versus nilai karatnya. Seperti Gambar 18.11 , tetapi sekarang poin individu telah digantikan oleh garis kontur. Plot yang dihasilkan masih diberi label "buruk", karena garis kontur semuanya saling bertumpukan. Baik distribusi titik untuk pemotongan individu maupun distribusi titik keseluruhan tidak dapat dibedakan. Sumber data: Hadley Wickham, ggplot2
Yang membantu di sini adalah menggambar garis kontur untuk setiap kualitas potongan di panel plotnya sendiri (Gambar 18.13 ). Tujuan menggambar semuanya dalam satu panel mungkin untuk memungkinkan perbandingan visual antara kelompok, tetapi Gambar 18.12 begitu sibuk sehingga perbandingan tidak mungkin dilakukan. Sebaliknya, pada Gambar 18.13 , grid latar belakang memungkinkan kita untuk membuat perbandingan lintas kualitas potongan, dengan memperhatikan di mana tepatnya garis kontur jatuh relatif terhadap garis grid. (Efek serupa dapat dicapai dengan memplot poin individual yang transparan sebagian daripada garis kontur di setiap panel.)
Harga berlian versus nilai karatnya. Di sini, kami telah mengambil kontur kerapatan dari Gambar 18.12 dan menggambarnya secara terpisah untuk setiap potongan. Kita sekarang dapat melihat bahwa pemotongan yang lebih baik (sangat baik, premium, ideal) cenderung memiliki nilai karat yang lebih rendah daripada pemotongan yang lebih buruk (adil, baik) tetapi memberikan harga per karat yang lebih tinggi. Sumber data: Hadley Wickham, ggplot2
Gambar 18.13: Harga berlian versus nilai karatnya. Di sini, kami telah mengambil kontur kerapatan dari Gambar 18.12 dan menggambarnya secara terpisah untuk setiap potongan. Kita sekarang dapat melihat bahwa pemotongan yang lebih baik (sangat baik, premium, ideal) cenderung memiliki nilai karat yang lebih rendah daripada pemotongan yang lebih buruk (adil, baik) tetapi memberikan harga per karat yang lebih tinggi.Sumber data: Hadley Wickham, ggplot2
Kita bisa melihat dua tren utama. Pertama, potongan yang lebih baik (sangat baik, premium, ideal) cenderung memiliki nilai karat yang lebih rendah daripada potongan yang lebih buruk (adil, baik). Ingat bahwa karat adalah ukuran berat intan (1 karat = 0,2 gram). Potongan yang lebih baik cenderung menghasilkan (rata-rata) pada berlian yang lebih ringan karena lebih banyak material yang perlu dihilangkan untuk membuatnya. Kedua, pada nilai karat yang sama, pemotongan yang lebih baik cenderung menghasilkan harga yang lebih tinggi. Untuk melihat pola ini, lihat misalnya pada distribusi harga untuk 0,5 karat. Distribusi digeser ke atas untuk potongan yang lebih baik, dan khususnya jauh lebih tinggi untuk berlian dengan potongan yang ideal daripada untuk berlian dengan potongan yang adil atau baik.

Referensi

Carr, DB, RJ Littlefield, WL Nicholson, dan JS Littlefield.1987. "Teknik Matriks Scatterplot untuk N. Besar" Selai. Stat.Assoc. 82: 424–36.