一篇论文提到了“蒙特卡罗模拟以确定主成分的数量”;它是如何工作的?


10

我正在对MRI数据进行Matlab分析,其中我在尺寸为10304x236的矩阵上执行了PCA,其中10304是体素(以像素为单位)的数量,而236是时间点的数量。PCA给了我236个特征值及其相关系数。一切都很好。但是,当需要确定要保留多少个组件时,我要复制的论文说如下(请让我知道是否需要澄清,因为这只是整篇论文的一小部分):

然后,我们进行了蒙特卡洛模拟以确定每次扫描从讨厌的ROI数据中提取的主要成分(PC)的数量。通过对与编码和静止干扰ROI数据等级相同的正态分布数据执行PCA,分别为每个受试者的编码和静止数据生成了预期特征值的零分布。如果PC的相关特征值超过了来自Monte Carlo模拟的特征值的第99个置信区间,则从真实的ROI数据中选择PC进行给定的休息或编码扫描。

Tambini&Davachi,PNAS,2013年,海马多体素模式在编码后休息中的持久性与记忆有关

我绝对不知道该怎么办。我习惯于根据解释的累积方差来选择组件。我的想法是这样的:

然后,我们进行了蒙特卡洛模拟以确定每次扫描从讨厌的ROI数据中提取的主要成分(PC)的数量。

蒙特卡洛模拟人生只是意味着要进行以下1000次(或类似次数),对吗?

通过对与编码和剩余扰动ROI数据同等等级的正态分布数据执行PCA,可以生成预期特征值的零分布。

首先,我假设“相等等级”基本上意味着我将创建一个与原始矩阵大小相同的矩阵(10304x236)。就“等秩的正态分布数据”而言……这是否意味着我应该根据正态分布创建一个随机数为10304x236的矩阵?Matlab具有一个称为“ normrnd”的功能,可以执行此操作,但需要输入mu和sigma。我会使用与从初始数据集中获得的相同的mu和sigma吗?这或多或少是“期望特征值”的含义,因为我不知道期望特征值的分布是什么样。

我猜我的问题或多或少是我不知道如何对特征值进行“零分布”。

Answers:


6

该问题的一个相关术语是“并行分析”。

简单来说,蒙特卡洛模拟会生成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-for-determining-the-number-of-components-to-retain-from-pca/content/pa_test。米

我通过搜索“ Matlab中的并行分析”发现了这一点。


+1。这非常清楚,该链接对我有很大帮助!我已经正确编码了to提取随机分布的特征值,但是没有以正确的方式利用置信区间。非常感谢您的回复。
chainhomelow 2016年

乐意效劳!很高兴对您有用。
maxwelldeux
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.