Apa perbedaan antara fungsi R prcomp dan princomp?

70

Saya membandingkan ?prcompdan ?princompdan menemukan sesuatu tentang analisis komponen utama Q-mode dan R-mode (PCA). Tapi jujur ​​- saya tidak mengerti. Adakah yang bisa menjelaskan perbedaannya dan bahkan mungkin menjelaskan kapan menerapkannya?

hans0l0
sumber
2
Apakah pertanyaannya tentang perbedaan antara fungsi prcomp dan princomp di R atau tentang perbedaan antara "Q-mode" dan "R-mode PCA"? Keduanya tidak berhubungan.
Brett
Sudah lama. Tapi saya akan periksa segera setelah saya punya waktu. IIRC Saya sebenarnya punya beberapa perbedaan ...
hans0l0

Jawaban:

50

Perbedaan di antara mereka tidak ada hubungannya dengan jenis PCA yang mereka lakukan, hanya metode yang mereka gunakan. Seperti halaman bantuan untuk prcompmengatakan:

Perhitungan dilakukan dengan dekomposisi nilai singular dari matriks data (terpusat dan mungkin diskalakan), bukan dengan menggunakan eigenpada matriks kovarians. Ini umumnya merupakan metode yang lebih disukai untuk akurasi numerik.

Di sisi lain, princomp halaman bantuan mengatakan:

Perhitungan dilakukan dengan menggunakan eigenmatriks korelasi atau kovarian, sebagaimana ditentukan oleh cor. Ini dilakukan untuk kompatibilitas dengan hasil S-PLUS. Sebuah metode yang disukai perhitungan adalah dengan menggunakan svdpada x, seperti yang dilakukan di prcomp."

Jadi, prcomplebih disukai , meskipun dalam praktiknya Anda tidak akan melihat banyak perbedaan (misalnya, jika Anda menjalankan contoh di halaman bantuan Anda harus mendapatkan hasil yang identik).

Dave
sumber
1
Ada beberapa detail teknis yang mengerikan tentang aljabar linier yang berbeda dan rutinitas LAPACK yang digunakan dalam jawaban saya untuk Mengapa komponen utama dalam PCA (vektor eigen dari matriks kovarians) saling ortogonal?
Silverfish
1
Juga, lihat Mengapa PCA data menggunakan SVD data? untuk diskusi mengapa SVD pada matriks data, seperti yang diterapkan oleh prcomp, adalah metode yang disukai.
Amuba kata Reinstate Monica
22

Biasanya analisis multivariat (menghitung korelasi, mengekstraksi laten, dll.) Dilakukan pada kolom data yang merupakan fitur atau pertanyaan, - sedangkan unit sampel, baris, adalah r konduktor. Karenanya cara ini disebut analisis cara R. Kadang-kadang, meskipun, Anda mungkin ingin melakukan analisis multivariat responsents, sedangkan q uestions diperlakukan sebagai unit sampel. Itu akan menjadi analisis cara Q.

Tidak ada perbedaan formal antara keduanya, sehingga Anda dapat mengelola keduanya dengan fungsi yang sama, hanya memindahkan data Anda. Namun, ada perbedaan dalam masalah standardisasi dan interpretasi hasil.

Ini adalah jawaban umum: Saya tidak menyentuh secara khusus fungsi R prcompdan princompkarena saya bukan pengguna R dan tidak mengetahui kemungkinan perbedaan di antara mereka.

ttnphns
sumber
5

Dokumentasi yang berguna dan spesifik dari Gregory B. Anderson , berjudul PRINCIPAL COMPONENT ANALYSIS IN R AN EXAMINATION OF THE DIFFERENT FUNCTIONS AND METHODS TO PERFORM PCAtelah memberikan informasi lebih lanjut tentang topik ini.

Dua paragraf berikut diekstraksi dari pendahuluan:

Dalam R ada dua metode umum untuk melakukan PCA tanpa nilai yang hilang: (1) dekomposisi spektral (R-mode [juga dikenal sebagai eigendekomposisi]) dan (2) dekomposisi nilai singular (mode-Q; Tim Inti Pengembangan R 2011). Kedua metode ini dapat dilakukan secara langsung menggunakan fungsi eigen (R-mode) dan svd (Q-mode), masing-masing, atau dapat dilakukan dengan menggunakan banyak fungsi PCA yang ditemukan dalam paket statistik dan paket tambahan lainnya yang tersedia. Metode analisis dekomposisi spektral memeriksa kovarian dan korelasi antar variabel, sedangkan metode dekomposisi nilai singular mengamati kovarian dan korelasi antar sampel. Sementara kedua metode dapat dengan mudah dilakukan dalam R, metode dekomposisi nilai singular (yaitu,

Dokumen ini berfokus pada membandingkan berbagai metode untuk melakukan PCA dalam R dan menyediakan teknik visualisasi yang tepat untuk memeriksa normalitas dalam paket statistik. Lebih khusus dokumen ini membandingkan enam fungsi berbeda yang dibuat untuk atau dapat digunakan untuk PCA: eigen, princomp, svd, prcomp, PCA, dan pca. Di seluruh dokumen kode R penting untuk melakukan fungsi-fungsi ini tertanam dalam teks menggunakan font Courier New dan diberi kode warna menggunakan teknik yang disediakan dalam Tinn-R ( https://sourceforge.net/projects/tinn-r ). Selain itu, hasil dari fungsi dibandingkan menggunakan prosedur simulasi untuk melihat apakah metode yang berbeda berbeda dalam nilai eigen, vektor eigen, dan skor yang disediakan dari output.

pekat
sumber
2
Jawaban lebih baik ketika mereka berdiri sendiri, karena tautan cenderung menjadi rusak (misalnya jika halaman bergerak atau dihapus). Maukah Anda mencoba memperluas jawaban Anda?
Patrick Coulombe
@ PatrickCoulombe, Sudah dilakukan. Terima kasih atas saran Anda. Saya akan memperhatikan hal ini di masa depan.
pengchy
1

prcompn-1princompn

Di bawah ini adalah hasil pengujian saya:

> job<-read.table("./job_perf.txt", header=TRUE, sep="")
> pc.cr<-prcomp(job, scale=TRUE, cor=TRUE, scores=TRUE)
> pc.cr1<-princomp(job, scale=TRUE, cor=TRUE, scores=TRUE)
> pc.cr$scale
    commun probl_solv    logical      learn   physical appearance
  5.039841   1.689540   2.000000   4.655398   3.770700   4.526689
> pc.cr1$scale
    commun probl_solv    logical      learn   physical appearance
  4.805300   1.610913   1.906925   4.438747   3.595222   4.316028

Data uji:

commun probl_solv logical learn physical appearance 12 52 20 44 48 16 12 57 25 45 50 16 12 54 21 45 50 16 13 52 21 46 51 17 14 54 24 46 51 17 22 52 25 54 58 26 22 56 26 55 58 27 17 52 21 45 52 17 15 53 24 45 53 18 23 54 23 53 57 24 25 54 23 55 58 25

Yanlong Li
sumber