实验七、利用SPSS进行主成分分析【例子】以全国31个省市的8项经济指标为例,进行主成分分析。
第一步:录入或调入数据(图1)。
图1 原始数据(未经标准化)第二步:打开“因子分析”对话框。
沿着主菜单的“Analyze→Data Reduction→Factor ”的路径(图2)打开因子分析选项框(图3)。
图2 打开因子分析对话框的路径图3 因子分析选项框第三步:选项设置。
首先,在源变量框中选中需要进行分析的变量,点击右边的箭头符号,将需要的变量调入变量(Variables)栏中(图3)。
在本例中,全部8个变量都要用上,故全部调入(图4)。
因无特殊需要,故不必理会“Value ”栏。
下面逐项设置。
图4 将变量移到变量栏以后⒈设置Descriptives描述选项。
单击Descriptives按钮(图4),弹出Descriptives对话框(图5)。
图5 描述选项框在Statistics 统计 栏中选中Univariate descriptives 复选项,则输出结果中将会给出原始数据的抽样均值、方差和样本数目(这一栏结果可供检验参考);选中Initial solution 复选项,则会给出主成分载荷的公因子方差(这一栏数据分析时有用)。
在Correlation Matrix 栏中,选中Coefficients 复选项,则会给出原始变量的相关系数矩阵(分析时可参考);选中Determinant 复选项,则会给出相关系数矩阵的行列式,如果希望在Excel 中对某些计算过程进行了解,可选此项,否则用途不大。
其它复选项一般不用,但在特殊情况下可以用到(本例不选)。
设置完成以后,单击Continue 按钮完成设置(图5)。
⒉ 设置Extraction 选项。
打开Extraction 对话框(图6)。
因子提取方法主要有7种,在Method 栏中可以看到,系统默认的提取方法是主成分(Principal Components ),因此对此栏不作变动,就是认可了主成分分析方法。
在Analyze 栏中,选中Correlation matrix 复选项,则因子分析基于数据的相关系数矩阵进行分析;如果选中Covariance matrix 复选项,则因子分析基于数据的协方差矩阵进行分析。
对于主成分分析而言,由于数据标准化了,这两个结果没有分别,因此任选其一即可。
在Display 栏中,选中Unrotated factor solution (非旋转因子解)复选项,则在分析结果中给出未经旋转的因子提取结果。
对于主成分分析而言,这一项选择与否都一样;对于旋转因子分析,选择此项,可将旋转前后的结果同时给出,以便对比。
选中Scree Plot (“山麓”图),则在分析结果中给出特征根按大小分布的折线图(形如山麓截面,故得名),以便我们直观地判定因子的提取数量是否准确。
在Extract 栏中,有两种方法可以决定提取主成分(因子)的数目。
一是根据特征根(Eigenvalues )的数值,系统默认的是1=c λ。
我们知道,在主成分分析中,主成分得分的方差就是对应的特征根数值。
如果默认1=c λ,则所有方差大于等于1的主成分将被保留,其余舍弃。
如果觉得最后选取的主成分数量不足,可以将c λ值降低,例如取9.0=c λ;如果认为最后的提取的主成分数量偏多,则可以提高c λ值,例如取1.1=c λ。
主成分数目是否合适,要在进行一轮分析以后才能肯定。
因此,特征根数值的设定,要在反复试验以后才能决定。
一般而言,在初次分析时,最好降低特征根的临界值(如取8.0=c λ) ,这样提取的主成分将会偏多,根据初次分析的结果,在第二轮分析过程中可以调整特征根的大小。
第二种方法是直接指定主成分的数目即因子数目,这要选中Number of factors 复选项。
主成分的数目选多少合适?开始我们并不十分清楚。
因此,首次不妨将数值设大一些,但不能超过变量数目。
本例有8个变量,因此,最大的主成分提取数目为8,不得超过此数。
在我们第一轮分析中,采用系统默认的方法提取主成分。
图6 提取对话框需要注意的是:主成分计算是利用迭代(Iterations )方法,系统默认的迭代次数是25次。
但是,当数据量较大时,25次迭代是不够的,需要改为50次、100次乃至更多。
对于本例而言,变量较少,25次迭代足够,故无需改动。
设置完成以后,单击Continue 按钮完成设置(图6)。
⒊ 设置Scores 设置。
选中Save as variables 栏,则分析结果中给出标准化的主成分得分(在数据表的后面)。
至于方法复选项,对主成分分析而言,三种方法没有分别,采用系统默认的“回归”(Regression )法即可。
图7 因子得分对话框选中Display factor score coefficient matrix ,则在分析结果中给出因子得分系数矩阵及其相关矩阵。
设置完成以后,单击Continue 按钮完成设置(图7)。
⒋ 其它。
对于主成分分析而言,旋转项(Rotation )可以不必设置;对于数据没有缺失的情况下,Option 项可以不必理会。
全部设置完成以后,点击OK 确定,SPSS 很快给出计算结果(图8)。
图8 主成分分析的结果第四步,结果解读。
在因子分析结果(Output )中,首先给出的Descriptive Statistics ,第一列Mean 对应的变量的算术平均值,计算公式为∑==ni ij j x n x 11第二列Std. Deviation 对应的是样本标准差,计算公式为2/112])(11[∑=--=ni j ij j x x n σ 第三列Analysis N 对应是样本数目。
这一组数据在分析过程中可作参考。
接下来是Correlation Matrix(相关系数矩阵),一般而言,相关系数高的变量,大多会进入同一个主成分,但不尽然,除了相关系数外,决定变量在主成分中分布地位的因素还有数据的结构。
相关系数矩阵对主成分分析具有参考价值,毕竟主成分分析是从计算相关系数矩阵的特征根开始的。
相关系数阵下面的Determinant=1.133E-0.4是相关矩阵的行列式值,根据关系式0)det(=-R I λ可知,det(λI )=det(R ),从而Determinant=1.133E-0.4=λ1*λ2*λ3*λ4*λ5*λ6*λ7*λ8。
这一点在后面将会得到验证。
在Communalities 中,给出了因子载荷阵的初始主成分方差(Initial )和提取主成分方差(Extraction ),后面将会看到它们的含义。
在Total Variance Explained(全部解释方差) 表的Initial Eigenvalues (初始特征根)中,给出了按顺序排列的主成分得分的方差(Total),在数值上等于相关系数矩阵的各个特征根λ,因此可以直接根据特征根计算每一个主成分的方差百分比(% of Variance )。
由于全部特征根的总和等于变量数目,即有m =∑λi =8,故第一个特征根的方差百分比为λ1/m =3.755/8=46.939,第二个特征根的百分比为λ2/m =2.197/8= 27.459,……,其余依此类推。
然后可以算出方差累计值(Cumulative %)。
在Extraction Sums of Squared Loadings ,给出了从左边栏目中提取的三个主成分及有关参数,提取的原则是满足λ>1,这一点我们在图6所示的对话框中进行了限定。
E i g e n v a l u e图8 特征根数值衰减折线图(山麓图)主成分的数目可以根据相关系数矩阵的特征根来判定,如前所说,相关系数矩阵的特征根刚好等于主成分的方差,而方差是变量数据蕴涵信息的重要判据之一。
根据λ值决定主成分数目的准则有三:i 只取λ>1的特征根对应的主成分从Total Variance Explained表中可见,第一、第二和第三个主成分对应的λ值都大于1,这意味着这三个主成分得分的方差都大于1。
本例正是根据这条准则提取主成分的。
ii 累计百分比达到80%~85%以上的λ值对应的主成分在Total Variance Explained表可以看出,前三个主成分对应的λ值累计百分比达到89.584%,这暗示只要选取三个主成分,信息量就够了。
iii 根据特征根变化的突变点决定主成分的数量从特征根分布的折线图(Scree Plot)上可以看到,第4个λ值是一个明显的折点,这暗示选取的主成分数目应有p≤4(图8)。
那么,究竟是3个还是4个呢?根据前面两条准则,选3个大致合适(但小有问题)。
在Component Matrix(成分矩阵)中,给出了主成分载荷矩阵,每一列载荷值都显示了各个变量与有关主成分的相关系数。
以第一列为例,0.885实际上是国内生产总值(GDP)与第一个主成分的相关系数。
将标准化的GDP数据与第一主成分得分进行回归,决定系数R2=0.783(图9),容易算出R=0.885,这正是GDP在第一个主成分上的载荷。
下面将主成分载荷矩阵拷贝到Excel上面作进一步的处理:计算公因子方差和方差贡献。
首先求行平方和,例如,第一行的平方和为h12=0.88492+0.38362+0.12092=0.9449这是公因子方差。
然后求列平方和,例如,第一列的平方和为s12=0.88492+0.60672+…+0.82272=3.7551这便是方差贡献(图10)。
在Excel中有一个计算平方和的命令sumsq,可以方便地算出一组数据的平方和。
显然,列平方和即方差贡献。
事实上,有如下关系成立:至于行平方和,显然与前面Communalities表中的Extraction列对应的数据一样。
如果我们将8个主成分全部提取,则主成分载荷的行平方和都等于1(图11),即有h i=1,s j=λj。
到此可以明白:在Communalities中,Initial对应的是初始公因子方差,实际上是全部主成分的公因子方差;Extraction对应的是提取的主成分的公因子方差,我们提取了3个主成分,故计算公因子方差时只考虑3个主成分。
y = 0.0012x - 2.2336R 2 = 0.783-4-3-2-10123450100020003000400050006000第一主成分国内生产总值图9 国内生产总值(GDP )的与第一主成分的相关关系(标准化数据)图10 主成分方差与方差贡献Com ponent Matrixa .885.384.121-.203-6.87E-02 1.143E-02 2.420E-029.192E-02.607-.598.271.409-7.61E-02.157 5.525E-02 1.317E-02.912.161.212-.270-7.71E-028.271E-028.113E-02-7.36E-02.466-.722.368-.164.304-1.64E-02-7.62E-02 3.949E-03.486.738-.275.212.305 2.254E-02 6.855E-02-6.02E-03-.509.252.797.072 2.716E-02-.161.107 2.435E-03-.620.594.438-.027 3.531E-02.247-9.23E-021.634E-03.823.427.211.209-9.38E-02-.137-.157-2.30E-02国内生产居民消费固定资产职工工资货物周转消费价格商品零售工业产值12345678ComponentEx traction Method: Principal Com ponent Analysis.8 com ponents ex tracted.a.图11 全部主成分的公因子方差和方差贡献提取主成分的原则上要求公因子方差的各个数值尽可能接近,亦即要求它们的方差极小,当公因子方差完全相等时,它们的方差为0,这就达到完美状态。