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

机器算法验证 主成分分析 特征值 神经影像学 平行分析
2022-03-13 02:06:43

我正在对 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 吗?这或多或少是“预期特征值”的意思,因为我不知道预期特征值的分布是什么样的。

我想我的问题或多或少是我不知道如何制作特征值的“零分布”。

1个回答

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

简单来说,蒙特卡罗模拟将生成 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 中的并行分析”找到了一个。