主成分分析与因子分析及SPSS实现
一、主成分分析
(1)问题提出在问题研究中,为了不遗漏和准确起见,往往会面面俱到,取得大量的指标来进行分析。比如为了研究某种疾病的影响因素,我们可能会收集患者的人口学资料、病史、体征、化验检查等等数十项指标。如果将这些指标直接纳入多元统计分析,不仅会使模型变得复杂不稳定,而且还有可能因为变量之间的多重共线性引起较大的误差。有没有一种办法能对信息进行浓缩,减少变量的个数,同时消除多重共线性?这时,主成分分析隆重登场。(2)主成分分析的原理主成分分析的本质是坐标的旋转变换,将原始的n个变量进行重新的线性组合,生成n个新的变量,他们之间互不相关,称为n个“成分”。同时按照方差最大化的原则,保证第一个成分的方差最大,然后依次递减。这n个成分是按照方差从大到小排列的,其中前m个成分可能就包含了原始变量的大部分方差(及变异信息)。那么这m个成分就成为原始变量的“主成分”,他们包含了原始变量的大部分信息。注意得到的主成分不是原始变量筛选后的剩余变量,而是原始变量经过重新组合后的“综合变量”。我们以最简单的二维数据来直观的解释主成分分析的原理。假设现在有两个变量X1、X2,在坐标上画出散点图如下:可见,他们之间存在相关关系,如果我们将坐标轴整体逆时针旋转45°,变成新的坐标系Y1、Y2,如下图:根据坐标变化的原理,我们可以算出:Y1 = sqrt(2)/2 * X1 + sqrt(2)/2 * X2Y2 = sqrt(2)/2 * X1 – sqrt(2)/2 * X2其中sqrt(x)为x的平方根。通过对X1、X2的重新进行线性组合,得到了两个新的变量Y1、Y2。此时,Y1、Y2变得不再相关,而且Y1方向变异(方差)较大,Y2方向的变异(方差)较小,这时我们可以提取Y1作为X1、X2的主成分,参与后续的统计分析,因为它携带了原始变量的大部分信息。至此我们解决了两个问题:降维和消除共线性。对于二维以上的数据,就不能用上面的几何图形直观的表示了,只能通过矩阵变换求解,但是本质思想是一样的。打开因子分析的主界面,将十项成绩选入”变量“框中(不要包含总分),如下: 点击”描述“按钮,打开对话框,选中”系数“和”KMO和Bartlett球形度检验“:
上图相关解释:”系数“:为变量之间的相关系数阵列,可以直观的分析相关性。”KMO和Bartlett球形度检验“:用于定量的检验变量之间是否具有相关性。点击”继续“,回到主界面,点击”抽取“,打开对话框。”方法“ =>”主成分“,”输出“=>”未旋转的因子解“和”碎石图“,”抽取“=>”基于特征值“,其余选择默认。
解释:①因子抽取的方法:选取默认的主成分法即可,其余方法的计算结果可能有所差异。②输出:”未旋转的因子解”极为主成分分析结果。碎石图有助于我们判断因子的重要性(详细介绍见后面)。③抽取:为抽取主成分(因子)的方法,一般是基于特征值大于1,默认即可。点击”继续“,回到主界面,点击”确定“,进入分析。输出的主要表格如下:(1)相关性检验因子分析要求变量之间有相关性,所以首先要进行相关性检验。首先输出的是变量之间的相关系数矩阵:
可以直观的看到,变量之间有相关性。但需要检验,接着输出的是相关性检验: 上图有两个指标:第一个是KMO值,一般大于0.7就说明不了之间有相关性了。第二个是Bartlett球形度检验,P值<0.001。综合两个指标,说明变量之间存在相关性,可以进行因子分析。否则,不能进行因子分析。(2)提取主成分和公因子接下来输出主成分结果:
这就是主成分分析的结果,表中第一列为10个成分;第二列为对应的”特征值“,表示所解释的方差的大小;第三列为对应的成分所包含的方差占总方差的百分比;第四列为累计的百分比。一般来说,选择”特征值“大于1的成分作为主成分,这也是SPSS默认的选择。在本例中,成分1和2的特征值大于1,他们合计能解释71.034%的方差,还算不错。所以我们可以提取1和2作为主成分,抓住了主要矛盾,其余成分包含的信息较少,故弃去。下面,输出碎石图,如下: 碎石图来源于地质学的概念。在岩层斜坡下方往往有很多小的碎石,其地质学意义不大。碎石图以特征值为纵轴,成分为横轴。前面陡峭的部分特征值大,包含的信息多,后面平坦的部分特征值小,包含的信息也小。由图直观的看出,成分1和2包含了大部分信息,从3开始就进入平台了。接下来,输出提取的成分矩阵:
上表中的数值为公因子与原始变量之间的相关系数,绝对值越大,说明关系越密切。公因子1和9个运动项目都正相关(注意跑步运动运动的计分方式,时间越短,分数越高),看来只能称为“综合运动”因子了。公因子2与铁饼、铅球正相关,与1500米跑、400米跑负相关,这究竟代表什么意思呢?看来只能成为“不知所云”因子了。(三)因子旋转前面提取的两个公因子一个是大而全的“综合因子”,一个不知所云,得到这样的结果,无疑是分析的失败。不过,不要灰心,我们可以通过因子的旋转来获得更好的解释。在主界面中点击“旋转”按钮,打开对话框,“方法”=>“最大方差法”,“输出”=>“旋转解”。
点击“继续”,回到主界面点击“确认”进行分析。输出结果如下: 这是选择后的成分矩阵。经过旋转,可以看出:公因子1得分越高,所有的跑步和跨栏成绩越差,而跳远、撑杆跳等需要助跑类项目的成绩也越差,所以公因子1代表的是奔跑能力的反向指标,可称为“奔跑能力”。公因子2与铁饼和铅球的正相关性很高,与标枪、撑杆跳等需要上肢力量的项目也正相关,所以该因子可以成为“上肢力量”。经过旋转,可以看出公因子有了更合理的解释。(四)结果的保存在最后,我们还要将公因子储存下来供后续使用。点击“得分”按钮,打开对话框,选中“保存为变量”,方法采用默认的“回归”方法,同时选中“显示因子得分系数矩阵”。
SPSS会自动生成2个新变量,分别为公因子的取值,放在数据的最后。同时会输出一个因子系数表格:
由上图,我们可以写出公因子的表达式(用F1、F2代表两个公因子,Z1~Z10分别代表原始变量):
F1 = -0.16*Z1+0.161*Z2+0.145*Z3+0.199*Z4-0.131*Z5-0.167*Z6+0.137*Z7+0.174*Z8+0.131*Z9-0.037*Z10F2同理,略去。注意,这里的变量Z1~Z10,F1、F2不再是原始变量,而是标准正态变换后的变量。