Sebuah makalah menyebutkan "simulasi Monte Carlo untuk menentukan jumlah komponen utama"; bagaimana cara kerjanya?

10

Saya melakukan analisis Matlab pada data MRI di mana saya telah melakukan PCA pada matriks berukuran 10304x236 di mana 10304 adalah jumlah voxel (menganggapnya sebagai piksel) dan 236 adalah jumlah titik waktu. PCA memberi saya nilai Eigen 236 dan koefisien terkait mereka. Ini semua baik-baik saja Namun ketika tiba saatnya untuk memutuskan berapa banyak komponen yang harus dipertahankan, makalah yang saya ulas mengatakan hal berikut (tolong beri tahu saya jika ada klarifikasi yang diperlukan karena ini hanya bagian singkat dari keseluruhan makalah):

Kami kemudian melakukan simulasi Monte Carlo untuk menentukan jumlah komponen utama (PC) untuk diekstrak dari data ROI yang mengganggu untuk setiap pemindaian. Distribusi nol dari nilai eigen yang diharapkan dihasilkan secara terpisah untuk data enkode dan data istirahat untuk setiap subjek dengan melakukan PCA pada data yang terdistribusi normal dengan peringkat yang sama dengan enkode dan data ROI gangguan lainnya. PC dari data ROI gangguan sejati kemudian dipilih untuk istirahat tertentu atau pemindaian pengkodean jika nilai eigen yang terkait melebihi interval kepercayaan ke-99 dari nilai eigen dari simulasi Monte Carlo.

Tambini & Davachi, PNAS 2013, Kegigihan pola multivoxel hippocampal ke dalam istirahat postencoding terkait dengan memori .

Saya sama sekali tidak tahu apa yang harus saya lakukan di sini. Saya terbiasa memilih komponen berdasarkan varians kumulatif yang dijelaskan. Pemikiran saya adalah ini:

Kami kemudian melakukan simulasi Monte Carlo untuk menentukan jumlah komponen utama (PC) untuk diekstrak dari data ROI yang mengganggu untuk setiap pemindaian.

Sims Monte Carlo hanya bermaksud untuk melakukan 1000 (atau semacamnya) berikut kali, kan?

Distribusi nol dari nilai eigen yang diharapkan dihasilkan dengan melakukan PCA pada data yang terdistribusi normal dengan peringkat yang sama dengan data ROI penyandian dan gangguan lainnya.

Pertama, saya mengasumsikan 'peringkat yang sama' pada dasarnya akan berarti bahwa saya akan membuat matriks dengan ukuran yang sama seperti aslinya (10304x236). Dalam hal 'data terdistribusi normal dengan peringkat yang sama' ... apakah ini berarti saya harus membuat matriks 10304x236 angka acak dari distribusi normal? Matlab memiliki fungsi yang disebut 'normrnd' yang melakukan ini tetapi memerlukan input mu dan sigma. Apakah saya akan menggunakan mu dan sigma yang sama dengan yang berasal dari dataset awal? Apakah ini kurang lebih apa yang dimaksud dengan 'nilai eigen yang diharapkan' karena saya tidak tahu seperti apa distribusi nilai eigen yang diharapkan itu.

Saya kira masalah saya kurang lebih bahwa saya tidak tahu bagaimana membuat 'distribusi nol' dari nilai eigen.

chainhomelow
sumber

Jawaban:

6

Istilah terkait dengan pertanyaan ini adalah "Analisis Paralel".

Secara sederhana, simulasi monte carlo akan menghasilkan 1000 (atau lebih) 10304x236 matriks data acak yang terdistribusi normal (ini mengasumsikan, tentu saja, bahwa data yang Anda analisis terdistribusi secara normal; jika data Anda didistribusikan secara berbeda, Anda akan menggunakan distribusi acak yang berbeda). Anda kemudian akan mengekstrak nilai eigen untuk setiap set data yang Anda buat, dan rata-rata setiap nilai eigen di semua 1000 (atau semacamnya) replikasi sambil juga membuat interval kepercayaan. Anda kemudian membandingkan nilai eigen dari set data Anda dengan nilai eigen rata-rata dari simulasi Anda.

Di mana pun nilai eigen dari dataset Anda melebihi interval kepercayaan ke-99 dari nilai eigen dari simulasi monte carlo, begitulah banyak faktor yang akan dipertahankan oleh analisis.

Misalnya, jika nilai eigen ke-25 dari data Anda adalah 2,10 dan ke-26 adalah 1,97, dan interval kepercayaan ke-99 dari nilai eigen ke-25 dari 1000 (atau lebih) set data acak adalah 2,04 dan ke-26 adalah 2,01, ini akan menyarankan Anda mempertahankan 25 komponen.

Ada fungsi yang dibangun untuk melakukan ini untuk Anda. Satu tautan untuk Matlab adalah ini:

http://www.mathworks.com/matlabcentral/fileexchange/44996-parallel-analysis--pa--untuk-untuk-memastikan- jumlah-dari-dari-komponen-to-membatasi-dari-dari-contoh/content/pa_test. m

Saya menemukan satu itu dengan googling "Analisis Paralel di Matlab".

maxwelldeux
sumber
+1. Ini sangat jelas dan tautannya akan sangat membantu saya! Saya telah membuat kode untuk mengekstraksi nilai eigen yang didistribusikan secara acak dengan benar, tetapi tidak memanfaatkan interval kepercayaan dengan cara yang benar. Terima kasih banyak atas tanggapan Anda.
chainhomelow
Saya senang bisa membantu! Senang itu bermanfaat buat kamu.
maxwelldeux