登录
首页精彩阅读如何正确应用SPSS 软件做主成分分析
如何正确应用SPSS 软件做主成分分析
2017-01-21
收藏

如何正确应用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软件分析得出结果就行了。

数据分析咨询请扫描二维码

客服在线
立即咨询