如何正确应用SPSS 软件做主成分分析
1引言
主成分分析( principal components analysis) 也称主分量分析,由霍特林(Hotelling)于1933 年首先提出。主成分分析是利用降维的思想,在损失很少信息的前提下把多个指标转化为几个综合指标的多元统计方法。通常把转化后的综合指标称之为主成分,其中每个主成分都是原始变量的线性组合,且各个主成分之间互不相关,这就使得主成分比原始变量具有某些更优越的性能。这样在研究复杂问题时就可以只考虑少数几个主成分而不至于损失太多信息,从而更容易抓住主要矛盾,揭示事物内部变量之间的规律性,同时使问题得到简化,提高分析效率。
由于主成分分析的这些优势,在实际问题中遇到指标较多且各指标相关关系较大时,人们常考虑应用主成分分析的方法。但是目前用SPSS 软件分析主成分的教材中和发表的文章中有很多错误和误解之处(SAS 软件中有主成分分析和因子分析的专门语句,一般不会出现这种情况) :(1)如果把主成分与原始变量(或标准化后的变量) 的相关系数矩阵叫做因子负荷阵,把原始变量标准化后用因子来表示的系数阵叫做因子载荷阵,那么SPSS 软件得到的是因子载荷阵,因子载荷阵表示标准化后的主成分( 或叫公因子,方差为1) 来近似标准化后原始变量的系数矩阵。(2)主成分的系数是因子载荷阵推出的,不是从因子负荷阵推出的,即从因子分析得到的载荷阵求主成分的系数时很多教材中和文章中的公式表达错误,虽然实际数据结果是对的。这时的主成分的方差不是1,即非标准化的主成分。(3)当SPSS 软件从相关系数求主成分时,主成分应表示为标准化后的随机变量的线性组合,有些文献中就没加区分,把主成分直接写成原始变量的线性组合。(4)为了从因子分析得到主成分的系数,在SPSS 软件中对因子不要旋转,实际上很多人旋转了。(5)从因子得分系数矩阵得到主成分系数表达式,可以认为因子与标准化原始变量间的变换关系是可逆的,因为因子的提取采用主成分方法时,标准化后的随机变量完全由因子来表示[3]。鉴于以上错误和误解,本文从主成分分析与因子分析的关系出发,借用SPSS 软件自带的例子,进行了正确的操作,将其结果与SAS 软件进行比较,结果完全相同。
2联系与区别
(一) 主成分分析
设对某一事物的研究涉及到p 个指标,记为X1,X2,…Xp,这p 个指标构成的p 维随机向量为X= ( X1,X2,…Xp) ′。对X 进行线性变换,可以形成新的综合变量,用Y 表示,也就是说,新的综合变量可以由原来的变量线性表示,满足下式:
Y1 = b11X1 + b12X2 + … + b1pXp
Y2 = b21X1 + b22X2 + … + b2pXp
……
Yp = bp1X1 + bp2X2 + … + bppXp (1)
由于可以任意地对原始变量进行上述的线性变换,不同的线性变换得到的综合变量Y 的统计特性也不尽相同。通常主成分要求满足如下的三个条件:
1. b′ibi = 1,即b2 i1 + b2 i2 + … + b2ip = 1,b′i = ( bi1,bi2,…,bip) ,i = 1,2,…,p;
2. Yi与Yj相互无关( i≠j;i,j = 1,2,…p) ;
3. Y1是X1,X2,…Xp的一切满足条件1 的线性组合中方差最大者;Y2是与Y1不相关的X1,X2,…Xp的一切满足条件1 的线性组合中方差最大者;……;Yp是与Y1,Y2,…,Yp - 1都不相关的X1,X2,…Xp的一切满足条件1 的线性组合中方差最大者。
基于以上三个条件决定的综合变量,我们把Y1,Y2,…,Yp重新记为G1,G2,…,Gp,分别称为原始变量的第一、第二、…、第p 主成分,其系数重新记为cij,(i,j = 1,2,…,p) ,根据矩阵代数的知识,每个主成分的方差( var(Gi) ,i = 1,2,…,p) ,其实就是X1,X2,…Xp的协方差阵Σ 的非零特征值(λi) ,于是主成分与原始变量关系为:
G1 = c11X1 + c12X2 + … + c1pXp
G2 = c21X1 + c22X2 + … + c2pXp
……
Gp = cp1X1 + cp2X2 + … + cppXp (2)
记G = (G1,G2,…,Gp) ′,C = (cij)p × p,那么上式可以表示为:G = C′X,其中C是正交阵。如果数据是标准化后,即从相关系数矩阵出发,求得的特征值与对应的特征向量为主成分的系数矩阵。基于相关系数矩阵还是基于协方差矩阵做主成分分析:当分析中所选择的经济变量具有不同的量纲,变量水平差异很大,应该选择基于相关系数矩阵的主成分分析。对同度量或是取值范围在同量级的数据,还是直接从协方差矩阵求主成分。
对上述问题涉及到的p 个指标X1,X2,…Xp,我们为了从相关系数矩阵出发,将p 个指标标准化后记为ZX = ( ZX1,ZX2,…ZXp) ′,相关系数矩阵记为R。那么求得的主成分可以表示为:
F1 = u11ZX1 + u12ZX2 + … + u1pZXp
F2 = u21ZX1 + u22ZX2 + … + u2pZXp
……
Fp = up1ZX1 + up2ZX2 + … + uppZXp (3)
其中:u′i = ( ui1,ui2,…,uip) ,F = (F1,F2,…,Fp) ′,
那么上式可以表示为:F = U′ZX,其中U 是正交阵。
(二) 因子分析
因子分析(factor analysis) 的一般模型:设对某一事物的研究涉及到p 个指标X1,X2,…Xp,这p 指标有着较强的相关性,为了便于研究,在指标同向化的基础上,将样本数据进行标准化。为了说明方便,将同向化和标准化后的变量向量用ZX 表示,即ZX= (ZX1,ZX2,…ZXp) ′,其均值向量E(ZX)= 0,协方差矩阵记为cov(ZX) = Σ zx,其实这里的协方差矩阵Σ zx与相关系数矩阵Rzx相同,那么因子分析
的一般模型为:
ZX1 = a11 f1 + a12 f2 + … + a1m fm + ε1
ZX2 = a21 f1 + a22 f2 + … + a2m fm + ε2
……
ZXp = ap1 f1 + ap2 f2 + … + apm fm + εp (4)
其中f = (f1,f2,…fm) ′,(m < p ) 为公因子,ε= (ε1,ε1,…εp) ′为特殊因子,它们都是不可观测的随机变量,A = (aij)p × m叫做因子载荷阵。f 的均值向量E(f) = 0,协方差cov(f) = I,E(ε) = 0,且ε 与f相互独立,ε 的协方差矩阵是对角阵。
(三) 主成分与因子分析的联系
主成分分析与因子分析都是绛维的分析方法,利用少数几个变量对数据进行解释。主成分分析是一种数据的变换,而不假定数据阵有什么样的结构形式;因子分析可以看成是一种模型分析,当模型的某些条件不满足时,因子分析可能是虚假的。主成分分析的重点放在从观测变量到主成分的变换上,因子分析重点放在从基本因子到观测变量的变换上,主成分变换是可逆的,因子分析则不要求。当特殊因子的变差为0时,主成分分析和因子分析是完全等价的。那么对于一个因子分析模型怎么估计其因子载荷矩阵A,实践中有很多方法,其中有一种就是上述的主成分分析方法,从公式F= U′ZX 我们可以得到ZX = UF,具体表达式为:
ZX1 = u11F1 + u21F2 + … + up1Fp
ZX2 = u12F1 + u22F2 + … + up2Fp
……
ZXp = u1pF1 + u2pF2 + … + uppFp (5)
对上面的等式(5)只保留前m(m < p) 个主成分,而把后面的部分用εi代替,则
当主成分F1,F2,…,Fp是从标准化后的相关系数矩阵求出,各成分相互独立,且其方差按大到小的排序为λ1,λ2…λp,我们将式(6)
做。通过上述变换,我们就能得到与式(4)类似的因子模型表达式。注意这里的ε1,ε2,…εp与式(4 ) 的ε1,ε2,…εp是有区别的,式(4)要求它们相互独立而这里它们之间不独立,为了方便还是用原符号表示。
实际上对于主成分分析SPSS 软件中没有对应的模块,但是因子分析模块中有利用主成分分析来求得因子载荷矩阵,根据上面主成分分析与因子分析的联系,我们可以从SPSS 的因子载荷矩阵得到主成分分析的系数。由于主成分分析所得到的特殊因子ε1,ε2,…εp并不独立,因此所得的因子载荷并不完全正确。但是当共同度较大时,特殊因子所起的作用较小,那么特殊因子之间的相关性所带来的影响就几乎可以忽略不计,这时主成分分析和因子分析是完全等价的(公因子的数目与变量一样多)。这时可以利用式(4)中的aij反推出式(3)中的uij它们之间的关系是,也就是推出了从因子载荷矩阵得到主成分系数表达式。
3主成分分析的SPSS 实现
本文利用SPSS 软件自带的数据集Employee data 为例说明如何利用因子分析模块得到主成分系数。数据集Employee data 为Midwestern 银行在1969 - 1971 年之间雇员情况的数据,共包括474 条观测及如下10个变量:Id(观测号)、Gender(性别)、Bdate(出生日期)、Educ (受教育程度(年数))、Jobcat(工作种类)、Salary (目前年薪)、Salbegin (开始受聘时的年薪)、Jobtime(受雇时间)、Prevexp(受雇以前的工作时间)、Minority(是否少数民族)。我们将educ、salary、salbegin、jobtime、prevexp 依次表示为X1,X2,X3,X4,X5。数据在同向化的基础上SPSS 中的因子分析默认针对标准化后的数据来分析的,所以利用Analyze → Descriptive Statistics →Descriptives…进入描述性统计对话框,依次选中变量X1,X2,X3,X4,X5并点向右的箭头按钮,这五个变量便进入variables 窗口,选中Save standardizedas variables 复选框,点击OK 按钮,即可在数据窗口得到标准化的数据ZX1,ZX2,ZX3,ZX4,ZX5。接下来对标准化后的数据进行分析,点击Analyze→Data Reduction→Factor…进入Factor Analysis( 因子分析)对话框。依次选中变量ZX1,ZX2,ZX3,ZX4,ZX5(用原始数据也是一样,标准化主要是在主成分表达中需要)并点向右的箭头按钮,这五个变量便进入variables 窗口,点击右侧的OK 按钮,即可得到表1、表2 和表3。
表1中的Communalities(共同度)数据给出了该次分析从每个原始变量中提取的信息(特征根大于1),可以看到除受教育程度(ZX1)信息损失较大外,主成分几乎包含了各个原始变量至少90% 的信息。表2 中的Total Variance Explained(总方差解释部分)则显示了各主成分解释原始变量总方差的情况,SPSS 默认保留特征根大于1 的主成分,在本例中看到当保留3 个主成分为宜,这3 个主成分集中了原始5 个变量信息的90. 66% ,可见效果是比较好的。表3中Component Matrix(因子载荷矩阵)给出了标准化原始变量用公因子线性表示的近似表达式,提取三个公因子时的因子模型可以表示为:
ZX1 = 0. 846f1 - 0. 194f2 - 0. 014f3 + ε1
ZX2 = 0. 940f1 + 0. 104f2 + 0. 029f3 + ε2
……
ZX5 = - 0. 178f1 + 0. 965f2 + 0. 069f3 + εp
根据上面的因子载荷系数aij与主成分系数uij之间的关系 ,也就推出了从相关系数矩阵得到的主成分系数表达式:
实际中我们通常只选取前几个主成分,例如F1,F2,F3来反映原p 个变量信息。主成分系数还可以通过进入Factor Analysis 对话框并选择好变量之后,点击对话框下部的Scores 按钮进入Factor Scores 对话框,选择Display factor score coefficient matrix 选项,并按Continue 继续,最后点击OK 按钮运行,也可以推出主成分的系数,具体参见何晓群教授的多元统计分析。作者又应用SAS 软件(从相关系数出发) 得到的结果与上述的结果一样。
4结论
从上面的分析可以看出,因子分析和主成分分析都依赖于原始变量,所以原始变量的选择很重要(指标的选择非常重要)。如果原始变量都本质上独立,那么降维就可能失败,这是因为很难把很多独立变量用少数综合的变量概括。数据越相关,降维效果就越好。其次,对于具体的问题指标选取之后还要对其处理,正向指标、逆向的指标和区间型指标怎样转换成可以比较的指标问题。最后,从相关系数出发建立主成分的系数矩阵还是从协方差矩阵出发建立主成分的系数还没有定论。因子分析中的特殊因子如果作用较大,不能从因子载荷阵推主成分系数。可见建立主成分模型的事前步骤和事后分析很重要,不是随便什么数据拿来用SPSS软件分析得出结果就行了。
数据分析咨询请扫描二维码
若不方便扫码,搜微信号:CDAshujufenxi
在数据分析领域,Excel作为一种普及率极高且功能强大的工具,无疑为无数专业人士提供了便捷的解决方案。尽管Excel自带了丰富的功 ...
2025-01-17在这个瞬息万变的时代,许多人都在寻找能让他们脱颖而出的职业。而数据分析师,作为大数据和人工智能时代的热门职业,自然吸引了 ...
2025-01-14Python作为一门功能强大的编程语言,已经成为数据分析和可视化领域的重要工具。无论你是数据分析的新手,还是经验丰富的专业人士 ...
2025-01-10完全靠数据决策,真的靠谱吗? 最近几年,“数据驱动”成了商界最火的关键词之一,但靠数据就能走天下?其实不然!那些真正成功 ...
2025-01-09SparkSQL 结构化数据处理流程及原理是什么?Spark SQL 可以使用现有的Hive元存储、SerDes 和 UDF。它可以使用 JDBC/ODB ...
2025-01-09在如今这个信息爆炸的时代,数据已然成为企业的生命线。无论是科技公司还是传统行业,数据分析正在深刻地影响着商业决策以及未来 ...
2025-01-08“数据为王”相信大家都听说过。当前,数据信息不再仅仅是传递的媒介,它成为了驱动经济发展的新燃料。对于企业而言,数据指标体 ...
2025-01-07在职场中,当你遇到问题的时候,如果感到无从下手,或者抓不到重点,可能是因为你掌握的思维模型不够多。 一个好用的思维模型, ...
2025-01-06在现代企业中,数据分析师扮演着至关重要的角色。每天都有大量数据涌入,从社交媒体到交易平台,数据以空前的速度和规模生成。面 ...
2025-01-06在职场中,许多言辞并非表面意思那么简单,有时需要听懂背后的“潜台词”。尤其在数据分析的领域里,掌握常用术语就像掌握一门新 ...
2025-01-04在当今信息化社会,数据分析已成为各行各业的核心驱动力。它不仅仅是对数字进行整理与计算,而是在数据的海洋中探寻规律,从而指 ...
2025-01-03又到一年年终时,各位打工人也迎来了展示成果的关键时刻 —— 年终述职。一份出色的年终述职报告,不仅能全面呈现你的工作价值, ...
2025-01-03在竞争激烈的商业世界中,竞品分析对于企业的发展至关重要。今天,我们就来详细聊聊数据分析师写竞品分析的那些事儿。 一、明确 ...
2025-01-03在数据分析的江湖里,有两个阵营总是争论不休。一派信奉“大即是美”,认为数据越多越好;另一派坚守“小而精”,力挺质量胜于规 ...
2025-01-02数据分析是一个复杂且多维度的过程,从数据收集到分析结果应用,每一步都是对信息的提炼与升华。可视化分析结果,以图表的形式展 ...
2025-01-02在当今的数字化时代,数据分析师扮演着一个至关重要的角色。他们如同现代企业的“解密专家”,通过解析数据为企业提供决策支持。 ...
2025-01-02数据分析报告至关重要 一份高质量的数据分析报告不仅能够揭示数据背后的真相,还能为企业决策者提供有价值的洞察和建议。 年薪 ...
2024-12-31数据分析,听起来好像是技术大咖的专属技能,但其实是一项人人都能学会的职场硬核能力!今天,我们来聊聊数据分析的核心流程,拆 ...
2024-12-31提到数据分析,你脑海里可能会浮现出一群“数字控”抱着电脑,在海量数据里疯狂敲代码的画面。但事实是,数据分析并没有你想象的 ...
2024-12-31关于数据分析师是否会成为失业高危职业,近年来的讨论层出不穷。在这个快速变化的时代,技术进步让人既兴奋又不安。今天,我们从 ...
2024-12-30