我比较?prcomp
并?princomp
发现了一些关于 Q 模式和 R 模式主成分分析 (PCA) 的信息。但老实说——我不明白。任何人都可以解释其中的区别,甚至可以解释何时应用哪个?
R函数prcomp和princomp有什么区别?
通常对作为特征或问题的数据列进行多变量分析(计算相关性、提取潜在值等),而样本单元(即行)是响应者。因此这种方式称为R方式分析。但是,有时您可能希望对响应者进行多变量分析,而将q问题视为样本单位。那将是Q路分析。
两者之间没有形式上的区别,因此您可以使用相同的功能管理两者,只需转置您的数据。然而,在标准化和结果解释的问题上存在差异。
这是一个一般性的答复:我没有具体涉及 R 函数prcomp
,princomp
因为我不是 R 用户,也不知道它们之间可能存在的差异。
来自 Gregory B. Anderson的有用且具体的文档,标题为PRINCIPAL COMPONENT ANALYSIS IN R AN EXAMINATION OF THE DIFFERENT FUNCTIONS AND METHODS TO PERFORM PCA
提供了有关此主题的更多信息。更新链接(2021 年 1 月 7 日)。
以下两段摘自引言:
在 R 中,有两种通用方法可以在没有任何缺失值的情况下执行 PCA:(1) 谱分解(R 模式 [也称为特征分解])和 (2) 奇异值分解(Q 模式;R Development Core Team 2011)。这两种方法都可以分别使用函数 eigen (R-mode) 和 svd (Q-mode) 执行,或者可以使用 stats 包和其他附加可用包中的许多 PCA 函数执行。谱分解法考察变量之间的协方差和相关性,而奇异值分解法考察样本之间的协方差和相关性。虽然这两种方法都可以在 R 中轻松执行,但奇异值分解方法(即,
本文档侧重于比较在 R 中执行 PCA 的不同方法,并提供适当的可视化技术来检查统计包中的正态性。更具体地说,本文档比较了为 PCA 创建或可用于 PCA 的六种不同函数:eigen、princomp、svd、prcomp、PCA 和 pca。在整个文档中,执行这些功能的基本 R 代码使用字体 Courier New 嵌入在文本中,并使用 Tinn-R ( https://sourceforge.net/projects/tinn-r ) 中提供的技术进行颜色编码。此外,使用模拟程序比较函数的结果,以查看不同方法在输出提供的特征值、特征向量和分数方面是否存在差异。
当两者都使用协方差矩阵时,它们是不同的。在对训练数据进行缩放(归一化)时,prcomp
使用作为分母,但使用作为其分母。这两个分母的区别在本教程的主成分分析中进行了解释。princomp
下面是我的测试结果:
> job<-read.table("./job_perf.txt", header=TRUE, sep="")
> pc.cr<-prcomp(job, scale=TRUE, cor=TRUE, scores=TRUE)
> pc.cr1<-princomp(job, scale=TRUE, cor=TRUE, scores=TRUE)
> pc.cr$scale
commun probl_solv logical learn physical appearance
5.039841 1.689540 2.000000 4.655398 3.770700 4.526689
> pc.cr1$scale
commun probl_solv logical learn physical appearance
4.805300 1.610913 1.906925 4.438747 3.595222 4.316028
测试数据:
commun probl_solv logical learn physical appearance
12 52 20 44 48 16
12 57 25 45 50 16
12 54 21 45 50 16
13 52 21 46 51 17
14 54 24 46 51 17
22 52 25 54 58 26
22 56 26 55 58 27
17 52 21 45 52 17
15 53 24 45 53 18
23 54 23 53 57 24
25 54 23 55 58 25