Pca

一篇論文提到了“蒙特卡洛模擬來確定主成分的數量”;它是如何工作的?

  • January 6, 2016

我正在對 MRI 數據進行 Matlab 分析,其中我在大小為 10304x236 的矩陣上執行了 PCA,其中 10304 是體素的數量(將它們視為像素),236 是時間點的數量。PCA 給了我 236 個特徵值及其相關係數。這一切都很好。但是,當需要決定要保留多少組件時,我正在復制的論文說如下(如果需要任何澄清,請告訴我,因為這只是整篇論文的一小部分):

然後,我們進行了蒙特卡羅模擬,以確定要從每次掃描的有害 ROI 數據中提取的主成分 (PC) 的數量。通過對與編碼和休息滋擾 ROI 數據具有相同等級的正態分佈數據執行 PCA,分別為每個受試者的編碼和休息數據生成預期特徵值的空分佈。如果它們的相關特徵值超過蒙特卡洛模擬的特徵值的第 99 個置信區間,則來自真正令人討厭的 ROI 數據的 PC 被選擇用於給定的休息或編碼掃描。

Tambini & Davachi,PNAS 2013,海馬多體素模式在編碼後休息中的持久性與記憶有關

我完全不知道在這裡做什麼。我習慣於根據解釋的累積方差來選擇組件。不過我的想法是這樣的:

然後,我們進行了蒙特卡羅模擬,以確定要從每次掃描的有害 ROI 數據中提取的主成分 (PC) 的數量。

蒙特卡洛模擬人生只是意味著做以下 1000 次(或類似)次,對吧?

通過對與編碼和剩餘有害 ROI 數據具有相同等級的正態分佈數據執行 PCA,可以生成預期特徵值的空分佈。

首先,我假設“等秩”基本上意味著我將創建一個與原始矩陣 (10304x236) 大小相同的矩陣。就“等秩的正態分佈數據”而言……這是否意味著我應該從正態分佈中創建一個 10304x236 的隨機數矩陣?Matlab 有一個名為“normrnd”的函數可以執行此操作,但需要一個 mu 和 sigma 輸入。我會使用與從初始數據集派生的相同的 mu 和 sigma 嗎?這或多或少是“預期特徵值”的意思,因為我不知道預期特徵值的分佈是什麼樣的。

我想我的問題或多或少是我不知道如何製作特徵值的“零分佈”。

這個問題的一個相關術語是“平行分析”。

簡單來說,蒙特卡羅模擬將生成 1000 個(或類似的)10304x236 隨機正態分佈數據矩陣(當然,這假設您分析的數據是正態分佈的;如果您的數據分佈不同,您將使用不同的隨機分佈)。然後,您將為您創建的每個數據集提取特徵值,並在所有 1000 個(或類似的)複製中平均每個特徵值,同時創建置信區間。然後,您將數據集中的特徵值與模擬的平均特徵值進行比較。

無論您的數據集中的特徵值超過蒙特卡羅模擬的特徵值的第 99 個置信區間,這就是分析建議保留的因子數。

例如,如果您的數據中的第 25 個特徵值是 2.10,第 26 個是 1.97,並且來自 1000 個(或此類)隨機數據集的第 25 個特徵值的第 99 個置信區間是 2.04,第 26 個是 2.01,這將建議您保留 25 個組件。

有一些功能可以為您做到這一點。Matlab 的一個鏈接是這樣的:

http://www.mathworks.com/matlabcentral/fileexchange/44996-parallel-analysis–pa–to-for-determining-the-number-of-components-to-retain-from-pca/content/pa_test。米

我通過谷歌搜索“Matlab 中的並行分析”找到了一個。

引用自:https://stats.stackexchange.com/questions/189465

comments powered by Disqus