选择要保留的主要成分数量


10

向我建议的一种方法是查看碎石图并检查“弯头”以确定要使用的正确PC数。但是,如果情节不清楚,R是否可以通过计算来确定数字?

fit <- princomp(mydata, cor=TRUE)

3
不,我知道。首先,如果您引用“超过1个经验法则的特征值”或所谓的Kayser规则,则可能会发现满足此要求的PC数量(请记住,这通常会高估尺寸)更精确地在您的卵石图上。其次,并行分析是确定组件数量的更好方法。请参阅R和SPSS,SAS和MATLAB程序中psypsych包,以确定组件和因子的数量。更广泛地使用并行分析和Velicer的MAP测试
chl 2012年

Answers:


10

下一篇文章:Cangelosi和Goriely将主要成分分析中的成分保留应用于cDNA微阵列数据,很好地概述了检测研究中成分数量的标准经验法则。(Scree图,解释的总方差比例,平均特征值规则,对数特征值图等。)大多数在R中都非常容易实现。

通常,如果您的碎石图没有定论,那么您只需要“摘下毒药”即可。任何数据都没有绝对对错,因为实际上使用的PC数量实际上取决于您对问题的理解。您唯一可以“真正”知道其维数的数据集就是您自己构建的数据集。:-)最终,主要成分可以在RSS度量标准下提供数据的最佳分解(作为副产品,您可以使每个成分代表主要的变化模式),并且可以包括或排除给定数量的成分决定您对问题的维度的看法。

出于个人喜好,我喜欢Minka在PCA维度自动选择上的方法,该方法基于对PCA的概率解释,但随后您又开始尝试为给定维度建模数据的可能性。(如果您希望遵循此基本原理,Link会提供Matlab代码。)

尝试更多地了解您的数据。例如。您是否真的相信数据集99.99%的变化是由于模型的协变量引起的?如果可能的话,您可能不需要包含占总方差很小的尺寸。您是否认为实际上组件反映的变化低于仅明显差异的阈值?同样,这可能意味着将该组件包括在您的分析中几乎没有相关性。

无论如何,祝您好运并仔细检查您的数据。(绘制它们也会产生奇迹。)


您能指向matlab代码吗,我找不到。
mrgloom


对!那就是我指的链接。
usεr11852

我想知道Minka的方法现在是否已在R中应用?假设在一项研究中已通过不同的方法确定了最重要的PC,我们知道这些PC应该是数据的信号部分。您是否偶然知道这些PC解释的%方差是否存在任何限制,低于此限制就不能进行进一步分析?任何参考将不胜感激。
博士学位

6

自从最初提出并回答该问题以来,过去几年中在此问题上进行了非常出色的后续工作。我强烈推荐Gavish和Donoho撰写的以下论文:奇异值的最佳硬阈值为4 / sqrt(3)

他们的结果基于渐近分析(即,随着您的数据矩阵变得无限大,有一个定义明确的最佳解决方案),但是它们显示了令人印象深刻的数值结果,即使在不同的噪声下,渐近最优程序也适用于小型且实际大小的数据集楷模。

本质上,最佳过程归结为估算添加到矩阵每个元素的噪声。基于此,您可以计算阈值并删除奇异值低于阈值的主成分。对于的平方矩阵,比例常数4 / sqrt(3)如标题中所示显示:Ñ × Ñσn×n

λ=4σn3

他们还解释了本文中的非正方形情况。他们在这里有一个不错的代码补充(在MATLAB中),但是这些算法很容易在R或其他任何地方实现:https : //purl.stanford.edu/vg705qn9070

注意事项:

  • 如果您缺少数据,我不确定这是否可行
  • 如果数据集中的每个特征具有不同的噪声幅度,我不确定这是否可行(尽管在某些假设下白化可能会绕过此问题)
  • 看看其他低阶矩阵因式分解(例如非负矩阵因式分解)是否也有类似结果会很有趣。

+1,哇,这篇论文看起来非常有趣。非常感谢您提及它。
变形虫

4

Kaiser准则(所有特征值均大于1)的问题在于,提取的因素数量通常约为电池中物品或秤的数量的三分之一,而与其他因素中是否有很多无关。并行分析和scree准则通常是确定要提取的因子数量的更准确的过程(根据Harmon和Ledyard Tucker的经典著作以及Wayne Velicer的最新著作)。

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.