6.4 因子分析

因子分析是一种降维的方法,通过探寻变量的潜在结构,将其归纳为较少的因子,从而实现降维的目的。

6.4.1 正交因子模型

设X为可观测的p维随机向量,其均值为\(\mu\),协方差矩阵为\(\Sigma\),则正交因子模型可被表示为

\[ \begin{array}{c} X=AF+\mu+\varepsilon \\ E(F)=0, \; Cov(F)=I_m \\ E(\varepsilon)=0, \; Cov(\varepsilon)=\Psi=diag(\psi_1,...,\psi_2) \\ Cov(F,\varepsilon)=0 \end{array} \tag{6.48} \]

可通过中心化处理而消去\(\mu\)

其中\(A\)\(p \times m\)的因子载荷矩阵,\(F=(F_1, ...,F_m)'\)公共因子向量,\(\varepsilon=(\varepsilon_1,...,\varepsilon_p)'\)特殊因子向量。

则X的协差阵可表示为

\[ \Sigma = Cov(X)=Cov(AF+\mu+\varepsilon)=ACov(F)A'+Cov(\varepsilon)=AA'+\Psi \tag{6.49} \]

若X已进行标准化处理,则

\[ R=AA'+\Psi \tag{6.50} \]

由于\(\Psi\)是对角阵,则\(\Sigma\)\(R\)的非对角线元素全部由因子载荷矩阵A决定

  1. 因子载荷矩阵的统计意义

\[ \begin{aligned} Cov(X,F)&=E[X-E(X)][F-E(F)]' \\ &=E[(X-\mu)F'] \\ &= E[(AF+\varepsilon)F'] \\ &= AE(FF')+E(\varepsilon F') \\ &= A \end{aligned} \tag{6.51} \]

由此可知,对于原始数据而言,因子载荷矩阵A记录了X与F之间的协方差,即\(a_{ij}=Cov(X_i,F_j)\)

若对原始数据X进行标准化处理得到\(X^*\),则

\[ \rho_{ij}=\frac{Cov(X_i,F_j)}{\sqrt{Var(X_i)}\sqrt{Var(F_j)}}=Cov(X_i, F_j)=a_{ij} \tag{6.52} \]

  1. 变量共同度的统计意义

由式(6.48)可得

\[ Var(X_i)=\sigma_{ii}=\sum_{j=1}^m a_{ij}^2+\psi_i:=h_i+\psi_i \tag{6.53} \]

其中\(h_i\)表现为全部公共因子对\(X_i\)的变异程度的解释,反映了\(X_i\)对公共因子的依赖程度,称为变量共同度,即因子载荷矩阵A的行元素平方和

  1. 公共因子方差贡献的统计意义

\[ \sum_{i=1}^p Var(X_i) = \sum_{i=1}^p a_{i1}^2Var(F_1)+...+\sum_{i=1}^pa_{im}^2Var(F_m)+\sum_{i=1}^pVar(\varepsilon):=\sum_{j=1}^m q_j+\sum_{i=1}^p \psi_i \tag{6.54} \]

其中\(q_j=\sum_{i=1}^p a_{ij}^2\),是因子载荷矩阵的列元素之和,反映了第j个公共因子对变量X的贡献及其相对重要性。进一步地,称\(\frac{q_j}{\sum_{i=1}^pVar(X_i)}\)为公共因子\(F_j\)所解释的总方差的比例。

性质:

  1. 因子分析具有尺度不变性

    即对随机向量X的各个分量进行尺度放缩\(X^*=CX, \; C=diag(c_1,...,c_p)\)后的随机向量\(X^*\)仍满足正交因子模型的条件,且公共因子\(F\)不变。

\(CX=C\mu+CAF+C\varepsilon\),可将\(CA\)视作\(A^*\)因此公共因子\(F\)不变,变的是载荷矩阵

  1. 因子载荷矩阵不唯一

    对于\(AF\),可以有任一正交矩阵\(\Gamma\),使得\(AF=(A\Gamma)(\Gamma'F)\),其中可将\(A\Gamma\)视作\(A^*\),将\(\Gamma'F\)视作\(F^*\),进行因子旋转后仍保持正交因子模型的条件。

正交矩阵的作用相当于进行旋转

6.4.2 参数估计

在参数估计前,得先判断变量之间是否存在足够强的相关关系来进行因子分析。

  1. KMO检验

    KMO检验用于检查变量间的相关性和偏相关性。KMO统计量的取值越接近1,表明变量间的相关性越强,偏相关性越弱,因子分析的效果越好。KMO统计量的值一般在0.7以上比较适合做因子分析。

R语言:KMO()

  1. Bartlett球形检验

    Bartlett球形检验的原假设是变量的相关阵是单位阵,当拒绝原假设时,则说明变量间具有相关性,因子分析有效。

R语言:psych::cortest.bartlett()

6.4.2.1 主成分法

\(\Sigma\)的特征值为\(\lambda_1 \geq \lambda_2 \geq ... \geq \lambda_p \geq 0\),对\(\Sigma\)进行谱分解

\[ \begin{aligned} \Sigma &= P\Lambda P' \\ &= \sum_{i=1}^p \lambda_ip_ip_i' \\ &= \sum_{i=1}^m \lambda_ip_ip_i'+\sum_{i=m+1}^p \lambda_ip_ip_i' \\ &\approx \begin{pmatrix} \sqrt{\lambda_1}p_1 & ... & \sqrt{\lambda_m}p_m \end{pmatrix} \begin{pmatrix} \sqrt{\lambda_1}p_1' \\ \vdots \\ \sqrt{\lambda_m}p_m' \end{pmatrix} + \begin{pmatrix} \psi_1 & \cdots & 0 \\ \vdots & \ddots & \vdots \\ 0 & \cdots & \psi_p \end{pmatrix} \\ &= \hat A \hat A'+\hat \Psi \end{aligned} \tag{6.55} \]

\(\Sigma\)进行谱分解,取特征值较大的前m个特征值及对应的特征向量构成因子载荷矩阵A,忽视掉其余较小的特征值及对应的特征向量。其中的\(\psi_i\)则通过\(\hat \psi_i = \sigma_{ii}-\sum_{j=1}^m a_{ij}^2\)计算得到。

此时因子载荷矩阵中的每一列都是\(\sqrt{\lambda_i}p_i\)。特别的,当\(\lambda_{m+1}=...=\lambda_p=0\)时,此时有\(\Sigma=\hat A \hat A'\),表明\(\hat A=P\Lambda^{\frac{1}{2}}\)就是真实的载荷矩阵

当然也可以对变量进行标准化后利用主成分法进行求解。此时公共因子\(F_j\)的贡献为\(q_j=\sum_{i=1}^p \hat a_{ij}^2=||\sqrt{\lambda_j}p_j||^2 = \lambda_j\)

m的选择可参考主成分分析

6.4.2.2 主因子法

由于因子具有尺度不变性,对X进行标准化后得到

\[ R=AA'+\Psi \tag{6.56} \]

\(R\)\(\Psi\)都已知,则称\(R^*=R-\Psi=AA'\)为“约相关矩阵”。

其中\(R\)可表示为

\[ \begin{cases} \rho_{ij}=a_{i1}a_{j1}+a_{i2}a_{j2}+...+a_{im}a_{jm} \quad &1 \leq i \neq j \leq q \\ \rho_{ii} = a_{i1}^2 + a_{i2}^2 + ...+a_{im}^2+\psi_i = h_i+\psi_i=1 \quad &i=1,2,...,p \end{cases} \tag{6.57} \]

\(R^*\)可表示为

\[ \begin{cases} \rho_{ij}=a_{i1}a_{j1}+a_{i2}a_{j2}+...+a_{im}a_{jm} \quad &1 \leq i \neq j \leq q \\ \rho_{ii} = a_{i1}^2 + a_{i2}^2 + ...+a_{im}^2= h_i \quad &i=1,2,...,p \end{cases} \tag{6.58} \]

关键点为\(h_i=1-\psi_i\)

\(R^*\)的特征值为\(\lambda_1^* \geq \lambda_2^* \geq ... \geq \lambda_p^* \geq 0\),对应的特征向量为\(p_i^*\),此时可对\(R^*\)进行谱分解,得到

\[ R^*=R-\Psi=\hat A \hat A' \approx \begin{pmatrix} \sqrt{\lambda_1^*}p_1^* & ... & \sqrt{\lambda_m^*}p_m^* \end{pmatrix} \begin{pmatrix} \sqrt{\lambda_1^*}p_1^{*'} \\ \vdots \\ \sqrt{\lambda_m^*}p_m^{*'} \end{pmatrix} \tag{6.59} \]

此时\(\hat A = \begin{pmatrix} \sqrt{\lambda_1^*}p_1^* & ... & \sqrt{\lambda_m^*}p_m^* \end{pmatrix}\),特殊因子方差的估计为\(\hat \psi_i = 1-\sum_{j=1}^m \hat a_{ij}^2\)

主因子法的前提是得知道\(\Psi\),但在实际中\(\Psi\)一般未知,因此可根据样本进行估计。也可根据迭代算法,根据初始值\(\Psi^{(0)}\)开始迭代,得到\(\hat A^{(1)}\),再根据\(\hat A^{(1)}\)得到\(\Psi^{(1)}\),不断重复,直至收敛

6.4.2.3 极大似然法

假设公共因子\(F \sim N_m(0,I)\),特殊因子\(\varepsilon\sim N_p(0,\Psi)\),且相互独立,则\(X \sim N_p(\mu, \Sigma)\)。构造似然函数如下所示

\[ L(\mu, \Sigma)=(2\pi)^{-\frac{np}{2}}|\Sigma|^{-\frac{n}{2}}\exp[-\frac{1}{2}\sum_{i=1}^n(X_{(i)}-\mu)'\Sigma^{-1}(X_{(i)}-\mu)] \tag{6.60} \]

其中\(\mu\)的极大似然估计为\(\hat \mu = \bar X\),回代可得

\[ \begin{aligned} L(\Sigma)&=(2\pi)^{-\frac{np}{2}}|\Sigma|^{-\frac{n}{2}}\exp[-\frac{1}{2}\sum_{i=1}^n(X_{(i)}-\bar X)'\Sigma^{-1}(X_{(i)}-\bar X)] \\ &= (2\pi)^{-\frac{np}{2}}|\Sigma|^{-\frac{n}{2}}\exp[-\frac{1}{2}tr(\sum_{i=1}^n(X_{(i)}-\bar X)'\Sigma^{-1}(X_{(i)}-\bar X))] \\ &= (2\pi)^{-\frac{np}{2}}|\Sigma|^{-\frac{n}{2}}\exp[-\frac{1}{2}tr(\sum_{i=1}^n(X_{(i)}-\bar X)(X_{(i)}-\bar X)'\Sigma^{-1})] \\ &= (2\pi)^{-\frac{np}{2}}|\Sigma|^{-\frac{n}{2}}\exp[-\frac{1}{2}tr(D\Sigma^{-1})] \end{aligned} \tag{6.61} \]

其中\(D=\sum_{i=1}^n(X_{(i)}-\bar X)(X_{(i)}-\bar X)'\)为样本离差阵。

根据\(\Sigma = AA'+\Psi\),则

\[ L(A,\Psi)=(2\pi)^{-\frac{np}{2}}|AA'+\Psi|^{-\frac{n}{2}}\exp[-\frac{1}{2}tr(D(AA'+\Psi)^{-1})] \tag{6.62} \]

求解\(\hat A\)\(\hat \Psi\)使得对数似然函数\(\ln L(A,\Psi)\)达到最大即可。

6.4.2.4 R语言实现

R语言factanal()psych::fa()

6.4.3 因子旋转

前面已经介绍了正交因子模型的因子载荷矩阵不唯一。为了因子载荷矩阵的可解释性,可对因子载荷矩阵进行旋转,常用的方法有最大方差旋转法,该方法使得各列载荷向量的方差尽可能地大,从而在一列载荷向量上同时出现较大的载荷与较小的载荷,则该因子主要表现为较大的载荷。

6.4.4 因子得分

Bartlett因子得分和Thomson因子得分。

6.4.5 因子分析和主成分分析的区别与联系

区别:

  1. 主成分分析中主成分是变量的线性组合;而因子分析中自变量是因子的线性组合

  2. 主成分分析中的主成分不可旋转且唯一,在解释性上稍差;因子分析中的因子不唯一,可以通过因子旋转来获取较好的解释性

  3. 主成分分析只能通过对协方差阵进行特征分解来获取主成分;因子分析能够通过主成分法、主因子法、极大似然法等多种方法进行估计

联系:

  1. 二者都是以降维为目的,希望通过少量彼此不相关的主成分或因子来反映原始变量的绝大部分信息

  2. 二者分析的变量间均需要具有一定的相关性

  3. 二者都可运用原始变量的协差阵或相关阵进行求解