首先说明的一点是,本文不涉及严谨的数学推导,因为那些推导都是现成的,经过这么些年的检验,也不存在什么理论问题,需要的同学自行找书看就行了(找名校数学专业的专业书,一般《多元统计》之类的书里都有)。本文的主要作用与目的就是,帮助理解那些分析软件(比如SPSS Statistics,以下简称SPSS)运行出来的结果,并明确每一步的设置所起到的作用。
1. 概念区分
为啥要说概念区分?因为我发现很多人分不清主成分分析和因子分析的关系(好吧,包括我)。大家知道主成分分析是将原始指标(就是观测变量的维度,还有别的称呼,通常来说,就是样本数据矩阵的行所代表的内容!)简化为几个基本指标的一种降维方法,而因子分析是将多个变量综合为少数几个因子、进而再现原始变量与因子之间的相关关系。乍一看上去,似乎没什么区别啊?
事实上,它们之间是有区别的。我举一个例子:我们知道SPSS可以做因子分析与主成分分析,你会发现,依次点击“【分析】——【降维】”之后发现,没有主成分分析这个选项,有的是【因子分析】(当然也有【对应分析】与【最优标度】,这里不作说明)。点开因子分析,在【提取】对话框中可以看到,默认的【方法】一栏,赫然写着“主成分”。点开下拉按钮,发下还有其他很多方法。至此,一个自然的想法是:主成分分析原来是因子分析中的一种方法啊!
不错,它们之间的区别在于:主成分分析不能作为一个模型来描述,它只是通常的变量代换,而因子分析需要构造因子模型;主成分分析中主成分的个数与变量个数相同,它是将一组具有相关关系的变量变换为一组互不相关的变量,尽管在实际中通常选择小于变量个数的主成分,而因子分析的目的是要选择尽可能少的公因子,以便构造简单的因子模型;主成分分析是将主成分表示为原始变量的线性组合,而因子分析是将原始变量表示为公因子与特殊因子的线性组合,用假设的公因子来“解释”相关阵的内部依赖关系。(以上参考《应用多元统计分析》. 高惠璇 著)
在实际应用中,只需知道主成分分析是实现因子模型的一种方法,而不必深究于它们之间是否有类似元素之于集合的绝对从属关系。
2. 主成分分析
2.1 什么是主成分分析 所谓主成分分析,其实就是找到原始变量(假设有p个)的一组线性变换,变换之后得到一组新的变量,而原始的数据记录在这组变换之下也纷纷映射成了新的记录。这组新的变量是如此的特殊,以至于我们只需要选取前m(m<p)个变量下的记录值,就可以很好的代替原来p个变量所表示的主要内容,因此,我们把这m个新的变量称为主成分。事实上,线性变换后的变量个数并没有改变,也就是说,主成分个数仍然是p个,只不过只需要前m个就足可以表示原始数据中所代表的全部信息了,故此达到了降维的目的。
那么,问题自然来了,m是如何选取的呢?换句话说,如何确定m个新变量下的记录所代表的信息可以近似代替p个原始变量所代表的信息呢?以二维空间为例(如图1),假如有n个点分布在平面直角坐标系中,这些点在x轴和y轴都有分量,当然我们可以用x和y的线性组合来描述这些点。但是我们发现,当把坐标轴逆时针旋转45°的时候,x轴变成了x1轴,y轴变成了y1轴,在新的坐标系下,原来的那些数据在x1轴上的投影分布很广,而在y1轴上几乎聚集在原点附近。那么我们是不是可以只用x1轴来描述这些点而舍弃y1轴呢?答案是肯定的。在原始坐标系下,数据需要两个指标来描述,而经过旋转坐标轴后,由于数据在旋转后的y轴上的分量很少,波动不大,大部分波动集中在x1轴,所以可以只用x1轴来刻画数据,这样就把原来的二维数据降维到用一维坐标来表示了。
接下来,就需要找到一个统计量来衡量数据在各个坐标轴上分布的分散程度。提到分散,很自然地想到了方差(好吧,也许不是那么自然。尴尬×3)。仍以二维为例,只要数据在x1轴上的方差在总的方差中占的比重足够大(例如,80%),那么就可以将y1轴代表的信息舍去。
以上是主成分分析的几何意义,放到高维空间中的道理是一样的,特别是数据维度高了之后,各个变量间的存在相关性的可能性增大,降维程度明显。
2.2 主成分求法
对于给定的数据集,假设有n个样本,每个样本有p个指标,则原数据集是n×p的矩阵。首先,先求出它的协方差阵(如果数据集有量纲上的不一致,此处应该求相关阵,其实相关阵也就是变量标准化后的协方差阵,均为p×p矩阵);其次,求出该协方差阵的特征值,共p个,并由大到小排列,每个特征值对应一个单位特征向量(p维),也可由计算得出;这些特征向量,就是每个主成分对应于原来p个指标的变换系数,亦即上述二维空间例子中的“逆时针旋转45°”操作;特征向量矩阵乘以原始指标,得到新的指标,即新的p个主成分,由于特征值是由大到小排列的,因此每个主成分对于整个数据集信息量的代表程度是由高到低排列的。换句话说,每个特征值对应一个单位特征向量,单位特征向量与原始变量的内积就是一个主成分。每个主成分所代表的信息量——方差贡献率——可以由它对应的特征值与所有特征值和的比值表示。当计算出前m个特征值的和与总特征值的和(值是维度p)的比值达到给定的标准,则可以用前m个特征值表示全部数据的信息,达到降维的目的(如图2)。
2.3 主成分的性质
性质1 每个主成分的方差为对应该特征向量的特征值,且主成分之间是互不相关的。
性质2 主成分的方差和为原总体的方差和(又称总惯量),即特征值之和等于协差阵对角线元素之和。
性质3 主成分(Zi)与原始变量(Xk)之间的相关系数为:第i大特征值的正平方根×第i大特征值对应特征向量的第k个系数÷Xk的标准差;并称此相关系数为因子负(载)荷量。
性质4 任一原始变量与所有主成分的相关系数平方和为1。
性质5 任一主成分与所有原始变量的相关系数的平方乘以对应原始变量的方差再求和,值为该主成分对应的特征值。
以上性质为协差阵下的性质,相关阵下可以得到相应的性质,略去。
2.4 主成分计算样品综合得分值的说明
设原数据矩阵中的第t行的记录为第t个样本在每个维度下的值,乘以每个主成分对应的单位特征向量为该样本在个主成分下的得分。要根据主成分分析方法对样本进行排序,显然需要将n个样本在p个维度下的记录值转化为一个得分值。根据上述说明,第一个主成分与原始变量的综合相关程度最强,在几何上来看,第一主成分是使数据信息损失最小、精度最高的一堆综合变量,因此可以用它构造排序评估指数。(在构造时需要注意第一特征值的特征向量必须同号,即与原始变量的相关程度相同,否则不能以此为评分指标)
此外,有些情况下,第一主成分的方差贡献率(即最大特征值与特征值之和(相关阵下为维度p)的比值)并不是足够的大,可能需要考虑根据前两个甚至更多的主成分计算综合得分,这时候需要有个权重,关于这个权重的得来,好像并没有什么固定的标准。可以乘以贡献率,也可以直接乘以特征值,然后再求和。严格来说,这样粗糙的操作并不符合权重定义,权重是需要满足一定的条件的,给一个参考,大家可以看一看,另外,欢迎大家提出新的观点以供交流。
3. 因子分析
3.1 什么是因子分析
上文在介绍主成分分析与因子分析区别的时候,已经有所体现:因子分析是作为一种模型的降维方法。举例来看:为了了解学生的学习能力,观测n个学生p个科目的学习成绩,对所有的成绩进行归纳分析,可以看出各个科目由两部分组成:
\[X_{i}=\alpha_{i}F+\varepsilon_{i}\]
其中F是对所有科目均起作用的公共因子,表示智能的高低;它的系数称为因子载荷,表示第i个科目在智能因子上的体现;最后一部分是某一科目特有的特殊因子。以上就是一个最简单的因子模型。进一步的可以推广到多个因子的情况,假如科目共有的因子有m个:
\[X_{i}=\alpha_{i1}F_{1}+\alpha_{i2}F_{2}+\cdots+\alpha_{im}F_{m}+\varepsilon_{i}\]
系数称为因子载荷,表示某科目在对应因子上的表现。因子分析的主要应用有两方面,一时寻找变量组合间的基本结构,将具有复杂关系的对象(变量或样品)综合为少数几个因子(不可观测的随机变量),以再现因子与原始变量之间的内在联系;二是用于分类,对p个变量或n个样品进行分类。
根据研究对象的不同(样品或者变量),因子分析可以分为R型和Q型。这里主要介绍R型,即研究指标(变量)之间的相关关系。
3.1 正交因子模型
设X是p维可观测的随机向量(代表样本的p个指标),则均值和协差阵已知。令设F是m维不可观测的随机向量(代表m个因子),均值为0,协差阵为单位对角阵(即因子间的协方差为0,因子方差为1)。另有p维特殊因子向量与F不相关,均值为0,协差阵为对角阵。
则正交因子模型如下:
\[X_{1}-\mu_{1}=\alpha_{11}F_{1}+\alpha_{12}F_{2}+\cdots+\alpha_{1m}F_{m}+\varepsilon_{1}\]
\[X_{2}-\mu_{2}=\alpha_{21}F_{1}+\alpha_{22}F_{2}+\cdots+\alpha_{2m}F_{m}+\varepsilon_{2}\]
\[\cdots \cdots \cdots \cdots\]
\[X_{p}-\mu_{p}=\alpha_{p1}F_{1}+\alpha_{p2}F_{2}+\cdots+\alpha_{pm}F_{m}+\varepsilon_{p}\]
从模型中可以看出,公共因子对所有的变量均起作用(系数不为零时),而特殊因子只对对应的变量起作用。模型中的矩阵A为带估计的系数矩阵,称为因子载荷矩阵。a_ij称为第i个变量在第j个因子上的载荷。
3.3 正交因子模型中各个量的统计意义
3.3.1 因子载荷的统计意义
变量X_{i}与因子F_{j}的协方差为a_{ij},如果变量是标准化之后的,则a_{ij}亦为它们之间的相关系数。在统计学上,把a_{ij}称为“权重”(联系主成分分析中计算综合得分的权重),反映了第i个变量在第j个公共因子上的相对重要性。
3.3.2 变量共同度的统计意义
因子载荷矩阵A中各行元素的平方和称为变量X_{i}的共同度。事实上,变量X_{i}的方差由两部分构成,一部分是全部公因子对变量X_{i}的方差所作出的贡献,称为公因子方差;第二部分是特殊因子产生的方差,称为剩余方差。显然,公因子方差反映了X_{i}对公因子的共同依赖程度,称其为变量X_{i}的共同度。
3.3.3公因子F_{j}方差贡献率的统计意义
因子载荷矩阵A中各列元素的平方和称为第j个因子对X的贡献。它反映了F_{j}对X的所有分量的总影响,是衡量F_{j}相对重要性的指标。
3.4 参数估计方法
因子分析的目的是用少数几个公共因子来描述p个相关变量间的协方差结构。在建立因子模型时,首先要估计因子载荷矩阵A和特殊因子的方差。在SPSS中,从【提取】对话框中的【方法】栏中可以看出,常用的方法是主成分、未加权最小平方、广义最小平方、最大似然、主轴因式分解、Alpha因式分解、映像因式分解等。最常用的就是主成分法。