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


63

我试图重现从SPSS一些研究(使用PCA)在R.根据我的经验,principal() 功能从包psych是差一点的唯一功能(或者,如果我没记错的话,死的)来匹配输出。为了匹配与SPSS中相同的结果,我必须使用parameter principal(..., rotate = "varimax")。我见过一些论文谈论它们如何进行PCA,但是基于SPSS的输出和旋转的使用,听起来更像是因子分析。

问题:即使旋转(使用varimax),PCA还是PCA吗?我的印象是,这实际上可能是因子分析……如果不是这样,我遗漏了哪些细节?


4
从技术上讲,轮换后您拥有的不再是主要组件。
晚宴

2
旋转本身不会改变它。轮换与否,分析就是它。在“因子分析”的狭义定义中,PCA 不是 FA,而在“因子分析” 的广义定义中,PCA FA。stats.stackexchange.com/a/94104/3277
ttnphns 2014年

1
你好@罗马!我一直在审查这个旧主题,而您将Brett的回答标记为已接受,我感到很惊讶。您是在问PCA +轮换还是PCA,还是FA?布雷特的答案只字未提!它也没有提及principal您所要求的功能。如果他的回答确实回答了您的问题,那么也许您的问题表达不充分;您会考虑编辑吗?否则,我发现博士学位的答案更接近于实际回答您的问题。请注意,您可以随时更改接受的答案。
变形虫2015年

1
我应该补充一点,我正在为您的问题提供一个新的,更详细的答案,所以我很想知道您是否实际上仍然对该主题感兴趣。毕竟,已经过去了四年了……
amoeba 2015年

3
不幸的是,@ amoeba未来我无法回答为什么我接受了这个答案。4.5年后回顾了这头老兽,我意识到没有一个答案能接近。mbq开始很有希望,但是没有一个解释。但是无论如何,这个话题非常令人困惑,可能是由于流行的社会科学统计软件中的术语错误,我不会用四个字母的缩写来命名。请发布答案并ping通我,如果我发现它更接近回答我的问题,我会接受。
RomanLuštrik'15

Answers:


53

这个问题主要与PCA / FA的定义有关,因此意见可能会有所不同。我的观点是,不应将PCA + varimax称为PCA或FA,而应将bur明确地称为“旋转varimax的PCA”。

我应该补充一点,这是一个令人困惑的话题。在这个答案中,我想解释一下轮换实际上什么;这将需要一些数学。随便的读者可以直接跳到插图。只有这样,我们才能讨论PCA +旋转是否应该被称为“ PCA”。

一个参考是Jolliffe的书“主成分分析”的第11.1节“主成分的旋转”,但是我发现它可能更清晰。


令为一个数据矩阵,我们假设它是居中的。PCA量(在这里看到我的答案)的奇异值分解:。关于此分解,有两个等效但互补的视图:一个更加PCA风格的“投影”视图和一个更加FA风格的“潜在变量”视图。 Ñ × p X = û 小号VXn×pX=USV

根据PCA样式的观点,我们发现了一堆正交方向(这些是协方差矩阵的特征向量,也称为“主要方向”或“轴”)和“主要成分”(也称为主成分“得分”)是这些方向上的数据投影。主成分是不相关的,第一个成分具有最大可能的方差,等等。我们可以这样写:Ù 小号X = û 小号V = 比分主方向VUS

X=USV=ScoresPrincipal directions.

根据FA风格的观点,我们发现了一些不相关的单位方差“潜在因素”,这些因素通过“负荷”产生了观察到的变量。实际上,是标准化的主成分(不相关且具有单位方差),如果我们将载荷定义为,然后 (请注意。)这两个视图是等效的。请注意,加载是按各自特征值缩放的特征向量(是协方差矩阵的特征值)。L=VS/U~=n1U X=L=VS/n1小号=小号小号/

X=n1U(VS/n1)=U~L=Standardized scoresLoadings.
S=SS/n1

(我应该在括号中加上PCA FA; FA明确旨在寻找通过载荷线性映射到观测变量的潜在因子;它比PCA更加灵活,并且产生不同的载荷。这就是为什么我更喜欢将其称为尽管有些人将其视为FA方法之一,但它不是FA,而是“ PCA上的FA样式视图”。)

现在,轮换是做什么的?例如正交旋转,例如varimax。首先,它仅考虑分量,即:然后,它取一个平方正交矩阵,并将插入此分解中:其中旋转载荷由Xù ķ 小号 ķ V ķ = Ü ķ 大号ķķ × ķ Ť Ť Ť = Xù ķ 小号 ķ V ķ = û ķ Ť Ť小号 ķ V ķ = ü ř ö 大号ř Ò k<p

XUkSkVk=U~kLk.
k×kTTT=I
XUkSkVk=UkTTSkVk=U~rotLrot,
ü ř ö =Ü ķ Ť Ť 大号ř ö Lrot=LkT,旋转标准分数由。(这样做的目的是找到,以使变得尽可能接近稀疏,以便于解释。)U~rot=U~kTTLrot

注意旋转的是:(1)标准化分数,(2)加载。但不是原始分数,也不是主要方向!因此,旋转发生在潜在空间中,而不是原始空间中。这绝对至关重要。

从FA风格的角度来看,什么也没发生。(A)潜在因素仍然是不相关和标准化的。(B)它们仍然通过(旋转)载荷映射到观测变量。(C)每个组件/因子捕获的方差量由相应加载列的平方值之和得出。(D)在几何上,载荷仍然跨越的相同维子空间(该子空间由前 PCA特征向量跨越)。(E)的近似值和重构误差完全没有变化。(F)协方差矩阵仍然近似相等: k R p k XLrotkRpkX

ΣLkLk=LrotLrot.

但是PCA风格的观点实际上已经崩溃。旋转的负载不再与正交方向/轴相对应,即的列不正交!更糟糕的是,如果您[正交]将数据投影到旋转载荷指定的方向上,则会得到相关的投影(!),并且将无法恢复得分。[相反,要计算旋转后的标准分数,需要将数据矩阵与载荷的伪逆相乘。或者,您可以使用旋转矩阵简单地旋转原始的标准分数:RpLrotU~rot=X(Lrot+)U~rot=U~T ]此外,旋转的分量不会连续捕获最大方差量:方差会在各个分量之间重新分配(甚至尽管所有旋转分量捕获的方差与所有原始主分量捕获的正好一样大)。kk

这是一个例子。数据是沿主对角线拉伸的2D椭圆。第一个主方向是主对角线,第二个主方向与之正交。PCA加载向量(由特征值缩放的特征向量)以红色显示-指向两个方向,并且也被恒定的可见性因子拉伸。然后,我对荷载施加了的正交旋转。生成的加载向量以洋红色显示。请注意它们如何不正交(!)。30

PCA旋转

一个FA风格的直觉如下:想象一个“潜在空间”,其中的点填充一个小圆圈(来自具有单位方差的2D高斯)。然后,这些点的分布沿PCA载荷(红色)拉伸,成为我们在该图上看到的数据椭圆。但是,可以旋转相同的点分布,然后沿着旋转的PCA载荷(洋红色)拉伸它们,以变为相同的数据椭圆形

[实际上要看到载荷的正交旋转是旋转,所以需要查看PCA双线图。在那里,对应于原始变量的矢量/射线将简单地旋转。]


让我们总结一下。在正交旋转(例如varimax)之后,“旋转主”轴不正交,并且在它们上的正交投影没有意义。因此,应该宁愿放弃整个轴/投影的观点。仍然称其为PCA(这全是关于具有最大方差等的投影)会很奇怪。

从FA风格的角度来看,我们只是简单地旋转了(标准的和不相关的)潜在因素,这是有效的操作。FA中没有“投影”;相反,潜在因子通过载荷生成观察到的变量。此逻辑仍然保留。但是,我们从主要成分开始,这些成分实际上并不是因素(因为PCA与FA不同)。因此,也将其称为FA是很奇怪的。

我建议您谨慎地指定确切使用的过程:“ PCA后跟varimax旋转”,而不是争论一个“应该”应该称为PCA还是FA。


后记。可以考虑的替代旋转过程,其中插入之间和。这将旋转原始分数和特征向量(而不是标准化分数和负荷)。这种方法的最大问题是,经过这样的“轮换”之后,分数将不再不相关,这对于PCA来说是致命的。一个做到这一点,但它不是如何轮换通常被理解和应用。TTUSV


我没有完全理解图片周围的文字。您多次使用“加载”:PCA loading vectors... are shown in redstretched along the rotated PCA loadings (magenta)。我想知道如何在数据散点图上将“负载”或其“向量”显示为轴。您能说得更清楚吗?和“伸展”的想法?谢谢。
ttnphns

1
这可能与我们最近关于是否在变量空间中加载“跨越子空间”的长期讨论有关。在此答案中,我使用“加载向量”(或简称为“加载”)来指代加载矩阵的一列。在我的示例中,数据为2D,即有两个变量,因此加载为2D向量。因此,我可以将它们绘制在数据散点图上(我将它们按可见性的某个恒定因子进行缩放)。在PCA中,载荷当然是正交的(它们与特征向量成比例)。在varimax之后,它们不再存在。
变形虫

关于“拉伸”的段落(在图片的后面),我可能会更好地说明。我可以看到它不是很清楚。
变形虫

我认为,如果您打算绘制某些矢量(例如载荷)的正交性或非正交性,则应将它们绘制为箭头。还是我不明白你的意思?
ttnphns

1
我同意使用箭头会更好,为方便起见,我仅省略了“箭头”。我可能会重做此图以添加它们。另外,我画了指向两个方向的每个矢量,因为它们的符号无关紧要。
变形虫

29

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

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

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

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

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

+1确实有助于减轻此处SPSS vs R的困惑。仍然存在两个问题:与SPSS的混合方法相比,R prcompprincomp做什么?SPSS通过提取实际上在做什么?
hans0l0

啊,我可以在您的解决方案中添加如何计算PC1的分数:标准化zz <- scale(attitude,T,T)pc1 <- zz %*% solve(cor(attitude),lamba[,1])。其中lambda是@Brett Magills示例的最后一行的结果。
hans0l0

3
-1。尽管此答案中有很多有用的信息,但我发现它根本无法回答原始问题。最初的问题是,是否仍可以将PCA +旋转视为PCA(或更确切地说是FA)。您的答案甚至没有提及轮换!那怎么可能是答案呢?
变形虫2015年

1
这可能是有益的注意,共同因子分析是一样的验证性因素分析(CFA也),这是一个完全不同的过程。
理查德·博德

11

这个答案是以路径图的形式呈现@amoeba 在该线程上的深层(但有点复杂)答案中所推理的内容(95%的我对此表示同意)以及它们在我看来如何。

PCA以其适当的最小形式是相关数据向其不相关形式的特定正交旋转,其主要成分顺序掠过的总体可变性越来越少。如果只需要降维,我们通常不计算载荷以及载荷之后的载荷。我们对(原始)主成分得分感到满意。[请注意,图表上的符号并不完全遵循@amoeba的符号,-我坚持在其他一些答案中采用的内容。]P

在图表上,我举了两个变量的简单示例,p=2并使用了两个提取的主成分。尽管我们通常只保留很少的第一m<p部分,但对于我们正在考虑的理论问题(“ PCA是旋转的PCA还是什么?”),保留m还是全部保留都没有什么区别p;至少在我的特定答案中。

加载的技巧是将比例(幅度,可变性,惯性)从分量(原始分数)上拉到系数(特征向量)上,使前者成为裸露的“框架”(标准化pr组件分数),而后者为肉质(加载)。您可以通过以下两种方法同样出色地恢复数据:。但是,大量的工作开辟了前景:(i)解释组成部分;(ii)轮换;(iii)恢复变量的相关性/协方差。这都是由于事实,即数据的可变性已作为负载写入负载中。V P z A X = P V ' = P z A 'LVPzAX=PV=PzA

他们可以随时或在轮换之后将负载返回到数据点。如果我们设想正交旋转(例如varimax),则意味着我们希望组件在旋转完成后保持不相关。只有具有球形协方差矩阵的数据在正交旋转时才保留不相关性。瞧,标准化的主要成分(在机器学习中通常称为“ PCA白化数据”)是魔术数据(实际上与左侧成比例,即数据的行特征向量)。当我们寻找方差最大旋转矩阵P ž QPzPzQ为了便于解释载荷,数据点的纯正球形度和同一性(或“白度”)被动地等待着。

找到之后,通过的旋转等效于通过载荷矩阵的广义逆来进行标准化主成分评分的通常方法,这一次是旋转载荷(参见图表) )。像我们想要的那样,得到的最大方差旋转主成分是不相关的,加上它们与旋转前一样好地恢复了数据:。然后,我们可以给他们回自己的规模沉积(并相应地旋转) -到unstandardize他们:。P ž ř Ç ž X = P ž ' = c ^ ž ' - [Rř ÇQPzArCzX=PzA=CzArArC

我们应该意识到,“最大自变量旋转的主成分” 不再是成分:我用符号Cz,C代替Pz,P来强调它。它们只是“组件”。主要组件是唯一的,但是组件可以很多。除了变量之外,除了以外的旋转还将产生其他新变量,也称为分量,并且也不相关。C

也可以说,最大方差旋转(或以其他方式正交旋转)的主成分(现在只是“成分”)虽然不相关,但正交,并不意味着它们的载荷也仍然正交。列相互正交(特征向量也是正交的),但列则不是(另请参见此处的脚注)。V [RAVAr

最后- 用旋转原始主成分不是有用的动作。我们将获得一些具有问题含义的相关变量。似乎可以优化(以某种特定方式)将所有比例吸收到其中载荷的配置。从未受过训练,可以旋转所有剩余刻度的数据点。旋转与将相当于旋转特征向量与(进入QPQQ Q P Q V Q V rC = X V r"C"QQPQ VQVr),然后将原始成分得分计算为。@amoeba在其后记中指出了这些“路径”。"C"=XVr

这些最后概述的动作(大部分没有意义)提醒我们,一般而言,本征向量不仅可以旋转,而且可以旋转。例如,可以将 varimax程序应用于它们以简化结构。但是,由于特征向量在解释分量的意义上不如载荷有用,因此很少进行特征向量的旋转。

在此处输入图片说明

因此,具有后续varimax(或其他)旋转的PCA为

  • 仍然是PCA
  • 在途中放弃了主要组件
  • 可能比PC解释得更多的“潜在特征”
  • 但没有像这些模型那样令人满意地建模(PCA不是公平因素分析)

我没有在这个答案中提到因素分析。在我看来,@ amoeba对“潜在空间”一词的使用在所问问题的上下文中有点冒险。但是,我同意PCA +分析旋转可以称为“ PCA上的FA 样式视图”。


如何计算旋转分量的特征值?

1
@Haga,旋转组件不再是主要组件,因此它们不再具有特征值。但是,它们的方差等于载荷平方的总和(请参阅图表的底部-箭头指向未标准化的分数)。
ttnphns

8

psych::principal()你可以用做不同类型的转/转换到您的提取主成分(S)或“”电脑' rotate=的说法,如: "none""varimax"(默认), ,"quatimax""promax""oblimin""simplimax""cluster"。如果需要,您必须根据自己的评估和对调查主题的知识,凭经验决定哪个案例对您有意义。可能会给您提示的一个关键问题:哪个更可解释(如果需要的话)?

在帮助中,您可能会发现以下内容也有帮助:

重要的是要认识到旋转的主成分不是主成分(与特征值分解相关的轴),而仅仅是成分。要指出这一点,未旋转的主成分被标记为PCi,而旋转的PC现在被标记为RCi(对于旋转的成分),而倾斜转换的成分被标记为TCi(对于转换的成分)。(感谢Ulrike Gromping的建议。)


7

我的理解是PCA和因素分析之间的区别主要在于是否存在错误项。因此,PCA可以并且将忠实地表示数据,而因子分析对它所训练的数据不太忠实,但是尝试表示数据中的潜在趋势或社区。在标准方法下,PCA不会旋转,但是从数学上讲是可能的,因此人们会不时进行旋转。我同意这些评论者的意见,因为这些方法的“含义”有些可取,并且确保所使用的功能符合您的预期可能是明智的选择,例如,您注意到R具有执行某些功能的功能与SPSS用户所熟悉的PCA不同。


2

由于两者定义的混乱,它们实际上是同义词。不要相信单词,而是要深入研究码头以找到方程式。


3
我仍在努力理解方程式(生物学家ahoy),这就是为什么我转向这里的社区,希望它能帮助我解释外行术语的不同。
RomanLuštrik2010年

我认为意识形态是FA假设流程是由某些“隐性因素”驱动的,而我们拥有的数据则由它们的某些组合组成。因此,FA的问题在于以某种方式重构隐藏因素。还有PCA-一种通过混合旧变量以贪婪地吸收数据方差来迭代构建新变量(PC)的方法。可能会说PC与FA的因素相等,在这里它们将无法区分。但是也可能需要对PCA进行一些更改,使其成为其他“ FA类”的基础,因此问题就开始了。

因此,基本上,您应该考虑要做什么(而不是要使用哪个流行词)。我知道这很困难,尤其是在有生物学家的情况下(在某种程度上,使用流行语在生物学上很有效,因此他们只是假设这在其他学科中很常见);这仍然是科学应该做的方式。比使用Google(或本网站)评估它的良好算法。最后,使用底座找到执行此操作的功能/按钮,然后键入/单击它。

1

尽管这个问题已经得到了可接受的答案,但我还是想添加一些问题。

如果我没记错的话,“ PCA”是指“主要成分分析”;因此,只要您要分析主成分,可以是不旋转或不旋转,我们仍在分析“主要成分”(通过适当的初始矩阵分解找到)。

我认为在对前两个主成分进行“ varimax”旋转之后,我们得到了“两个第一台pc的varimax-solution”(或其他东西),但仍处于对主成分进行分析的框架中,或更短的内容在“ pca”框架内。

为了使我的观点更加清楚:我不认为简单的轮换问题会引入区分EFA和CFA的问题(例如,后者在Brett的回答中提到/引入了该问题)


您为什么突然在最后一句话中提到CFA?
变形虫

@amoeba:_Brett给予23分的答复指向我这个词,并认为有必要对此做些评论。但是也许改为说“ FA”会更好。我会考虑的……(仔细想想,我早先对该方法的研究(可能是在80年代)就将“ CFA”视为“确认因素分析”,而不是“常见...”。或90年代)
哥德弗里德·赫尔姆斯

只是答案的前三段是关于PCA与FA的,而最后一段似乎是在总结前面的那段,突然是关于EFA与CFA的。
变形虫

@amoeba:我的上一次编辑是否使我的意图/句子更清楚?
Gottfried Helms,2015年

1

我发现这是最有帮助的:Abdi&Williams,2010年,主成分分析

回转

在确定了组件的数量之后,为了便于解释,分析通常涉及对保留的组件的旋转[更多信息,请参见例如参考文献40和67]。使用两种主要的旋转类型:新轴也彼此正交时为正交,而新轴不需要正交时则为倾斜。因为旋转总是在子空间中执行,所以新轴将始终比原始分量(被计算为最佳)解释更少的惯性。但是,由旋转后的整个子空间解释的惯性部分与旋转之前的部分相同(仅惯性的划分已更改)。同样重要的是,由于旋转总是在子空间中进行(即,保留组件的空间),此子空间的选择会强烈影响旋转结果。因此,强烈建议对保留组件的子空间尝试几种大小,以评估旋转解释的鲁棒性。进行旋转时,术语“载荷”几乎总是指矩阵Q的元素。

(有关Q的定义,请参见论文)。

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.