因子分析和主成分分析之间有什么区别?


214

看来,我使用的许多统计软件包将这两个概念包装在一起。但是,我想知道是否存在不同的假设或数据“形式”才能正确使用一个假设。一个真实的例子将非常有用。


2
本书的主要成分分析和因子分析各章可在大多数大学图书馆中找到,并准确地解决了您的问题:apa.org/pubs/books/4316510.aspx
user31256

3
除了下面你的答案可能也读 这个这个矿的。
ttnphns

2
另一个好问题,例如“我应该使用PCA还是FA”:stats.stackexchange.com/q/123063/3277
ttnphns 2014年

3
@ttnphns:我鼓励您在此线程中发布答案,可能由其他相关线程中带注释的答案列表组成。这可以替换上面的注释(当前有四个注释,带有链接),并且更加实用,特别是如果您简短地注释了每个链接。例如,在这里查找有关此问题的说明,在此处查找有关该问题的说明,等等。这仅是一个建议,但我相信该主题将从中受益匪浅!一个特别的优点是,您可以随时向该答案添加更多链接。
变形虫2015年

2
类似的问题,有人问MathOverflow,并得到了什么,我会考虑一个很好的答案:mathoverflow.net/questions/40191/...
丹尼尔Moskovich的

Answers:


156

主成分分析涉及提取观测变量的线性组合。

因子分析基于正式模型,该模型可根据理论潜在因子预测观察到的变量。

在心理学上,这两种技术通常用于构建多尺度测试,以确定哪些项目在哪个尺度上加载。他们通常会得出类似的实质性结论(有关讨论,请参见Comrey(1988)人格和临床心理学中规模发展的因子分析方法)。这有助于解释为什么某些统计数据包似乎将它们捆绑在一起。我还看到了“主要成分分析”被错误地标记为“因子分析”的情况。

根据简单的经验法则,建议您:

  1. 如果您假设或希望测试导致观测变量的潜在因素的理论模型,请进行运行因素分析。

  2. 运行主成分分析如果您想简单地将相关的观察变量简化为较小的重要独立复合变量集。


5
经验法则很有用。感谢那。
布兰登·贝特尔森

1
关于经验法则(1):我是否要通过验证性因素分析而不是探索性方法来检验潜在因素的理论模型?
罗马

1
@罗马是的。与EFA相比,CFA为您提供了对模型的更多控制。例如,您可以将载荷限制为零;相等的负荷;具有相关的残差;增加高阶因子;等
Jeromy Anglim

3
@Jeromy Anglim说PCA产生“一组较小的重要独立复合变量”是否真的正确?还是应该真正说“重要的不相关复合变量的较小集合”。如果PCA中使用的基础数据不是(多元)正态分布的,那么降维数据将只是不相关的?
FXQuantTrader 2016年

1
规则的第二个拇指很容易获得,但是我该如何应用第一个?听起来可能很奇怪,但是什么时候知道我想针对观察到的变量运行因子模型?

48

根据我的回应:

PCA后跟旋转(例如varimax)是否仍然是PCA?

主成分分析(PCA)和公共因子分析(CFA)是不同的方法。通常,它们会产生相似的结果,并且PCA用作SPSS Factor Analysis例程中的默认提取方法。毫无疑问,这导致对两者之间的区别产生了很大的困惑。

最重要的是,从概念上讲,这是两个不同的模型。在PCA中,这些分量是使总方差最大化的实际正交线性组合。在FA中,因子是线性组合,可最大化方差的共享部分(位于“潜在构造”中)。这就是为什么FA通常被称为“公因子分析”的原因。FA使用各种优化例程,其结果与PCA不同,它取决于所使用的优化例程以及这些例程的起点。只是没有单一的独特解决方案。

在R中,factanal()函数为CFA提供了最大似然提取。因此,您不应期望它会重现基于PCA提取的SPSS结果。这根本不是同一模型或逻辑。我不确定如果使用SPSS的最大似然提取,是否会得到相同的结果,因为它们可能未使用相同的算法。

但是,无论R的好坏,您都可以复制SPSS作为默认设置提供的混合“因子分析”。这是R中的过程。使用此代码,我可以使用此数据集重现SPSS主成分“因子分析”结果。(除不确定的符号外)。然后,也可以使用R的任何可用旋转方法旋转该结果。

data(attitude)
# Compute eigenvalues and eigenvectors of the correlation matrix.
pfa.eigen <- eigen(cor(attitude))
# Print and note that eigenvalues are those produced by SPSS.
# Also note that SPSS will extract 2 components as eigenvalues > 1 = 2.
pfa.eigen$values
# Set a value for the number of factors (for clarity)
kFactors <- 2
# Extract and transform two components.
pfa.eigen$vectors[, seq_len(kFactors)]  %*% 
  diag(sqrt(pfa.eigen$values[seq_len(kFactors)]), kFactors, kFactors)

5
请注意,principal(attitude, 2, rotate="none")从该psych包中将获得相同的结果,并且不建议使用Kayser规则(ev> 1)测试维数(它高估了因子数量)。
chl

5
是的,我知道心理主管对此做了总结。我的目的是展示使用主成分提取方法时SPSS“因素分析”的作用。我同意特征值规则是选择因子数量的一种不好的方法。但是,这正是SPSS默认情况下所做的,而这正是我所演示的。
Brett 2010年

1
factanal()提供EFA而非CFA。同样,根据我的经验,SPSS的最大似然提取应该给出与factanal()没有倾斜旋转时相同的结果。
pe-pe-rry 2014年

2
以下是什么意思:“在FA中,因子是线性组合,可最大化方差的共享部分(作为“潜在构成”的基础)。'?
推测2015年

另请注意,CFA可能代表确认性FA(而不是解释性FA),而不是通用FA
理查德·哈迪

33

您的第一个观点是正确的,尽管在FA中,您通常会同时使用(唯一性和社区性)。PCA和FA之间的选择是心理计量学家之间长期存在的争论。不过,我不太理解您的观点。可以使用主轴旋转,无论使用哪种方法来构造潜在因子。实际上,大多数情况下是出于实际原因(最简单的解释,最简单的评分规则或因子评分的解释等)使用VARIMAX旋转(正交旋转,考虑不相关的因素),尽管倾斜旋转(例如PROMAX) )可能会更好地反映现实情况(潜在结构经常相互关联),至少在FA的传统中,您假设潜在构造确实是变量之间观察到的相互关系的核心。关键是PCA跟随VARIMAX旋转在某种程度上扭曲了“数据分析”传统中原始变量的线性组合的解释(请参见Michel Tenenhaus的著作)。从心理学的角度来看,FA模型是首选,因为它们明确考虑了测量误差,而PCA对此并不在意。简而言之,使用PCA可以将每个组件(因子)表示为变量的线性组合,而在FA中,这些变量是表示为因子(如您所说的社区和唯一性组件)的线性组合的变量。关键是PCA跟随VARIMAX旋转在某种程度上扭曲了“数据分析”传统中原始变量的线性组合的解释(请参见Michel Tenenhaus的著作)。从心理学的角度来看,FA模型是首选,因为它们明确考虑了测量误差,而PCA对此并不在意。简而言之,使用PCA可以将每个组件(因子)表示为变量的线性组合,而在FA中,这些变量是表示为因子(如您所说的社区和唯一性组件)的线性组合的变量。关键是PCA跟随VARIMAX旋转在某种程度上扭曲了“数据分析”传统中原始变量的线性组合的解释(请参见Michel Tenenhaus的著作)。从心理学的角度来看,FA模型是首选,因为它们明确考虑了测量误差,而PCA对此并不在意。简而言之,使用PCA可以将每个组件(因子)表示为变量的线性组合,而在FA中,这些变量是表示为因子(如您所说的社区和唯一性组件)的线性组合的变量。FA模型是首选,因为它们明确考虑了测量误差,而PCA对此并不关心。简而言之,使用PCA可以将每个组件(因子)表示为变量的线性组合,而在FA中,这些变量是表示为因子(如您所说的社区和唯一性组件)的线性组合的变量。FA模型是首选,因为它们明确考虑了测量误差,而PCA对此并不关心。简而言之,使用PCA可以将每个组件(因子)表示为变量的线性组合,而在FA中,这些变量是表示为因子(如您所说的社区和唯一性组件)的线性组合的变量。

我建议您首先阅读有关此主题的以下讨论:


7
只是说,由于这个问题已与另一个问题stats.stackexchange.com/questions/3369/…合并,我的回答可能看起来有点偏离主题。(我最初回答的是后者)。
chl

6
啊,我想知道您为什么在这个问题上与这个问题相关联... :)
布兰登·贝特尔森

1
PCA followed by VARIMAX rotation somewhat distorts the interpretation of the linear combinations of the original variables in the "data analysis" tradition。Chl,您能说明一下吗?那很有意思。
ttnphns 2014年

32

网络上有许多建议的定义。这是有关统计学习的在线词汇表中的一个:

主成分分析

构造新功能,这些新功能是数据集的主要组成部分。主成分是由输入要素的线性组合构造的最大方差的随机变量。等效地,它们是在主成分轴上的投影,这是使到数据集中每个点的平均平方距离最小的线。为了确保唯一性,所有主成分轴必须正交。PCA是在输入和输出均存在高斯噪声的情况下用于线性回归的最大似然技术。在某些情况下,PCA对应于傅立叶变换,例如JPEG图像压缩中使用的DCT。参见Bishop的“用于识别的特征脸”(Turk&Pentland,《认知神经科学》第3卷第1期,1991年)。

因子分析

明确基于最大似然的PCA的概括。像PCA一样,每个数据点都假定是通过对子空间中的一个点进行采样,然后用全维高斯噪声对其进行扰动而产生的。区别在于因子分析允许噪声具有任意对角协方差矩阵,而PCA则假定噪声是球形的。除了估计子空间外,因子分析还估计噪声协方差矩阵。请参见“因子分析器混合物的EM算法”。PCA的维数选择。


2
因子分析描述获得要点(对角协方差),但历史上并未将其发展为PCA的概括。
推测

1
因此,基本上,在PCA中一个svd是协方差矩阵,在FA中是相关矩阵?在方法从其应用领域建立了很多术语之后,我总是很难找到实际的数学运算。(题外话:我花了整整一个下午的时间来了解路径建模,直到我发现70年代的一(1)篇论文阐明了其背后的矩阵方程式。)
Mark van der Loo

28

该主题的最高答案表明,PCA更像是降维技术,而FA更像是潜在变量技术。这严格地说是正确的。但是,这里的许多答案以及其他地方的许多治疗方法将PCA和FA视为两种完全不同的方法,尽管目标,方法和结果相反,但两者却相异。我不同意; 我相信,当PCA被认为是一种潜在的可变技术时,它非常接近FA,因此最好将它们视为非常相似的方法。

我在以下主题中提供了PCA和FA之间的异同的自己的描述:是否有充分的理由使用PCA而不是EFA?另外,PCA可以代替因子分析吗?在这里,我认为出于简单的数学原因,仅考虑变量的数量不是很小(可能超过12个),PCA和FA的结果可以非常相似。有关数学细节和蒙特卡洛模拟,请参见链接线程中的[long!]答案。有关我的论点的更为简洁的版本,请参见此处: PCA和FA在哪些条件下会产生相似的结果?

在这里,我想举例说明。我将分析UCI机器学习存储库中的wine数据集。这是一个相当知名的数据集,其中种来自三种不同葡萄的葡萄酒,用变量描述。这是相关矩阵的样子: p = 13n=178p=13

葡萄酒数据集的相关矩阵

我同时进行了PCA和FA分析,并在下图上将数据的2D投影显示为两个图的双线图(左侧为PCA,右侧为FA)。水平和垂直轴显示第一和第二成分/因子得分。点中的每个点对应一种葡萄酒,并且点根据组进行着色(请参见图例):n=178

葡萄酒数据集的PCA和FA分析

黑色线显示了第一个和第二个组分/因子在原始变量上的负荷。它们等于每个原始变量与两个组件/因子之间的相关性。当然,相关性不能超过,因此所有加载线都包含在“相关性圆”内,表示最大可能的相关性。所有负载和圆都按比例缩放倍,否则它们将太小而看不到(因此圆的半径为而不是)。1 3 3 1p=131331

请注意,PCA和FA之间几乎没有任何区别!到处都有很小的偏差,但是总体情况几乎是相同的,并且所有载荷都非常相似并且指向相同的方向。这正是理论所期望的,也就不足为奇了。不过,观察仍然很有启发性。

PS。有关同一数据集的更漂亮的PCA双图,请参见@vqv的答案

PPS。PCA计算是标准的,FA计算可能需要注释。通过“迭代主因子”算法计算因子负荷,直到收敛(9次迭代)为止,并且使用部分相关性初始化社区。一旦载荷收敛,就使用Bartlett方法计算得分。这产生了标准化的分数;我通过各自的因子方差(由载荷长度确定)按比例放大。


1
您使用哪个软件来创建PCA和因子分析图?
rnso 2015年

1
我用的是Matlab。我当时想将代码粘贴到我的答案中(通常是我的习惯),但是不想让这个繁忙的线程更加混乱。但是想一想,我应该将其发布在某个外部网站上,并在此处保留链接。我去做。
变形虫

2
的确,有时PCA和FA很少(甚至很少)不会给出相似的结果(负荷),因此,当广泛地定义因素分析时,PCA 可以被视为 FA的一种特殊情况。从理论上讲,FA(严格意义上的)和PCA还是有很大的不同。
ttnphns 2015年

2
(续)因素是超越性的潜在特征;公关 成分是内在的衍生。尽管您的两个加载图在实践上看起来相似,但从理论上讲它们是根本不同的。左侧的组件平面是作为变量的子空间生成的,这些变量将自身投影到该平面上。因子平面的生成空间不同于变量空间,因此它们将自己投影在右侧图的“外来”空间上。
ttnphns

3
(续)但是正确的图片(FA)实际上不是真正的biplot,而是两个不同散点图,不同空间的叠加:加载图(其中轴是真实因子)和对象得分图(其中轴是坐标)。估算的因素得分)。真实因子空间超出了“父母”变量空间,但是因子分数空间是其子空间。您叠加了两对异质轴,但是它们带有相同的标签(两对都带有“ factor1”和“ factor2”),这种情况极易产生误导,并说服我们认为这是一个真正的双图,就像左图一样。
ttnphns

25

在散点图的帮助下,以合理的步骤对PCA与因子分析进行了基本而艰苦的解释。(我感谢@amoeba,在他对问题的评论中,他鼓励我发布答案以代替与其他地方的链接。因此,这是一个闲暇的较晚答复。)

PCA作为变量汇总(特征提取)

希望您已经对PCA有所了解。现在要复兴。

在此处输入图片说明

V1V2a

P1=a11V1+a12V2

P2=a21V1+a22V2

这些系数是旋转的余弦(=方向余弦,主方向),包括所谓的特征向量,而协方差矩阵的特征值是主成分方差。在PCA中,我们通常会丢弃较弱的最后一个组件:因此,我们通过很少的第一个提取的组件来汇总数据,而几乎没有信息丢失。

Covariances
        V1       V2 
V1  1.07652   .73915 
V2   .73915   .95534 

----PCA---- 
Eigenvalues      % 
P1  1.75756   86.500 
P2   .27430   13.500 

Eigenvectors
        P1       P2
V1   .73543  -.67761 
V2   .67761   .73543

利用我们绘制的数据,P1 = .73543*V1 + .67761*V2我们丢弃了P1组件值(分数)和P2组件。P1的方差为1.75756,是协方差矩阵的第一特征值,因此P1解释86.5%方差等于(1.07652+.95534) = (1.75756+.27430)

PCA作为变量预测​​(“潜在”功能)

P1 V1V2

V1=a11P1+E1

V2=a12P1+E2

aE

在此处输入图片说明

V1^=a11P1V2^=a12P1E1=V1V1^E2=V2V2^

现在,PCA的特征是,如果我们为数据中的每个点计算E1和E2并绘制这些坐标-即仅对错误进行散点图绘制,则云“错误数据”将与丢弃的分量P2一致。它确实做到了:云被绘制在与米色云相同的图片上-并且您看到它实际上形成了与P2组件分数平铺的轴P2(图1)。

怪不得,你可能会说。如此明显:在PCA中,舍弃的初级成分正是在预测误差E中精确分解的模型,该模型通过潜在特征P1解释(恢复)原始变量V。错误E一起仅构成了遗漏的部分。这是因素分析开始与PCA不同的地方。

通用FA(潜​​在功能)的概念

形式上,通过提取的潜在特征来预测清单变量的模型在FA中与在PCA中是相同的;[式3 ]:

V1=a1F+E1

V2=a2F+E2

其中F是从数据中提取并替换等式2中的P1 的潜在公因子。该模型的不同之处在于,FA中与PCA不同,要求误差变量(E1和E2)彼此不相关

aaaaaaa

OK,回到线程。E1和E2在因子分析中不相关;因此,它们应该形成一团错误,要么是圆形的,要么是椭圆的,但不是对角线的。在PCA中,它们的云形成与对角线P2一致的直线。这两种想法都在图片中得到了展示:

在此处输入图片说明

请注意,FA中的误差是圆形的(不是对角伸长的)云。FA中的因素(潜伏)的取向有些不同,即,不正确的是PCA中的第一个主要成分是“潜伏”。在图片上,因子线有点奇怪地呈圆锥形-最终为什么会变得很清楚。

PCA和FA之间的区别是什么意思?变量相互关联,可以在数据云的对角椭圆形中看到。P1撇取了最大方差,因此椭圆与P1共同指向。因此,P1自己解释了相关性;但是它没有充分解释现有的相关量;它试图解释数据点的变化,而不是相关性。实际上,它过度考虑了相关性,其结果是出现了对角线,相关的误差云,从而弥补了过多的影响。 P1 不能全面解释相关性/协变的强度。F因子可以一个人做 能够做到的条件正是错误被迫不相关的地方。由于误差云是圆形的,因此在提取因子之后,没有相关性(正或负)保留下来,因此这是撇去了所有相关性的因素。

作为维,PCA解释了方差,但不精确地解释了相关性。FA解释了相关性,但无法(通过共同因素)考虑到PCA可以做到的尽可能多的数据变化。FA中的因素说明了变异性的那部分,即净相关部分,即社区;因此,因子可以解释为隐藏在输入变量“中”或“后”以使其关联的真实但不可观察的力/特征/特性。因为他们在数学上很好地解释了相关性。主要成分(鲜为人知的成分)在数学上不能很好地解释它,因此只能在某种程度上暂时地称为“潜在特征”(或此类)

如果分析是基于协方差矩阵(如示例所示)而不是基于相关矩阵,那么载荷的乘积就是解释(恢复)相关性或以协方差形式的相关性的原因。我对数据进行的因子分析得出了a_1=.87352, a_2=.84528,所以乘积a_1*a_2 = .73837几乎等于协方差.73915。另一方面,PCA的负载为a1_1=.97497, a1_2=.89832,因此被a1_1*a1_2 = .87584高估了.73915

在解释了PCA和FA之间的主要理论区别之后,让我们回到我们的数据中来举例说明这个想法。

FA:近似解(因子得分)

下面是散点图,显示了分析的结果,我们将其暂时称为“次优因子分析”,图3

A technical detail (you may skip): PAF method used for factor extraction.
Factor scores computed by Regression method.
Variance of the factor scores on the plot was scaled to the true
factor variance (sum of squared loadings).

在此处输入图片说明

参见PCA 图2的变化。错误的米色云不是圆的,它是对角椭圆形,但显然比PCA中出现的细对角线要胖得多。还请注意,错误连接器(针对某些点显示)不再平行(在PCA中,根据定义,它们与P2平行)。此外,例如,如果您查看在因子F轴上对称镜像的“ F”和“ E”点,您会意外地发现它们对应的因子得分是完全不同的值。换句话说,因子得分不仅是线性变换的主成分得分:因子F的发现方式与P1不同。如果在同一图4上一起显示,它们的轴将不完全重合:

在此处输入图片说明

除了它们的定向有所不同之外,F(与分数平铺)更短,即,与P1相比,F占较小的方差。如前所述,因子仅考虑导致V1 V2相关性的可变性,即总方差的一部分,足以使变量从原始协方差0变为事实协方差.73915

FA:最佳解决方案(真实因素)

最佳因子解决方案是误差为圆形或非对角椭圆云时:E1和E2 完全不相关。因子分析实际上返回了这样的最佳解决方案。我没有在像上面那样的简单散点图中显示它。我为什么呢 -毕竟这将是最有趣的事情。

原因是,即使采用3D图,也无法在散点图上充分显示。从理论上讲,这是一个很有趣的观点。为了使E1和E2完全不相关,似乎所有这三个变量F,E1,E2 都不必位于 V1,V2定义的空间(平面)中。和三个必须是互不相关的。我相信可以在5D中绘制这样的散点图(也许在4D中使用一些with头),但是a,我们生活在3D世界中。因子F必须与E1和E2都不相关(尽管它们两者也都不相关),因为应该认为F是观测数据中唯一(干净)且完全相关的来源。因子分析分裂总方差p将变量输入两个不相关(不重叠)的部分:社区部分(- m维,此处是m公共因子)和唯一性部分(- p维,其中错误是唯一的因子,彼此不相关)。

因此,请原谅未在此处显示散点图上数据的真实因素。可以通过“主题空间”中的向量将其充分可视化,如此处所示,而无需显示数据点。

上面,在“通用FA(潜​​在特征)的概念”部分中,我将因子(轴F)显示为楔形,以警告真正的因子轴不在平面V1 V2上。这意味着-与主分量P1相反,因子F作为轴不是在其空间中旋转轴V1或V2,并且F作为变量不是变量V1和V2 的线性组合。因此,对F进行建模(从变量V1 v2中提取),就好像是一个独立的外部变量,而不是它们的衍生。像方程等式1从PCA的开始位置,是不适用的,以计算真实的因子分析(最优的)因素,而正式同构方程等式2等式3对两个分析均有效。也就是说,在PCA中,变量会生成组件,而组件会向后预测变量;在FA 因子(一个或多个)产生/预测的变量,而不是备份 -共同因子模型在概念假定如此,即使在技术上因子从所观察到的变量萃取。

不仅真实因子不是清单变量的函数,而且真实因子的没有唯一定义。换句话说,它们是完全未知的。这完全是由于我们位于过多的5D分析空间中,而不是位于数据的原始2D空间中。对于我们而言,只有真正的因子值(称为因子得分)的良好近似值(存在许多方法)。因子分别位于平面V1 V2,像主成分得分是,它们被计算为V1,V2,过的线性函数,它是它们我在“ FA:近似解(因子得分)”部分中进行了绘制。主成分分数是真实的成分值;因子得分仅是不确定的真实因子值的合理近似值。

FA:程序综述

a

因此,我在“ FA:近似解(因子得分)”部分中显示的“因子解”实际上是基于最佳负载,即基于真实因子。但从命运上看,分数并非最佳。计算分数是观察到的变量的线性函数,就像组件分数一样,因此可以在散点图上对它们进行比较,而我是在教学上追求的,以显示出从PCA构想向FA构想的逐步转变。

当在“ 因子空间”中用相同的因子因子负荷绘图时,必须警惕,要意识到负荷与真实因素有关,而分数与替代因素有关(请参阅本主题中对此答案的评论)。

因子(负荷)的旋转有助于解释潜在特征。如果将PCA用作因子分析(即,将PCA作为变量预测​​),则也可以在PCA中完成载荷的旋转。随着变量数量的增加,PCA趋向于与FA融合(请参见有关两种方法之间在实践和概念上的相似之处和区别的非常丰富的文章)。在此答案的结尾,请参阅我的PCA和FA之间的差异列表。在可以找到虹膜数据集上PCA与FA的逐步计算。在此主题之外,有很多很好的链接可以链接到其他参与者关于该主题的答案。抱歉,在当前答案中只使用了其中的几个。

另请参见此处的 PCA和FA之间差异的项目符号列表。


1
+1。写下来真是太好了,这个主题肯定没有您的回答。我在阅读之前就投票了(这是我很少做的),并且当然喜欢后来的阅读。我可能会在以后发表更多评论,但现在只有一个小话题:您多次写道,在FA中,错误云应该是“圆形”的。但实际上,它很可能是椭圆形的(因为V1和V2的唯一性可以具有不同的方差),所以它必须具有零相关性。我想您不想让读者对此细节感到困惑。
变形虫

1
V1=a1F+E1V2=a2F+E2(E1,E2)=N(0,I)-现在使用这些关系生成V1和V2的样本。一旦生成了V1和V2,如果我们要执行最佳FA,就应该获得近似准确的(E1,E2)估计值,它将形成一个椭圆云。而且,现在可以将F,E1,E2表示在与V1和V2相同的平面中。
卡莎

@kasa,您的评论是我的回答还是变形虫的评论?如果您的意见与我的主要主张相反,即FA中三个潜在变量不在原始空间中,您可以显示它,为什么不给出显示它的答案呢?但是请注意,在最佳FA中,误差是完全不相关的,而不是可以将其想象为来自正常的不相关人群。
ttnphns

@ttnphns:很抱歉给您带来困惑,我怀疑您的主要主张。我将在几天后尝试将其显示为答案。谢谢!
卡萨

21

因子分析和主成分分析之间的区别是:

•在因子分析中,有一个结构化模型和一些假设。在这方面,这是一种统计技术,不适用于纯数学变换的主成分分析。

•主成分分析的目的是解释方差,而因子分析则解释变量之间的协方差。

造成两者混淆的最大原因之一与以下事实有关:因子分析中的一种因子提取方法称为“主成分法”。但是,使用PCA是一回事,而使用FA 中主要组件方法则是另一回事。名称可能相似,但有显着差异。前者是一种独立的分析方法,而后者仅是提取因子的工具。


13

对我来说(我希望这是有用的),因子分析比PCA有用得多。

最近,我很高兴通过因子分析来分析量表。这种量表(尽管已在行业中广泛使用)是使用PCA开发的,据我所知从未进行过因素分析。

当我进行因子分析(主轴)时,我发现其中三个项目的族群小于30%,这意味着没有分析超过70%的项目方差。PCA只是将数据转换为新的组合,并不关心社区。我的结论是,从心理计量学的角度来看,该量表不是一个很好的量表,我已经用其他样本证实了这一点。

本质上,如果要预测使用因素,请使用PCA,而如果要了解潜在因素,请使用因素分析。


11

扩展@StatisticsDocConsulting的答案:EFA和PCA之间的负载差异很小,变量很少。这是一个模拟函数,用于在R中进行演示:

simtestit=function(Sample.Size=1000,n.Variables=3,n.Factors=1,Iterations=100)
{require(psych);X=list();x=matrix(NA,nrow=Sample.Size,ncol=n.Variables)
for(i in 1:Iterations){for(i in 1:n.Variables){x[,i]=rnorm(Sample.Size)}
X$PCA=append(X$PCA,mean(abs(principal(x,n.Factors)$loadings[,1])))
X$EFA=append(X$EFA,mean(abs(factanal(x,n.Factors)$loadings[,1])))};X}

IterationsSample.Size=1000Iterationsprincipal()factanal()

使用此代码,我模拟了3-100个变量的样本,每个样本进行500次迭代以生成数据:

Y=data.frame(n.Variables=3:100,Mean.PCA.Loading=rep(NA,98),Mean.EFA.Loading=rep(NA,98))
for(i in 3:100)
{X=simtestit(n.Variables=i,Iterations=500);Y[i-2,2]=mean(X$PCA);Y[i-2,3]=mean(X$EFA)}

...对于平均负荷(跨变量和迭代)对变量数量的敏感度图:

.067


10

可以将PCA视为FA,其中对于所有变量,假定社区数等于1。实际上,这意味着由于社区数量低而FA中因子负载较低的项目在PCA中具有较高的负载。如果分析的主要目的是减少物品的长度并清理一堆负载低或模棱两可的物品,或者识别在物品库中没有很好表示的概念,则这不是理想的功能。


10

引用自一本非常好的教科书(Brown,2006年,第22页,增加了重点)。
PCA =主成分分析
EFA =探索性因素分析
CFA =确认性因素分析

尽管与全民教育有关,但主成分分析(PCA)经常被误分类为公因子分析的一种估算方法。与上一段中讨论的估计器(ML,PF)不同,PCA依赖于一组不基于公因子模型的定量方法。PCA不会区分常见差异和唯一差异。相反,PCA旨在说明观察到的度量中的差异,而不是解释它们之间的相关性。因此,PCA更适合用作数据缩减技术,以将更多的度量减少为更小,更易于管理的复合变量,以供后续分析使用。但是,一些方法学家认为,PCA是EFA的合理替代方案,甚至是其替代品,鉴于PCA具有多个理想的统计属性(例如,计算简单,不易受不正确的解决方案影响,通常会产生与EFA相似的结果,PCA能够计算出参与者对主要成分的评分,而不确定性的性质) EFA使这种计算复杂化)。尽管关于这个问题的辩论仍在继续,Fabrigar等人。(1999年)提供了几个反对PCA在因素分析中的位置的观点。这些作者强调了EFA和PCA产生不同结果的情况。例如,当社区人口较少时,或者只有很少的指标可以反映给定因素时(参见Widaman,1993)。通常会产生类似于EFA的结果,即PCA计算参与者在主成分上的分数的能力,而EFA的不确定性质会使这种计算复杂化。尽管关于这个问题的辩论仍在继续,Fabrigar等人。(1999年)提供了几个反对PCA在因素分析中的位置的观点。这些作者强调了EFA和PCA产生不同结果的情况。例如,当社区人数较少时,或者只有很少的指标可以反映给定因素时(参见Widaman,1993)。通常会产生类似于EFA的结果,即PCA计算参与者在主成分上的分数的能力,而EFA的不确定性质会使这种计算复杂化。尽管关于这个问题的辩论仍在继续,Fabrigar等人。(1999年)提供了几个反对PCA在因素分析中的位置的观点。这些作者强调了EFA和PCA产生不同结果的情况。例如,当社区人数较少时,或者只有很少的指标可以反映给定因素时(参见Widaman,1993)。(1999年)提供了几个反对PCA在因素分析中的位置的观点。这些作者强调了EFA和PCA产生不同结果的情况。例如,当社区人数较少时,或者只有很少的指标可以反映给定因素时(参见Widaman,1993)。(1999年)提供了几个反对PCA在因素分析中的位置的观点。这些作者强调了EFA和PCA产生不同结果的情况。例如,当社区人数较少时,或者只有很少的指标可以反映给定因素时(参见Widaman,1993)。无论如何,如果分析的首要原理和经验目标与公因子模型一致,那么进行PCA在概念和数学上都是不一致的。也就是说,如果所陈述的目标是再现一组潜伏数较少的指标之间的相互关系,则EFA更合适,这是要认识到观测到的措施中存在测量误差。Floyd和Widaman(1995)提出了一个相关的观点,即基于EFA的估计比从PCA获得的估计更可能推广到CFA,因为与PCA不同,EFA和CFA基于公共因子模型。鉴于EFA在规模开发和结构验证中经常被用作CFA的前身,因此这是一个值得注意的考虑因素。PCA和EFA之间的计算差异的详细说明可以在多变量和因子分析教科书中找到(例如,Tabachnick&Fidell,2001)。

布朗(TA)(2006)。应用研究的验证性因素分析。纽约:吉尔福德出版社。


6

Tipping和Bischop在一篇论文中讨论了概率PCA(PPCA)与因子分析之间的紧密关系。PPCA比经典的PCA更接近FA。常见的模型是

y=μ+Wx+ϵ

WRp,dxN(0,I)ϵN(0,Ψ)

  • Ψ
  • Ψ=σ2I

Michael E. Tipping,Christopher M. Bishop(1999)。概率主成分分析,《皇家统计学会杂志》,第61卷,第3期,第611–622页


2
+1。是。我认为了解PPCA是了解PCA和FA之间关系的必要条件。但是您可以通过讨论PCA / PPCA关系来改善答案。
amoeba

3

这些响应都不是完美的。FA或PCA都有一些变体。我们必须明确指出要比较哪些变体。我将比较最大似然因子分析和Hotelling的PCA。前者假设潜变量服从正态分布,但PCA没有这样的假设。这导致了差异,例如解决方案,组件的嵌套,解决方案的唯一性,优化算法。


1
我想知道您是否可以对此稍作扩展-您已经说过最后一句话中存在差异,但没有提供太多有关这些差异可能是什么或这些差异可能以何种方式重要的信息?
银鱼

1
选择两种最遥远的方法并声称它们确实不同-就像您所做的那样-也不是完美的逻辑。可能应该找到并报告这两者之间的相似之处。或者,可以选择最相似的方法(例如普通PCA与PAF),并报告它们的不同之处。
ttnphns

1
Hotelling的PCA确实假设潜在的高斯人。
猜想

1

这篇文章有很多不错的答案,但是最近,我遇到了另一个区别。

聚类是PCA和FA产生不同结果的一种应用。当数据中有许多功能时,可能会尝试找到最主要的PC方向并将数据投影到这些PC上,然后继续进行群集。通常,这会扰乱数据中的固有群集-这是一个行之有效的结果。研究人员建议继续使用子空间聚类方法,该方法在模型中寻找低维潜在因素。

只是为了说明这种差异,请考虑CrabsR中的数据集。Crabs数据集有200行8列,描述了该物种的两种颜色形式和性别的50种螃蟹的5种形态学测量-基本上有4种(2x2)不同种类的螃蟹。

library(MASS)
data(crabs)
lbl <- rep(1:4,each=50)
pc <- princomp(crabs[,4:8])
plot(pc) # produce the scree plot
X <- as.matrix(crabs[,4:8]) %*% pc$loadings
library(mclust)
res_12 <- Mclust(X[,1:2],G=4)
plot(res_12)


res_23 <- Mclust(X[,2:3],G=4)
plot(res_23)

使用PC1和PC2进行集群: 在此处输入图片说明

使用PC2和PC3进行集群: 在此处输入图片说明

#using PC1 and PC2:
     1  2  3  4
  1 12 46 24  5
  2 36  0  2  0
  3  2  1 24  0
  4  0  3  0 45

#using PC2 and PC3:
    1  2  3  4
  1 36  0  0  0
  2 13 48  0  0
  3  0  1  0 48
  4  1  1 50  2

从上面的图中可以看出,PC2和PC3比PC1具有更多的区分信息。

如果尝试使用混合因子分析仪使用潜在因子进行聚类,则与使用前两台PC相比,我们看到了更好的结果。

mfa_model <- mfa(y, g = 4, q = 2)
  |............................................................| 100%
table(mfa_model$clust,c(rep(1,50),rep(2,50),rep(3,50),rep(4,50)))

     1  2  3  4
  1  0  0  0 45
  2 16 50  0  0
  3 34  0  0  0
  4  0  0 50  5

我必须说我怀疑这个答案是否真的回答了这个问题。答案是关于PCA或FA之后的聚类分析,而不是关于PCA和FA本身。但是即使在这方面,答案还是模糊的或未完成的。您显示的差异如何解释?
ttnphns

@ttnphns我同意答案是关于聚类分析的。但是,OP还要求PCA / FA提供一种真实的场景,其中一个需要在另一个之上使用。通常,PCA或FA永远都不是最终目标-例如,在社会科学中,最终目标是将主题划分为不同的组/组。我的回答解决了这种情况。如果您认为我的答案可以改善,请随时指出。
卡莎

我认为,如果您解释自己的发现,那么您的答案将变得非常相关。您声称PCA和FA之间的差异是这两种方法的内在差异(只有在聚类中它们才变得明显)。我认为您应该显示或至少推测出这些差异是如何或为什么从理论上由方法模型的差异引起的。
ttnphns
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.