【攻略】手把手教你怎么用SPSS做统计分析
丁香园
使用SPSS软件进行数据分析
一个严谨的实验,在获得实验数据的那一刻,数据的处理与分析,就显得尤为重要,今天先聊聊主成分分析,以城市分析为例子,大家延伸思考吧,文档已通过论证。想跟师兄交流实验数据问题,加我微信:laiwenshixiong,申请时,记得填写申请理由,格式为:真实姓名+所学专业+学校或单位,例如:高鹏+生化专业+浙江大学。
切入正题:
主成分分析
【例子】以全国31个省市的8项经济指标为例,进行主成分分析。
第一步:录入或调入数据(图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 matirx复选项,则因子分析基于数据的相关系数矩阵进行分析;如果选中Covariance matrix复选项,则因子分析基于数据的协方差矩阵进行分析。对于主成分分析而言,由于数据标准化了,这两个结果没有分别,因此任选其一即可。
在Display栏中,选中Unrotated factor solution(非旋转因子解)复选项,则在分析结果中给出未经旋转的因子提取结果。对于主成分分析而言,这一项选择与否都一样;对于旋转因子分析,选择此项,可将旋转前后的结果同时给出,以便对比。
选中Scree Plot(“山麓”图),则在分析结果中给出特征根按大小分布的折线图(形如山麓截面,故得名),以便我们直观地判定因子的提取数量是否准确。
在Extract栏中,有两种方法可以决定提取主成分(因子)的数目。一是根据特征根(Eigenvalues)的数值,系统默认的是。我们知道,在主成分分析中,主成分得分的方差就是对应的特征根数值。如果默认,则所有方差大于等于1的主成分将被保留,其余舍弃。如果觉得最后选取的主成分数量不足,可以将值降低,例如取;如果认为最后的提取的主成分数量偏多,则可以提高值,例如取。主成分数目是否合适,要在进行一轮分析以后才能肯定。因此,特征根数值的设定,要在反复试验以后才能决定。一般而言,在初次分析时,最好降低特征根的临界值(如取) ,这样提取的主成分将会偏多,根据初次分析的结果,在第二轮分析过程中可以调整特征根的大小。
第二种方法是直接指定主成分的数目即因子数目,这要选中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对应的变量的算术平均值,计算公式为
第二列Std. Deviation对应的是样本标准差,计算公式为
第三列Analysis N对应是样本数目。这一组数据在分析过程中可作参考。
接下来是Correlation Matrix(相关系数矩阵),一般而言,相关系数高的变量,大多会进入同一个主成分,但不尽然,除了相关系数外,决定变量在主成分中分布地位的因素还有数据的结构。相关系数矩阵对主成分分析具有参考价值,毕竟主成分分析是从计算相关系数矩阵的特征根开始的。相关系数阵下面的Determinant=1.133E-0.4是相关矩阵的行列式值,根据关系式可知,det(λI)=det(R),从而Determinant=1.133E-0.4=λundefinedλundefinedλundefinedλundefinedλundefinedλundefinedλundefinedλ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所示的对话框中进行了限定。
图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上面作进一步的处理:计算公因子方差和方差贡献。首先求行平方和,例如,第一行的平方和为
这是公因子方差。然后求列平方和,例如,第一列的平方和为
这便是方差贡献(图10)。在Excel中有一个计算平方和的命令sumsq,可以方便地算出一组数据的平方和。显然,列平方和即方差贡献。事实上,有如下关系成立:
相关系数矩阵的特征根=方差贡献=主成分得分的方差
至于行平方和,显然与前面公因子方差(Communalities)表中的Extraction列对应的数据一样。如果我们将8个主成分全部提取,则主成分载荷的行平方和都等于1(图11),即有hi=1,sj=λj。到此可以明白:在Communalities中,Initial对应的是初始公因子方差,实际上是全部主成分的公因子方差;Extraction对应的是提取的主成分的公因子方差,我们提取了3个主成分,故计算公因子方差时只考虑3个主成分。
图9 国内生产总值(GDP)的与第一主成分的相关关系(标准化数据)
图10 主成分方差与方差贡献
图11 全部主成分的公因子方差和方差贡献
提取主成分的原则上要求公因子方差的各个数值尽可能接近,亦即要求它们的方差极小,当公因子方差完全相等时,它们的方差为0,这就达到完美状态。实际应用中,只要公因子方差数值彼此接近(不相差太远)就行了。从上面给出的结果可以看出:提取3个主成分的时候,居民消费的公因子方差偏小,这暗示提取3个主成分,居民消费方面的信息可能有较多的损失。至于方差贡献,反映对应主成分的重要程度,这一点从方差的统计学意义可以得到理解。
在图11中,将最后一行的特征根全部乘到一起,得0.0001133,这正是相关系数矩阵的行列式数值(在Excel中,求一组数据的乘积之和的命令是product)。
最后说明Component Score Coefficient Matrix(成分得分系数矩阵)和Component Score Covariance Matrix(成分得分协方差矩阵),前者是主成分得分系数,后者是主成分得分的协方差即相关系数。从Component Score Covariance Matrix可以看出,标准化主成分得分之间的协方差即相关系数为0(j≠k)或1(j=k),这意味着主成分之间彼此正交即垂直。
初学者常将Component Score Coefficient Matrix表中的数据当成主成分得分或因子得分,这是误会。成分得分系数矩阵的数值是主成分载荷除以相应的特征根得到的结果。在Component Matrix表中,将第一列数据分别除以λ1=3.755,第二列数值分别除以λ2=2.197,…,立即得到Component Score Coefficient;反过来,如果将Component Score Coefficient Matrix表中的各列数据分别乘以λ1=3.755,λ2=2.197,…,则可将其还原为主成分载荷即Component Matrix中的数据。
实际上,主成分得分在原始数据所在的SPSS当前数据栏中给出,不过给出的都是标准化的主成分得分(图12a);将各个主成分乘以相应的√λ即特征根的二次方根可以将其还原为未经标准化的主成分得分。
a.标准化的主成分得分 b. 非标准化的主成分得分图12 两种主成分得分
计算标准化主成分得分的协方差或相关系数,结果与Component Score Covariance Matrix表中的给出的结果一致(见图13)。
第一因子第二因子第三因子
第一因子1
第二因子0.00000 1
第三因子0.00000 0.00000 1
图13 主成分(得分)之间的相关系数矩阵
第五步,计算结果分析。
从Component Matrix即主成分载荷表中可以看出,国内生产总值、固定资产投资和工业产值在第一主成分上载荷较大,亦即与第一主成分的相关系数较高;职工工资和货物周转量在第二主成分上的载荷绝对值较大,即负相关程度较高;消费价格指数在第三主成分上的载荷较大,即相关程度较高。
因此可将主成分命名如下:
第一主成分:投入-产出主成分;
第二主成分:工资-物流主成分;
第三主成分:消费价格主成分。
问题在于:一方面,居民消费和商品零售价格指数的归类比较含混;另一方面,主成分的命名结构不清。因此,有必要作进一步的因子分析。
至于因子旋转之类,留待“因子分析”部分说明;计算结果的系统分析不属于软件操作范围,预备课堂讲解。
【说明】本人计算机是双系统,现在常用的WinMe系统出了毛病,SPSS10.0在WinMe系统中;故这次改用本人Win2000系统中的SPSS11.0。对于因子分析之类,SPSS11.0与SPSS10.0基本没有什么差别。
想了解更多有用的、有意思的前沿资讯以及酷炫的实验方法的你,都可以成为师兄的好伙伴
师兄微信号:laiwenshixiong