Bagaimana cara memplot set data 5D di "koordinat bintang"?

8

Saya membaca makalah "Star Coordinates: A Visualization Multidimensional Technique dengan Uniform Treatment of Dimensions" dan mencoba untuk memplot data saya.

Katakanlah saya memiliki , titik data lima dimensi, dan titik dihitung dengan rumus yang dijelaskan dalam makalah. A(2,5,3,1,8)

Ide dasar Star Coordinates adalah untuk mengatur sumbu koordinat pada lingkaran pada bidang dua dimensi dengan sudut (awalnya) yang sama antara sumbu dengan asal pada pusat lingkaran (Gambar 1). Awalnya, semua sumbu memiliki panjang yang sama. Poin data diskalakan ke panjang sumbu, dengan pemetaan minimum ke titik asal dan maksimum ke ujung sumbu lainnya. Vektor satuan dihitung sesuai. ...

Ini hanyalah perpanjangan dari plot 2d dan 3d tipikal ke dimensi yang lebih tinggi dengan normalisasi.

Saya kesulitan memahami ide itu. Bagaimana saya merencanakannya? Masalah utamanya adalah saya tidak bisa memahami formula di koran.

solti
sumber
Apa yang ingin kamu plot? representasi 3d? representasi 2d yang akan menunjukkan beberapa pengelompokan?
lcrmorin
2
Anda mengharapkan kami ke Google bahwa, membaca makalah dan menemukan "formula" .... Harap berikan informasi lebih lanjut.
Nick Cox
Teknik ini terkait erat dengan "biplot" PCA. Saya percaya "koordinat bintang" mungkin sama dengan yang digunakan dalam biplot untuk PCA di mana komponen utama pertama adalah dan PC kedua adalah vektor ortogonal untuk itu. (1,1,,1)
Whuber
terima kasih teman-teman untuk respon @ Imorin saya pikir representasi 2d .. @ whuber ♦ -Apakah biplot dan bintang mengkoordinasikan yang Anda maksud?
solti
Saya telah mempersempit pertanyaan saya .. bagaimana cara menemukan satuan vektor sepanjang x dan y.
solti 3'13

Jawaban:

10

"Koordinat bintang" dimaksudkan untuk dimodifikasi secara interaktif, dimulai dengan default. Jawaban ini menunjukkan cara membuat default; modifikasi interaktif adalah detail pemrograman.

Data dianggap sebagai kumpulan vektor di . Ini pertama dinormalisasi secara terpisah dalam setiap koordinat, secara linear mengubah data ke dalam interval . Ini dilakukan, tentu saja, dengan terlebih dahulu mengurangi minimum dari setiap elemen dan membaginya dengan rentang. Panggil data yang dinormalisasi .xj=(xj1,xj2,,xjd)Rd{xji,j=1,2,}[0,1]zj

Dasar adalah himpunan vektor memiliki tunggal dalam Tempat . Dalam hal dasar ini, . "Proyeksi koordinat bintang" memilih satu set vektor satuan yang berbeda di dan memetakan ke . Ini mendefinisikan transformasi linear dari ke . Peta ini diterapkan keRdei=(0,0,,0,1,0,0,,0)1ithzj=zj1e1+zj2e2++zjded{ui,i=1,2,,d}R2eiuiRdR2zj--it hanyalah perkalian matriks - untuk membuat titik awan dua dimensi, digambarkan sebagai sebar scatter. Vektor satuan digambar dan diberi label untuk referensi.ui

(Versi interaktif akan memungkinkan pengguna untuk memutar masing-masing individual.)ui


Untuk menggambarkan hal ini, berikut adalah Rpenerapan yang diterapkan pada dataset karakteristik kinerja mobil. Pertama mari kita dapatkan datanya:

library(MASS)
x <- subset(Cars93, 
       select=c(Price, MPG.city, Horsepower, Fuel.tank.capacity, Turn.circle))

Langkah awal adalah menormalkan data:

x.range <- apply(x, 2, range)
z <- t((t(x) - x.range[1,]) / (x.range[2,] - x.range[1,]))

Sebagai default, mari kita buat vektor satuan spasi sama untuk . Ini menentukan proyeksi yang diterapkan pada :duiprjz

d <- dim(z)[2] # Dimensions
prj <- t(sapply((1:d)/d, function(i) c(cos(2*pi*i), sin(2*pi*i))))
star <- z %*% prj

Itu saja - kita semua siap untuk merencanakan. Ini diinisialisasi untuk memberikan ruang bagi titik data, sumbu koordinat, dan labelnya:

plot(rbind(apply(star, 2, range), apply(prj*1.25, 2, range)), 
     type="n", bty="n", xaxt="n", yaxt="n",
     main="Cars 93", xlab="", ylab="")

Ini plotnya sendiri, dengan satu baris untuk setiap elemen: sumbu, label, dan poin:

tmp <- apply(prj, 1, function(v) lines(rbind(c(0,0), v)))
text(prj * 1.1, labels=colnames(z), cex=0.8, col="Gray")
points(star, pch=19, col="Red"); points(star, col="0x200000")

Plot bintang


Untuk memahami plot ini, mungkin membantu untuk membandingkannya dengan metode tradisional, matriks sebar:

pairs(x)

Matriks scatterplot


Analisis komponen utama berbasis korelasi (PCA) menciptakan hasil yang hampir sama.

(pca <- princomp(x, cor=TRUE))
pca$loadings[,1]
biplot(pca, choices=2:3)

Output untuk perintah pertama adalah

Standard deviations:
   Comp.1    Comp.2    Comp.3    Comp.4    Comp.5 
1.8999932 0.8304711 0.5750447 0.4399687 0.4196363 

Sebagian besar varians diperhitungkan oleh komponen pertama (1,9 vs 0,83 dan kurang). Memuat ke komponen ini dalam ukuran yang hampir sama, seperti yang ditunjukkan oleh output ke perintah kedua:

     Price           MPG.city         Horsepower Fuel.tank.capacity        Turn.circle 
 0.4202798         -0.4668682          0.4640081          0.4758205          0.4045867 

Ini menunjukkan - dalam kasus ini - bahwa plot koordinat bintang default sedang diproyeksikan di sepanjang komponen utama pertama dan karenanya menunjukkan, pada dasarnya, beberapa kombinasi dua dimensi dari PC kedua hingga kelima. Nilainya dibandingkan dengan hasil PCA (atau analisis faktor terkait) karena itu dipertanyakan; manfaat utama mungkin dalam interaktivitas yang diusulkan.

Meskipun Rbiplot default terlihat mengerikan, ini untuk perbandingan. Untuk membuatnya cocok dengan plot koordinat bintang dengan lebih baik, Anda harus mengubah agar setuju dengan urutan sumbu yang ditunjukkan pada biplot ini.ui

Biplot

whuber
sumber
1

Selain jawaban yang bagus dari @whuber, saya ingin menambahkan beberapa opsi lain untuk menampilkan data multidimensi (multivarian) dalam "koordinat bintang", demi cakupan yang lebih komprehensif. Jawaban saya berfokus pada melakukan visualisasi data multivarian semacam itu di R.

Saya akan mulai dengan mengatakan bahwa plot bintang (dalam varian spider dan radar ) didukung oleh paket Rdasar graphicsmelalui fungsi stars(): http://stat.ethz.ch/R-manual/R-devel/library/graphics/html/ stars.html . Berikutnya dalam R"rantai makanan", tentu saja, ggplot2paket, yang AFAIK saat ini tidak memiliki fungsi spesifik untuk jenis plot ini (tolong perbaiki saya, jika saya tidak mengetahui hal ini). Namun, implementasi dasar oleh Hadley Wickham, menggunakan coord_polar(), dapat ditemukan di sini . Selain itu, ggsubplotpaket berbasis ggplot2 menawarkan fungsi yang relevan geom_star(): http://www.inside-r.org/packages/cran/ggsubplot/docs/geom_star .

Paket lain yang berisi fungsionalitas merencanakan bintang meliputi: psych- fungsi spider()dan radar()- http://personality-project.org/r/html/spider.html , plotrix- function radial.plot()- http://onertipaday.blogspot.com/2009/01/radar -chart.html ) dan, mungkin, beberapa yang lain.

Selain hal-hal di atas, perlu dicatat bahwa dimungkinkan untuk membuat plot bintang di perangkat lunak yang diaktifkan Web , yang dengan mudah berinteraksi dengannya R. Sebagai contoh, berikut adalah variasi plot bintang plotly, di mana ini disebut bagan area polar: https://plot.ly/r/polar-chart/#Polar-Area-Chart . Berbicara tentang Rdan visualisasi data yang diaktifkan Web, tidak mungkin untuk tidak menyebutkan perpustakaan D3.js yang hebat, yang juga dapat diakses dari R. Berikut adalah cara membuat plot bintang yang tampak hebat, menggunakan D3.js: http://www.visualcinnamon.com/2013/09/making-d3-radar-chart-look-bit-better.html .

Aleksandr Blekh
sumber
2
Kontribusi Anda dihargai. Namun, sepertinya itu tidak relevan secara langsung dengan utas ini. Makalah yang dirujuk oleh OP tertarik pada visualisasi "... untuk penemuan cluster dan tugas analisis multi-faktor." Ini memandang koordinat , bukan bentuk plot, untuk menjadi inovasi yang relevan, mengklaim bahwa mereka "... transformasi canggih yang akan meningkatkan pemahaman data dalam multi-dimensi [ sic ]." Secara khusus, "koordinat bintang" bukan hanya koordinat default dalam plot bintang radial, seperti yang diasumsikan oleh jawaban Anda.
whuber
1
@whuber: Terima kasih atas kata-kata baik dan menunjukkan masalahnya. Setelah membaca ulang makalah, saya setuju dengan komentar Anda. Ada perbedaan penting antara yang disarankan dalam pendekatan makalah dan pendekatan plot bintang standar. Namun, dari visualisasi data perspektif dan ide inti menyajikan ( ditransformasikan ) data multidimensi melalui koordinat polar sistem, mereka masih berhubungan.
Aleksandr Blekh