1.主成分分析

本讲将介绍主成分分析(Principal Component Analysis,PCA),主成分分析是一种降维算法,它能将多个指标转换为少数几个主成分,这些主成分是原始变量的线性组合,且彼此之间互不相关,其能反映出原始数据的大部分信息。一般来说,当研究的问题涉及到多变量且变量之间存在很强的相关性时,我们可考虑使用主成分分析的方法来对数据进行简化。

在实际问题研究中,多变量问题是经常会遇到的。变量太多,无疑会增加分析问题的难度与复杂性,而且在许多实际问题中,多个变量之间是具有一定的相关关系的

因此,人们会很自然地想到,能否在相关分析的基础上,用较少的新变量代替原来较多的旧变量,而且使这些较少的新变量尽可能多地保留原来变量所反映的信息?

事实上,这种想法是可以实现的,主成分分析方法就是综合处理这种问题的一种强有力的工具。

主成分分析是把原来多个变量划为少数几个综合指标的一种统计分析方法。从数学角度来看,这是一种降维处理技术。

1.1 数据降维的作用

降维是将高维度的数据(指标太多)保留下最重要的一些特征,去除噪声和不重要的特征,从而实现提升数据处理速度的目的。

在实际的生产和应用中,降维在一定的信息损失范围内,可以为我们节省大量的时间和成本。降维也成为应用非常广泛的数据预处理方法。

降维具有如下一些优点:

1.2 主成分分析的思想

假设有 $n$个样本, $p$个指标,则可构成大小为 $n×p$的样本矩阵 $x$:

$$ x=\left[\begin{array}{cccc}x_{11} & x_{12} & \cdots & x_{1 p} \\x_{21} & x_{22} & \cdots & x_{2 p} \\\vdots & \vdots & \ddots & \vdots \\x_{n 1} & x_{n 2} & \cdots & x_{n p}\end{array}\right]=\left(x_{1}, x_{2}, \cdots, x_{p}\right) $$

假设我们想找到新的一组变量 $z_1, z_···,z_m(m\le p)$,且它们满足:

$$ \left\{\begin{array}{l} z_{1}=l_{11} x_{1}+l_{12} x_{2}+\cdots+l_{1 p} x_{p} \\ z_{2}=l_{21} x_{1}+l_{22} x_{2}+\cdots+l_{2 p} x_{p} \\ \quad \vdots \\ z_{m}=l_{m 1} x_{1}+l_{m 2} x_{2}+\cdots+l_{m p} x_{p} \end{array}\right. $$

系数 $l_{ij}$的确定原则: (1) $z_i$与 $z_j(i\ne j; i,j=1,2,···,m)$相互无关; (2) $z_1$是, $x_1,x_2,···,x_p$的一切线性组合中方差最大者; (2) $z_2$是与 $z_1$不相关的 $x_1,x_2,···,x_p$一而的所有线性组合中方差最大者; (3)依次类推, $z_m$是与 $z_1, z_2,···,z_{m-1}$不相关的 $x_1,x_2,···,x_p$所有线性组合中方差最大者。 (4)新变量指标 $z_1, z_2,···,z_{m}$分别称为原变量指标 $x_1,x_2,···,x_p$的第一、第m主成分。 (是不是看到了典型相关分析的影子)

1.3 PCA的计算步骤

假设有 n 个样本, p 个指标, 则可构成大小为 n \times p 的样本矩阵 x :

$$ x=\left[\begin{array}{cccc} x_{11} & x_{12} & \cdots & x_{1 p} \\ x_{21} & x_{22} & \cdots & x_{2 p} \\ \vdots & \vdots & \ddots & \vdots \\ x_{n 1} & x_{n 2} & \cdots & x_{n p} \end{array}\right]=\left(x_{1}, x_{2}, \cdots, x_{p}\right) $$

  1. 我们首先对其进行标准化处理: 按列计算均值 $\overline{x_{j}}=\frac{1}{n} \sum_{i=1}^{n} x_{i j}$ 和标准差 $S_{j}=\sqrt{\frac{\sum_{i=1}^{n}\left(x_{i j}-\overline{x_{j}}\right)^{2}}{n-1}}$ , 计算得 标准化数据 $X_{i j}=\frac{x_{i j}-\bar{x}{j}}{S{j}}$ , 原始样本矩阵经过标准化变为:

    $$ X=\left[\begin{array}{cccc} X_{11} & X_{12} & \cdots & X_{1 p} \\ X_{21} & X_{22} & \cdots & X_{2 p} \\ \vdots & \vdots & \ddots & \vdots \\ X_{n 1} & X_{n 2} & \cdots & X_{n p} \end{array}\right]=\left(X_{1}, X_{2}, \cdots, X_{p}\right) $$

  2. 计算标准化样本的协方差矩阵

    $$ R=\left[\begin{array}{cclc} r_{11} & r_{12} & \cdots & r_{1 p} \\ r_{21} & r_{22} & \cdots & r_{2 p} \\ \vdots & \vdots & \ddots & \vdots \\ r_{p 1} & r_{p 2} & \cdots & r_{p p} \end{array}\right] $$

    其中 $r_{i j}=\frac{1}{n-1} \sum_{k=1}^{n}\left(X_{k i}-\overline{X_{i}}\right)\left(X_{k j}-\overline{X_{j}}\right)=\frac{1}{n-1} \sum_{k=1}^{n} X_{k i} X_{k j}$ (注意: 上面 12 两步可直接合并为一步: 直接计算 x 矩阵的样本相关系数矩阵)

    $$ R=\frac{\sum_{k=1}^{n}\left(x_{k i}-\overline{x_{i}}\right)\left(x_{k j}-\overline{x_{j}}\right)}{\sqrt{\sum_{k=1}^{n}\left(x_{k i}-\overline{x_{i}}\right)^{2} \sum_{k=1}^{n}\left(x_{k j}-\overline{x_{j}}\right)^{2}}} $$

  3. 计算 $\boldsymbol{R}$ 的特征值和特征向量 特征值: $\lambda_{1} \geq \lambda_{2} \geq \cdots \geq \lambda_{p} \geq 0 \quad\left(R\right. 是半正定矩阵,且 \left.\operatorname{tr}(R)=\sum_{k=1}^{p} \lambda_{k}=p\right)$ 特征向量: $a_{1}=\left[\begin{array}{c}a_{11} \\ a_{21} \\ \vdots \\ a_{p 1}\end{array}\right], a_{2}=\left[\begin{array}{c}a_{12} \\ a_{22} \\ \vdots \\ a_{p 2}\end{array}\right], \cdots, a_{p}=\left[\begin{array}{c}a_{1 p} \\ a_{2 p} \\ \vdots \\ a_{p p}\end{array}\right]$

    (软件都会帮我们算好, 不用自己算, Matlab 中计算特征值和特征向量的函数: eig(R) )

  4. 计算主成分贡献率以及累计贡献率 $贡献率 =\frac{\lambda_{i}}{\sum_{k=1}^{p} \lambda_{k}}(i=1,2, \cdots, p) \quad$ $累计贡献率 =\frac{\sum_{k=1}^{i} \lambda_{\mathrm{k}}}{\sum_{k=1}^{p} \lambda_{k}}(i=1,2, \cdots, p)$

  5. 写出主成分 一般取累计贡献率超过80%的特征值所对应的第一、第二第 $m(m \le p)$个主成分: $F_1=a_{1i}X_1+a_{2i}X_2+···+a_{pi}X_p (i=1,2,···,m)$

  6. 根据系数分析主成分代表的意义 对于某个主成分而言,指标前面的系数越大,代表该指标对于该主成分的影响越大。

  7. 利用主成分的结果进行后续的分析 (1)主成分得分:可用于评价类模型吗?(千万别用里) (2)主成分可用于聚类分析(方便画图) (3)主成分可用于回归分析

1.4 一个简单的例子:

例如,某人要做一件上衣要测量很多尺寸,如身长、袖长、胸围、腰围、肩宽、肩厚等十几项指标,但某服装厂要生产一批新型服装绝不可能把尺寸的型号分得过多?而是从多种指标中综合成几个少数的综合指标,做为分类的型号,利用主成分分析将十几项指标综合成3项指标,一项是反映长度的指标,一项是反映胖瘦的指标,一项是反映特殊体型的指标。

在制定服装标准的过程中,对128名成年男子的身材进行了测量,每人测得的指标中含有这样六项:身高(x1)、坐高(x2) 、胸围(x3) 、手臂长(x4)、肋围(x5)和腰围(x6) 。所得样本相关系数矩阵(对称矩阵哦)列于下表。

注意:本题给我们的数据直接就是样本相关系数矩阵,一般来说,大家自己建模的时候,得到的数据是最原始的数据(每一列是指标,每一行是样本)。

Untitled

经过计算,相关系数矩阵的特征值、相应的特征向量以及贡献率列于下表:

Untitled

从表中可以看到前三个主成分的累计贡献率达85.9%,因此可以考虑只取前面三个主成分,它们能够很好地概括原始变量。

$$ \begin{array}{l} F_{1}=0.469 X_{1}+0.404 X_{2}+0.394 X_{3}+0.408 X_{4}+0.337 X_{5}+0.427 X_{6} \\ F_{2}=-0.365 X_{1}-0.397 X_{2}+0.397 X_{3}-0.365 X_{4}+0.569 X_{5}+0.308 X_{6} \\ F_{3}=0.092 X_{1}+0.613 X_{2}-0.279 X_{3}-0.705 X_{4}+0.164 X_{5}+0.119 X_{6} \end{array} $$

$X_{i}$ 均是标准化后的指标, $x_{1}$ : 身高、坐高、胸围、手臂长、肋围和腰围

第一主成分 $F_{1}$ 对所有 (标准化) 原始变量都有近似相等的正载荷, 故称第一主成分为(身材)大小成分。

第二主成分 $F_{2}$ 在 $X_{3}, X_{5}, X_{6}$ 上有中等程度的正载荷, 而在 $X_{1}, X_{2}, X_{4}$ 上有 中等程度的负载荷, 称第二主成分为形状成分(或胖瘦成分)。

第三主成分 $F_{3}$ 在 $X_{2}$ 上有大的正载荷, 在 $X_{4}$ 上有大的负载荷, 而在其余 变量上的载荷都较小, 可称第三主成分为臂长成分。

注: 由于第三主成分的贡献率不高 $(7.65 \%)$ 且实际意义也不太重要, 因此我们也可以考虑只取前两个主成分进行分析。

在主成分分析中,我们首先应保证所提取的前几个主成分的累计贡献率达到一个较高的水平,其次对这些被提取的主成分必须都能够给出符合实际背景和意义的解释。

主成分的解释其含义一般多少带有点模糊性,不像原始变量的含义那么清楚、确切,这是变量降维过程中不得不付出的代价。因此,提取的主成分个数m通常应明显小于原始变量个数p(除非p本身较小),否则维数降低的“利”可能抵不过主成分含义不如原始变量清楚的“弊”。如果原始变量之间具有较高的相关性,则前面少数几个主成分的累计贡献率通常就能达到一个较高水平,也就是说,此时的累计贡献率通常较易得到满足。

主成分分析的困难之处主要在于要能够给出主成分的较好解释,所提取的主成分中如有一个主成分解释不了,整个主成分分析也就失败了。主成分分析是变量降维的一种重要、常用的方法,简单的说,该方法要应用得成功,一是靠原始变量的合理选取,二是靠“运气”。

——参考教材:《应用多元统计分析》王学民

2 因子分析模型

因子分析由斯皮尔曼在1904年首次提出,其在某种程度上可以被看成是主成分分析的推广和扩展。因子分析法通过研究变量间的相关系数矩阵,把这些变量间错综复杂的关系归结成少数几个综合因子,由于归结出的因子个数少于原始变量的个数,但是它们又包含原始变量的信息,所以,这一分析过程也称为降维。由于因子往往比主成分更易得到解释,故因子分析比主成分分析更容易成功,从而有更广泛的应用。本讲的前面部分将简要介绍因子分析模型的数学原理,在最后的应用部分,我们将举一个实例帮助大家理解,大家可以把重点放在最后的应用上。

2.1.1 因子分析和主成分分析的对比

假设有 $n$个样本, $p$个指标, 则可构成大小为 $n \times p$ 的样本矩阵 $x=\left[\begin{array}{cccc}x_{11} & x_{12} & \cdots & x_{1 p} \\ x_{21} & x_{22} & \cdots & x_{2 p} \\ \vdots & \vdots & \ddots & \vdots \\ x_{n 1} & x_{n 2} & \cdots & x_{n p}\end{array}\right]=\left(x_{1}, x_{2}, \cdots, x_{p}\right)$

主成分分析: $x_{1}, x_{2}, \cdots, x_{p} \Rightarrow z_{1}, z_{2}, \cdots, z_{m}(m \leq p) , 且它们满足: \left\{\begin{array}{c}z_{1}=l_{11} x_{1}+l_{12} x_{2}+\cdots+l_{1 p} x_{p} \\ z_{2}=l_{21} x_{1}+l_{22} x_{2}+\cdots+l_{2 p} x_{p} \\ \vdots \\ z_{m}=l_{m 1} x_{1}+l_{m 2} x_{2}+\cdots+l_{m p} x_{p}\end{array}\right. z_{1}, z_{2}, \cdots, z_{m}$ 是 m 个主成分, 可以看出, 主成分实际上就是各指标的线性组合。

因子分析: $x_{1}, x_{2}, \cdots, x_{p} \Rightarrow f_{1}, f_{2}, \cdots, f_{m}(m \leq p) , 且它们满足: \left\{\begin{array}{c}x_{1}=u_{1}+a_{11} f_{1}+a_{12} f_{2}+\cdots+a_{1 m} f_{m}+\varepsilon_{1} \\ x_{2}=u_{2}+a_{21} f_{1}+a_{22} f_{2}+\cdots+a_{2 m} f_{m}+\varepsilon_{2} \\ \vdots \\ x_{p}=u_{p}+a_{p 1} f_{1}+a_{p 2} f_{2}+\cdots+a_{p m} f_{m}+\varepsilon_{p}\end{array}\right. f_{1}, f_{2}, \cdots, f_{m}$ 被称为公共因子, $\varepsilon_{i}$ 为特殊因子, 各因子的线性组合构成了原始的指标。 (有点像回归, 回归中自变量是已知的, 因子分析是只知道因变量, 要我们来找自变量)

其他主要区别: 1.主成分分析只是简单的数值计算,不需要构造一个模型,几乎没什么 假定;而因子分析需要构造一个因子模型,并伴随几个关键性的假定。 2.主成分的解是唯一的,而因子可有许多解。 因子解释成功的可能性要远大于主成分解释成功的可能性。

2.2 因子分析的实例

【例1】林登(Linden)根据他收集的来自139名运动员的比赛数据,对第二次世界大战以来奥林匹克十项全能比赛的得分作了因子分析研究。这十个全能项目为:100米跑(x1),跳远(x2),铅球(x3),跳高(x4),400米跑(x5),11米跨栏(x6),铁饼(x7),撑杆跳高(x8),标枪(x9),1500米跑(x10)。经标准化后所作的因子分析表明,十项得分基本上可归结于他们的短跑速度、爆发性臂力、爆发性腿力和耐力这四个方面,每一方面都称为一个因子。十项得分与这四个因子之间的关系可以描述为如下的因子模型:

$$ x_i=μ_i+a_{i1}f_1+a_{i2}f_2+a_{i3}f_3+a_{i4}f_4+ε_i, i=1,2,⋯,10 $$

其中f1, f2, f3, f4表示四个因子,称为公共因子(common factor),aij称为xi在因子fj上的载荷(loading),μi是xi的均值,εi是xi不能被四个公共因子解释的部分,称之为特殊因子(specific factor)。

操作步骤:

Untitled

2.2.1 统计 •单变量描述:输出参与分析的每个原始变量的均值、标准差和有效取值个数。 •初始解:输出未经过旋转直接计算得到的初始公因子、初始特征值和初始方差贡献率等信息。

相关性矩阵 •**系数:**输出初始分析变量间的相关系数矩阵。 •显著性水平:输出每个相关系数对于单侧假设检验的显著性水平。 •决定因子:输出相关系数矩阵的行列式。 •:输出相关系数的逆矩阵。 •再生:输出因子分析后的相关矩阵,还给出原始相关与再生相关之间的差值,即残差。 •反映像:输出反映像相关矩阵,包括偏相关系数的负数。 • **KMO检验和巴特利特球形检验:**进行因子分析前要对数据进行KMO检验和巴特利特球形检验。

KMO检验和巴特利特球形检验

KMO检验 KMO检验是Kaiser, Meyer和Olkin提出的,该检验是对原始变量之间的简单相关系数和偏相关系数的相对大小进行检验,主要应用于多元统计的因子分析。KMO统计量是取值在0和1之间,当所有变量间的简单相关系数平方和远远大于偏相关系数平方和时,KMO值越接近于1,意味着变量间的相关性越强,原有变量越适合作因子分析;当所有变量间的简单相关系数平方和接近0时,KMO值越接近于0,意味着变量间的相关性越弱,原有变量越不适合作因子分析。

其中,Kaiser给出一个KMO检验标准:KMO>0.9,非常适合;0.8<KMO<0.9,适合;0.7<KMO<0.8, 一般;0.6<KMO<0.7,不太适合;KMO<0.5,不适合。

巴特利特球形检验 巴特利特球形检验是一种检验各个变量之间相关性程度的检验方法。一般在做因子分析之前都要进行巴特利特球形检验,用于判断变量是否适合用于做因子分析。巴特利特球形检验是以变量的相关系数矩阵为出发点的。它的原假设是相关系数矩阵是一个单位阵(不适合做因子分析,指标之间的相关性太差,不适合降维),即相关系数矩阵对角线上的所有元素都是1,所有非对角线上的元素都为0。巴特利特球形检验的统计量是根据相关系数矩阵的行列式得到的。

如果该值较大,且其对应的p值小于用户心中的显著性水平(一般为0.05),那么应该拒绝原假设,认为相关系数不可能是单位阵,即原始变量之间存在相关性,适合于作因分析。相反不适合作因子分析。

注意:用SPSS做因子分析时,在查看器中若得不到KMO检验和Bartlett检验结果,则说明你的样本量小于指标数了,需要增加样本量或者减少指标个数再来进行因子分析。

Untitled

注意:第一次运行因子分析的结果一般作为参考,首先我们要确定原始数据是否适合进行因子分析,即能否通过KMO检验和巴特利特球形检验。

**KMO检验标准:**KMO>0.9,非常适合因子分析;0.8<KMO<0.9,适合; 0.7<KMO<0.8,一般;0.6<KMO<0.7,不太适合;KMO<0.5,不适合。

**巴特利特球形检验:**如果其统计量对应的p值小于用户心中的显著性水平(一般取0.05),那么应该拒绝原假设,认为相关系数不可能是单位阵,即原始变量之间存在相关性,适合于作因子分析;否则不适合作因子分析。

(1)KMO值等于0.909,说明数据适合进行因子分析; (2)巴特利特球形检验的p值等于0.000,小于0.05,说明我们在95%的置信水平下拒绝原假设,即我们认为数据适合进行因子分析。

2.2.2 确定因子的数目:

注意:第一次运行因子分析的结果一般作为参考,下面我们需要根据第一次运行的结果来确定公共因子的个数。

Untitled

**碎石检验(scree test)**是根据碎石图来决定因素数的方法。Kaiser提出,可通过直接观察特征值的变化来决定因素数。当某个特征值较前一特征值的值出现较大的下降,而这个特征值较小,其后面的特征值变化不大,说明添加相应于该特征值的因素只能增加很少的信息,所以前几个特征值就是应抽取的公共因子数。

从碎石图可以看出,前两个因子对应的特征值的变化较为陡峭,从第三个因子开始,特征值的变化较为平坦,因此我们应选择两个因子进行分析。(SPSS中文版翻译成了组件,实际应翻译为因子)

2.2.3 调整因子个数重新计算:

Untitled

这里选择的因子数就是刚刚我们通过碎石图得到的因子数。(注意:碎石图得到的因子数只起到参考作用;在因子分析应用于某些专业问题上时,可能事先我们已经知道了最后要确定的因子数,这时候碎石图的意义就不大了)