Memilih sejumlah komponen utama untuk dipertahankan


10

Salah satu metode yang disarankan kepada saya adalah dengan melihat plot scree dan memeriksa "siku" untuk menentukan jumlah PC yang tepat untuk digunakan. Tetapi jika plotnya tidak jelas, apakah R memiliki perhitungan untuk menentukan angka?

fit <- princomp(mydata, cor=TRUE)

3
Bukannya aku tahu. Pertama, jika Anda merujuk pada "nilai eigen di atas 1 aturan praktis" atau yang disebut aturan Kayser, Anda mungkin akan menemukan jumlah PC yang memenuhi ini (perlu diingat bahwa ini umumnya melebih-lebihkan jumlah dimensi) dengan melihat lebih tepatnya di plot scree Anda. Kedua, analisis paralel adalah cara yang lebih baik untuk menentukan jumlah komponen; melihat psyatau psychpaket di R, dan SPSS, SAS, dan MATLAB Program untuk Menentukan Jumlah Komponen dan Faktor. Menggunakan Analisis Paralel dan Tes PETA Velicer secara lebih umum.
chl

Jawaban:


10

Artikel berikut: Retensi komponen dalam analisis komponen utama dengan aplikasi untuk data microarray cDNA oleh Cangelosi dan Goriely memberikan gambaran yang agak bagus tentang aturan standar praktis untuk mendeteksi jumlah komponen dalam penelitian. (Scree plot, Proportion of total variance dijelaskan, aturan nilai eigen rata-rata, diagram nilai log-eigen, dll.) Sebagian besar dari mereka cukup mudah untuk diterapkan dalam R.

Secara umum jika plot scree Anda sangat tidak meyakinkan maka Anda hanya perlu "mengambil racun Anda". Tidak ada benar atau salah mutlak untuk data apa pun karena dalam kenyataannya jumlah PC untuk digunakan sebenarnya tergantung pada pemahaman Anda tentang masalah tersebut. Satu-satunya kumpulan data yang Anda dapat "benar-benar" tahu dimensi adalah yang Anda buat sendiri. :-) Komponen Utama pada akhirnya memberikan dekomposisi data yang optimal dalam metrik RSS (di mana sebagai produk sampingan Anda mendapatkan setiap komponen untuk mewakili mode variasi utama) dan termasuk atau tidak termasuk sejumlah komponen tertentu menentukan persepsi Anda tentang dimensi masalah Anda.

Sebagai pilihan pribadi, saya suka pendekatan Minka pada pilihan otomatis dimensi untuk PCA yang didasarkan pada interpretasi probabilistik PCA tetapi sekali lagi, Anda masuk ke dalam permainan mencoba memodelkan kemungkinan data Anda untuk dimensi tertentu. (Tautan menyediakan kode Matlab jika Anda ingin mengikuti alasan ini.)

Cobalah untuk lebih memahami data Anda. misalnya. Apakah Anda benar-benar percaya bahwa 99,99% variasi set data Anda disebabkan oleh kovariat model Anda? Jika tidak, Anda mungkin tidak perlu memasukkan dimensi yang menunjukkan proporsi kecil total varians. Apakah Anda berpikir bahwa pada kenyataannya komponen mencerminkan variasi di bawah ambang batas perbedaan yang nyata? Itu lagi mungkin berarti bahwa ada sedikit relevansi dalam memasukkan komponen itu ke analisis Anda.

Bagaimanapun, semoga berhasil dan periksa data Anda dengan cermat. (Merencanakan mereka juga membuat keajaiban.)


Bisakah Anda menunjuk ke kode matlab, saya tidak dapat menemukannya.
mrgloom


Yap! Itulah tautan yang saya maksud.
usεr11852

Saya ingin tahu apakah pendekatan Minka diterapkan dalam R sekarang? Katakanlah PC yang paling penting telah ditentukan dalam penelitian dengan metode yang berbeda, kita tahu ini harus menjadi bagian sinyal dari data. Apakah Anda tahu secara kebetulan jika ada batasan dalam% varians yang dijelaskan oleh PC ini, di bawah ini yang dianggap sebagai No-Go untuk analisis lebih lanjut? referensi apa pun akan sangat dihargai.
gelar doktor

6

Sudah ada pekerjaan yang sangat baik berikutnya pada masalah ini dalam beberapa tahun terakhir sejak pertanyaan ini awalnya ditanyakan dan dijawab. Saya sangat merekomendasikan makalah berikut oleh Gavish dan Donoho: Ambang Batas Optimal untuk Nilai Singular adalah 4 / sqrt (3)

Hasil mereka didasarkan pada analisis asimptotik (yaitu ada solusi optimal yang terdefinisi dengan baik karena matriks data Anda menjadi sangat besar), tetapi mereka menunjukkan hasil numerik yang mengesankan yang menunjukkan prosedur optimal asimptotik bekerja untuk kumpulan data berukuran kecil dan realistis, bahkan di bawah kebisingan yang berbeda model.

Pada dasarnya, prosedur yang optimal bermuara pada memperkirakan kebisingan, , ditambahkan ke setiap elemen dari matriks. Berdasarkan ini, Anda menghitung ambang dan menghapus komponen utama yang nilai singularnya jatuh di bawah ambang. Untuk matriks kuadrat , konstanta proporsionalitas 4 / sqrt (3) muncul seperti yang disarankan dalam judul:n × nσn×n

λ=4σn3

Mereka juga menjelaskan kasus non-kotak di koran. Mereka memiliki suplemen kode yang bagus (dalam MATLAB) di sini, tetapi algoritme akan mudah diterapkan di R atau di mana pun: https://purl.stanford.edu/vg705qn9070

Peringatan:

  • Jika Anda memiliki data yang hilang, saya tidak yakin ini akan berhasil
  • Jika setiap fitur dalam dataset Anda memiliki besaran noise yang berbeda, saya tidak yakin ini akan berhasil (meskipun pemutihan mungkin bisa mengatasi ini dengan asumsi tertentu)
  • Akan menarik untuk melihat apakah hasil yang sama berlaku untuk faktorisasi matriks peringkat rendah lainnya (mis. Faktorisasi matriks non-negatif).

+1, wow makalah ini terlihat sangat menarik. Terima kasih banyak untuk menyebutkannya.
amoeba

4

Masalah dengan kriteria Kaiser (semua nilai eigen lebih besar dari satu) adalah bahwa jumlah faktor yang diekstraksi biasanya sekitar sepertiga jumlah item atau skala dalam baterai, terlepas dari apakah banyak faktor tambahan itu kebisingan. Analisis paralel dan kriteria scree umumnya merupakan prosedur yang lebih akurat untuk menentukan jumlah faktor yang akan diekstraksi (menurut teks klasik oleh Harmon dan Ledyard Tucker serta karya terbaru oleh Wayne Velicer.

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.