Memposisikan panah pada biplot PCA

18

Saya ingin menerapkan biplot untuk analisis komponen utama (PCA) dalam JavaScript. Pertanyaan saya adalah, bagaimana cara menentukan koordinat panah dari keluaran dari dekomposisi vektor singular (SVD) dari matriks data?U,V,D

Berikut adalah contoh biplot yang diproduksi oleh R:

biplot(prcomp(iris[,1:4]))

Biplot dari dataset Iris

Saya mencoba mencarinya di artikel Wikipedia tentang biplot tetapi tidak terlalu berguna. Atau benar. Tidak yakin yang mana.

ktdrv
sumber
3
Biplot adalah sebaran hamparan yang menunjukkan nilai U dan nilai V. Atau UD dan V. Atau U dan VD '. Atau UD dan VD '. Dalam hal PCA, UD disebut skor komponen utama mentah dan VD 'disebut pemuatan variabel-komponen.
ttnphns
2
Perhatikan juga bahwa skala koordinat tergantung pada bagaimana Anda menormalkan data pada awalnya. Dalam PCA, misalnya, orang normal membagi data dengan sqrt (r) atau sqrt (r-1) [r adalah jumlah baris]. Tetapi dalam "biplot" yang sebenarnya dalam arti kata yang sempit, seseorang biasanya membagi data dengan sqrt (rc) [c adalah jumlah kolom] dan kemudian
men
Mengapa data harus diskalakan oleh ? 1n1
ktdrv
1
@ttnphns: Mengikuti komentar Anda di atas, saya menulis jawaban untuk pertanyaan ini, bertujuan untuk memberikan sesuatu seperti ikhtisar normalisasi biplot PCA. Namun, pengetahuan saya tentang topik ini murni teoretis dan saya yakin Anda memiliki lebih banyak pengalaman langsung dengan biplot daripada saya. Jadi saya akan berterima kasih atas komentarnya.
Amoeba berkata Reinstate Monica
1
Salah satu alasan untuk mengimplementasikan berbagai hal, @Alexandr, adalah untuk mengetahui apa yang sedang dilakukan. Seperti yang Anda lihat, tidaklah mudah untuk mengetahui apa yang sebenarnya terjadi ketika seseorang berlari biplot(). Juga, mengapa repot-repot dengan integrasi R-JS untuk sesuatu yang hanya membutuhkan beberapa baris kode.
Amuba mengatakan Reinstate Monica

Jawaban:

40

Ada banyak cara berbeda untuk menghasilkan biplot PCA dan karenanya tidak ada jawaban unik untuk pertanyaan Anda. Berikut ini gambaran singkatnya.

Kami berasumsi bahwa matriks data memiliki titik data dalam baris dan berpusat (artinya kolom berarti semua nol). Untuk saat ini, kami tidak menganggap itu standar, yaitu kami menganggap PCA pada matriks kovarians (bukan pada matriks korelasi). PCA berjumlah dekomposisi nilai singular Anda dapat melihat jawaban saya di sini untuk perincian: Hubungan antara SVD dan PCA. Bagaimana cara menggunakan SVD untuk melakukan PCA? n X = U S V ,Xn

X=USV,

Dalam biplot PCA, dua komponen utama pertama diplot sebagai plot pencar, yaitu kolom pertama diplot terhadap kolom kedua. Tetapi normalisasi bisa berbeda; mis. seseorang dapat menggunakan:U

  1. Kolom : ini adalah komponen utama yang diskalakan ke satuan jumlah kuadrat;U
  2. Kolom : ini adalah komponen utama standar (varian unit);n1U
  3. Kolom : ini adalah komponen utama "mentah" (proyeksi pada arah utama).US

Selanjutnya, variabel asli diplot sebagai panah; yaitu koordinat dari th panah endpoint diberikan oleh nilai -th di kolom pertama dan kedua dari . Tetapi sekali lagi, orang dapat memilih normalisasi yang berbeda, misalnya:i i V(x,y)iiV

  1. Kolom : Saya tidak tahu seperti apa interpretasi di sini;VS
  2. Kolom : ini memuat;VS/n1
  3. Kolom : ini adalah sumbu utama (alias arah utama, alias vektor eigen).V

Ini adalah bagaimana semua itu terlihat untuk dataset Fisher Iris:

Biplots Fisher Iris, PCA pada kovarian

Menggabungkan setiap subplot dari atas dengan subplot apa pun dari bawah akan membentuk kemungkinan normalisasi. Tetapi menurut definisi asli dari sebuah biplot yang diperkenalkan dalam Gabriel, 1971, Tampilan grafik biplot dari matriks dengan penerapan analisis komponen utama (omong-omong, makalah ini memiliki 2k kutipan), matriks yang digunakan untuk biplot harus, ketika dikalikan bersama, mendekati (itulah intinya). Jadi "biplot yang tepat" dapat menggunakan misalnya dan . Karena itu, hanya tiga dari merupakan "biplots yang tepat": yaitu kombinasi dari setiap subplot dari atas dengan yang langsung di bawah.X U S α β V S ( 1 - α ) / β 99XUSαβVS(1α)/β9

[Apa pun kombinasi yang digunakan seseorang, mungkin perlu untuk menskalakan panah berdasarkan faktor konstan sewenang-wenang sehingga baik panah dan titik data muncul secara kasar pada skala yang sama.]

Menggunakan memuat, yaitu , untuk panah memiliki manfaat besar karena mereka memiliki interpretasi yang berguna (lihat juga di sini tentang memuat). Panjang panah pemuatan mendekati standar deviasi variabel asli (panjang kuadrat mendekati perbedaan), produk skalar antara dua panah mendekati kovarians di antara mereka, dan garis sudut antara panah memperkirakan korelasi antara variabel asli. Untuk membuat "biplot yang tepat", seseorang harus memilih , yaitu PC standar, untuk titik data. Gabriel (1971) menyebut ini "PCA biplot" dan menulis itu UVS/n1Un1

[Pilihan khusus] ini kemungkinan akan memberikan bantuan grafis yang paling berguna dalam menafsirkan matriks multivarian dari pengamatan, asalkan, tentu saja, bahwa ini dapat didekati secara memadai di peringkat dua.

Menggunakan dan memungkinkan interpretasi yang bagus: panah adalah proyeksi dari vektor basis asli ke bidang PC, lihat ilustrasi ini oleh @ hxd1011 .VUSV

Seseorang bahkan dapat memilih untuk memplot PC mentah bersamaan dengan memuat. Ini adalah "biplot yang tidak benar", tetapi misalnya dilakukan oleh @vqv pada biplot paling elegan yang pernah saya lihat: Visualisasi sejuta, edisi PCA - ini menunjukkan PCA dari dataset anggur.US

Angka yang Anda poskan (hasil default biplotfungsi R ) adalah "biplot yang tepat" dengan dan . Fungsi ini menskala dua subplot sedemikian sehingga mereka menjangkau area yang sama. Sayangnya, fungsi ini membuat pilihan aneh untuk menskalakan semua panah ke bawah dengan faktor dan menampilkan label teks di mana titik akhir panah seharusnya berada. (Juga, tidak mendapatkan skala dengan benar dan bahkan berakhir sampai merencanakan skor dengan jumlah kuadrat, bukan Lihat penyelidikan rinci ini dengan @AntoniParellada:. Arrows of mendasari variabel dalam PCA biplot di R . )V S 0,8 n / ( n - 1 ) 1UVSbiplot0.8biplotn/(n1)1

PCA pada matriks korelasi

Jika kita mengasumsikan bahwa matriks data telah distandarisasi sehingga standar deviasi kolom semua sama dengan , maka kita melakukan PCA pada matriks korelasi. Berikut ini adalah gambar yang sama: 1X1

Fisher Iris biplots, PCA tentang korelasi

Di sini bebannya bahkan lebih menarik, karena (selain sifat-sifat yang disebutkan di atas), mereka memberikan tepat (dan tidak kurang) koefisien korelasi antara variabel asli dan PC. Korelasi semuanya lebih kecil dari dan panah pemuatan harus berada di dalam "lingkaran korelasi" jari-jari , yang kadang-kadang digambar pada biplot juga (saya memplotnya pada subplot yang sesuai di atas). Perhatikan bahwa biplot oleh @vqv (ditautkan di atas) dilakukan untuk PCA pada matriks korelasi, dan juga menggunakan lingkaran korelasi.R = 11R=1


Bacaan lebih lanjut:

amuba kata Reinstate Monica
sumber
1
+6, ini layak mendapatkan lebih dari 3 upvotes.
gung - Reinstate Monica
3
Hanya memperhatikan bahwa? Ca :: plot.ca memiliki gambaran yang bagus tentang kemungkinan normalisasi yang berbeda: mereka membedakan prinsipal baris (bentuk biplot = baris dalam koordinat utama), cols dalam standar coords), prinsipal col (kovarians biplot = cols dalam coord utama, baris dalam coord standar), biplot simetris (baris dan kolom diskalakan untuk memiliki varians yang sama dengan nilai singular (akar kuadrat dari nilai eigen)), rowgab dan colgab (baris dalam coords utama dan cols dalam coords standar dikalikan dengan massa titik yang sesuai atau dan sebaliknya) dan rowgreen dan colgreen (seperti rowgab dan colgab tetapi dengan sqrt (massa))
Tom Wenseleers
2
Yang terakhir ini juga disebut "kontribusi biplots"; buku karya M. Greenacre "Biplots in practice" juga memberikan gambaran yang bagus tentang semua ini; cara penskalaan ini berlaku untuk semua metode yang didasarkan pada SVD (yaitu CA biplots, PCA biplots, LDA biplots dll); untuk contoh cara kerjanya lihat kode sumber ca ::: plot.ca dan argumen "peta"
Tom Wenseleers
1
@Antoni Maksud Anda, Anda ingin setiap gambar menjadi hyperlink, misalnya angka pertama harus berupa hyperlink ke i.stack.imgur.com/6ddZg.png ? Jangan ragu untuk mengedit, saya selalu dapat memperbaiki apa pun yang saya tidak suka nanti :) Mengenai , ada beberapa kebingungan: bagaimana unit SS dapat dikombinasikan dengan varian unit? Ini salah satu atau yang lain ... Saya tidak yakin apa yang Anda maksud. n1
Amoeba berkata Reinstate Monica
1
@AntoniParellada Saya mengedit, dan menyisipkan beberapa tautan.
Amoeba berkata Reinstate Monica