Menjelajahi matriks sebar-plot untuk banyak variabel

10

Saya menganalisis dataset dengan banyak parameter (katakanlah, 50-200) dan saya tertarik melihat hubungan antara variabel (misalnya dalam hal plot sebar 2-variabel atau histogram 2d). Namun, untuk jumlah parameter ini tampaknya tidak layak untuk menggambar array 200x200 plot (kecuali saya mencetaknya dan menggantung di dinding).

Di sisi lain, hanya melakukan matriks korelasi tidak memberikan semua informasi tentang hubungan 2-variabel.

Apakah ada cara (perpustakaan atau alur kerja) untuk mengeksplorasi hubungan 2 variabel untuk banyak variabel?

Saya terutama tertarik untuk menunjukkan hasil kepada orang lain (mungkin setelah beberapa preprocessing data). Misalnya sesuatu yang interaktif dalam JavaScript, saya dapat melihat matriks sebar-plot untuk bidang yang dipilih dari matriks korelasi.

Dengan sebar-plot matriks saya maksudkan sesuatu seperti itu:

masukkan deskripsi gambar di sini

(diambil dari blog pandasplotting ; aviable dengan Python / Pandas , R , D3.js , dll).

Piotr Migdal
sumber
4
Anda tidak menjelaskan apa yang Anda cari. Apakah Anda ingin melihat cloud, setiap titik data? Apakah Anda ingin melihat semua aspek bivariat sekaligus ?
ttnphns
@ttnphns Saya ingin melihat semua titik data ATAU mereka dalam bentuk agregat (misalnya histogram 2d). Saya tidak perlu melihat semuanya sekaligus (karena masuk akal untuk <15 variabel, tetapi tidak 200). Dan ya, saya sadar bahwa pertanyaannya agak terbuka. Versi tertutup adalah "Apakah ada pustaka JS untuk menampilkan plot pencar & histogram ketika mouse melayang di masing-masing piksel pada matriks korelasi? Atau haruskah saya menulis satu? :)" Saya menulis yang lebih umum, karena mungkin ada beberapa alur kerja yang lebih baik untuk menangani masalah tersebut.
Piotr Migdal
Dimungkinkan untuk mengatur matriks sebar dalam bentuk kubus olap, sehingga Anda hanya melihat satu atau beberapa plot pada satu waktu dan dapat beralih di antara mereka. Sayangnya, saya tidak tahu program atau kode tertentu untuk melakukan kubus olap grafis.
ttnphns

Jawaban:

7

Mengeksplorasi hubungan antar variabel cukup samar, tetapi dua tujuan yang lebih umum untuk memeriksa sebar seperti ini saya kira adalah;

  • Identifikasi kelompok laten yang mendasarinya (dari variabel atau kasus).
  • Identifikasi pencilan (dalam ruang univariat, bivariat, atau multivarian).

Keduanya mengurangi data menjadi ringkasan yang lebih mudah dikelola, tetapi memiliki tujuan yang berbeda. Identifikasi kelompok laten yang biasanya mengurangi dimensi dalam data (misalnya melalui PCA) dan kemudian mengeksplorasi apakah variabel atau kasus berkumpul bersama dalam ruang yang diperkecil ini. Lihat misalnya Friendly (2002) atau Cook et al. (1995).

Mengidentifikasi pencilan dapat berarti menyesuaikan model dan merencanakan penyimpangan dari model (misalnya memplot residu dari model regresi) atau mengurangi data menjadi komponen utama dan hanya menyoroti titik-titik yang menyimpang baik dari model atau badan utama data. Misalnya plot kotak dalam satu atau dua dimensi biasanya hanya menunjukkan titik-titik individual yang berada di luar engsel (Wickham & Stryjewski, 2013). Memetakan residu memiliki sifat yang bagus sehingga plot harus rata (Tukey, 1977), sehingga bukti hubungan di cloud titik yang tersisa "menarik". Pertanyaan tentang CV ini memiliki beberapa saran yang sangat bagus untuk mengidentifikasi outlier multivarian.

Cara umum untuk mengeksplorasi SPLOMS yang besar adalah dengan tidak memplot semua poin individual, tetapi beberapa jenis ringkasan yang disederhanakan dan kemudian mungkin poin yang menyimpang sebagian besar dari ringkasan ini, misalnya elips kepercayaan diri, ringkasan scagnostic (Wilkinson & Wills, 2008), bivariat plot-kotak, plot kontur. Di bawah ini adalah contoh merencanakan elips yang mendefinisikan kovarians dan melapiskan loess lebih halus untuk menggambarkan hubungan linier.

Elips Corrgram
(sumber: statmethods.net )

Either way, plot interaktif yang sukses dan nyata dengan begitu banyak variabel kemungkinan akan membutuhkan penyortiran cerdas (Wilkinson, 2005) dan cara sederhana untuk menyaring variabel (selain kemampuan menyikat / menghubungkan). Juga setiap dataset realistis akan perlu memiliki kemampuan untuk mengubah sumbu (misalnya plot data pada skala logaritmik, mengubah data dengan mengambil root dll.). Semoga berhasil, dan jangan hanya bertahan dengan satu plot!


Kutipan

Andy W
sumber
1
Terima kasih! Tujuan saya adalah untuk mengeksplorasi data sebelum saya menjalankan PCA, karena variabel dapat dihubungkan secara non-linier dan membutuhkan pengubahan ukuran (atau pemrosesan lainnya).
Piotr Migdal
Contoh corrgram ellipse + loess smoother masih harus terkait kemudian (atau mengubah kovar. Elips dengan beberapa ukuran-poligon lain seperti bivariat boxplot), dan dapat membantu ID asosiasi non-linear. Pertanyaan tindak lanjut yang baik mungkin jika memungkinkan untuk ID asosiasi non-linear setelah pengurangan data melalui PCA (atau sesuatu seperti itu).
Andy W
1

Anda dapat mempertimbangkan untuk menggunakan antarmuka shiny dari paket pairsD3 R, yang menyediakan cara untuk berinteraksi dengan matriks sebar plot.

Contoh dengan set data iris:

install.packages("pairsD3")
require("pairsD3")
shinypairs(iris)

Sumber: https://github.com/garthtarr/pairsD3

Halaman dalam
sumber