因子分析原理及其python实现

家电修理 2023-07-16 19:16www.caominkang.com电器维修

因子分析(factor analysis)
  • 一、概述
  • 二、因子分析与主成分对比
  • 三、因子分析原理
  • 四、因子分析模型的假设
  • 五、因子载荷矩阵的统计意义
  • 六、因子模型的性质
  • 七、参数估计
  • 七、因子旋转方法
  • 八、因子得分
  • 九、数据检验
    • 9.1 KMO检验
    • 9.2 巴特利特球形检验
    • 9.3 碎石检验
  • 十、应用
  • 十一、实现步骤流程
  • 十二、python实现因子分析

本文参考数学建模清风老师可见编写。 一、概述

因子分析由斯皮尔曼在1904年提出,其在某种程度上可以被看成是主成分分析的推广和扩展。因子分析法通过研究变量间的相关系数矩阵,把这些变量间错综复杂的关系归结成少数几个综合因子,由于归结出的因子个数少于原始变量的个数,它们又包含原始变量的信息,所以,这一分析过程也称为降维。由于因子往往比主成分更易得到解释,故因子分析比主成分分析更容易成功,从而有更广泛的应用。

基本思想 根据相关性大小把变量分组,使得同组内的变量之间相关性较高,但不同组的变量不相关或相关性较低,每组变量代表一个基本结构一即公共因子。
两个核心问题 一是如何构造因子变量,二是如何对因子变量进行命名解释。
因子分析类型 R型因子分析与Q型因子分析,就像聚类分析分为R型和Q型一样,R型的因子分析是对变量作因子分析,Q型因子分析是对样品作因子分析。

二、因子分析与主成分对比

假设有 n n n 个样本, p p p 个指标, 则可构成大小为 n × p n times p n×p 的样本矩阵 x = [ x 21 x 22 ⋯ x 2 p ⋮ ⋮ ⋱ ⋮ x n 1 x n 2 ⋯ x n p ] = ( x 1 , x 2 , ⋯   , x p ) x=left[begin{array}{}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=⎣ ⎡​x21​⋮xn1​​x22​⋮xn2​​⋯⋱⋯​x2p​⋮xnp​​⎦ ⎤​=(x1​,x2​,⋯,xp​)

主成分分析 x 1 , x 2 , ⋯   , x p ⇒ z 1 , z 2 , ⋯   , z m ( m ≤ p ) x_{1}, x_{2}, cdots, x_{p} Rightarro z_{1}, z_{2}, cdots, z_{m}(m leq p) x1​,x2​,⋯,xp​⇒z1​,z2​,⋯,zm​(m≤p), 且它们满足: { z 1 = l 11 x 1 + l 12 x 2 + ⋯ + l 1 p x p z 2 = l 21 x 1 + l 22 x 2 + ⋯ + l 2 p x p ⋮ z m = l m 1 x 1 + l m 2 x 2 + ⋯ + l m p x p left{begin{array}{} 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. ⎩ ⎨ ⎧​z1​=l11​x1​+l12​x2​+⋯+l1p​xp​z2​=l21​x1​+l22​x2​+⋯+l2p​xp​⋮zm​=lm1​x1​+lm2​x2​+⋯+lmp​xp​​

z 1 , z 2 , ⋯   , z m z_{1}, z_{2}, cdots, z_{m} z1​,z2​,⋯,zm​ 是 m m m 个主成分, 可以看出, 主成分实际上就是各指标的线性组合。

因子分析 x 1 , x 2 , ⋯   , x p ⇒ f 1 , f 2 , ⋯   , f m ( m ≤ p ) x_{1}, x_{2}, cdots, x_{p} Rightarro f_{1}, f_{2}, cdots, f_{m}(m leq p) x1​,x2​,⋯,xp​⇒f1​,f2​,⋯,fm​(m≤p), 且它们满足: { x 1 = u 1 + a 11 f 1 + a 12 f 2 + ⋯ + a 1 m f m + ε 1 x 2 = u 2 + a 21 f 1 + a 22 f 2 + ⋯ + a 2 m f m + ε 2 ⋮ x p = u p + a p 1 f 1 + a p 2 f 2 + ⋯ + a p m f m + ε 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. ⎩ ⎨ ⎧​x1​=u1​+a11​f1​+a12​f2​+⋯+a1m​fm​+ε1​x2​=u2​+a21​f1​+a22​f2​+⋯+a2m​fm​+ε2​⋮xp​=up​+ap1​f1​+ap2​f2​+⋯+apm​fm​+εp​​
f 1 , f 2 , ⋯   , f m f_{1}, f_{2}, cdots, f_{m} f1​,f2​,⋯,fm​ 被称为公共因子, ε i varepsilon_{i} εi​ 为特殊因子, 各因子的线性组合构成了原始的指标。
(有点像回归, 回归中自变量是已知的, 因子分析是只知道因变量, 要我们来找自变量)
其他主要区别:

  1. 主成分分析只是简单的数值计算, 不需要构造一个模型, 几平没什么假定;而因子分析需要构造一个因子模型,并伴随几个关键性的假定。
  2. 主成分的解是唯一的,而因子可有许多解。
  3. 主成分分析把方差划分为不同的正交成分,而因子分析则把方差划归为不同的起因因子
  4. 因子分析中特征值的计算只能从相关系数矩阵出发,且必须将主成分转换成因子。

联系

  1. PCA和因子分析都是数据降维的重要方法,都对原始数据进行标准化处理,都消除了原始指标的相关性对综合评价所造成的信息重复的影响,都属于因素分析法,都基于统计分析方法;
  2. 二者均应用于高斯分布的数据,非高斯分布的数据采用ICA算法;
  3. 二者构造综合评价时所涉及的权数具有客观性,在原始信息损失不大的前提下,减少了后期数据挖掘和分析的工作量。

因子解释成功的可能性要远大于主成分解释成功的可能性。

PCA与FA对比图解


主成分(PC1和PC2)是自变量(1-5)的线性组合。形成线性组合的权重都是通过最大化各主成分所解释的方差来获得,还要保证个主成分间不相关。相反,因子(F1、F2)被当做是自变量的结构基础或“原因”,而不是它们的线性组合。代表自变量方差的误差(e1到e5)无法用因子来解释。图中的椭圆表示因子和误差无法直接观测,可通过变量间的相互关系推导得到。

三、因子分析原理

假设大小为 n × p n times p n×p 的随机向量 x = ( x 1 , x 2 , ⋯   , x p ) x=left(x_{1}, x_{2}, cdots, x_{p}right) x=(x1​,x2​,⋯,xp​) 的均值 u = ( u 1 , u 2 , ⋯ u p ) u=left(u_{1}, u_{2}, cdots u_{p}right) u=(u1​,u2​,⋯up​), 协方差矩阵 Σ p × p = ( σ i j ) Sigma_{p times p}=left(sigma_{i j}right) Σp×p​=(σij​)
因子分析的一般模型为: { x 1 = u 1 + a 11 f 1 + a 12 f 2 + ⋯ + a 1 m f m + ε 1 x 2 = u 2 + a 21 f 1 + a 22 f 2 + ⋯ + a 2 m f m + ε 2 ⋮ x p = u p + a p 1 f 1 + a p 2 f 2 + ⋯ + a p m f m + ε p left{ begin{array}{}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} \ quad 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. ⎩ ⎨ ⎧​x1​=u1​+a11​f1​+a12​f2​+⋯+a1m​fm​+ε1​x2​=u2​+a21​f1​+a22​f2​+⋯+a2m​fm​+ε2​⋮xp​=up​+ap1​f1​+ap2​f2​+⋯+apm​fm​+εp​​

其中 f 1 , f 2 , ⋯   , f m f_{1}, f_{2}, cdots, f_{m} f1​,f2​,⋯,fm​ 被称为公共因子, ε i ( i = 1 , 2 , ⋯   , p ) varepsilon_{i}(i=1,2, cdots, p) εi​(i=1,2,⋯,p) 为特殊因子, 它们都是无法观测的随机变量。
公共因子 f 1 , f 2 , ⋯   , f m f_{1}, f_{2}, cdots, f_{m} f1​,f2​,⋯,fm​ 出现在每一个原始变量 x i ( i = 1 , 2 , ⋯   , p ) x_{i}(i=1,2, cdots, p) xi​(i=1,2,⋯,p) 的表达式中, 可以理解为原始变量共同 拥有的某些特征 (具有共同的影响因素) ; 每个特殊因子 ε i ( i = 1 , 2 , ⋯   , p varepsilon_{i}(i=1,2, cdots, p εi​(i=1,2,⋯,p )仅仅出现在与之相应的 第 i i i 个原始变量 x i x_{mathrm{i}} xi​ 的表达式中, 它只对这个原始变量起作用。
上面这个式子我们用矩阵形式可记为:
x = u + A f + ε x=u+A f+varepsilon x=u+Af+ε
其中 f = ( f 1 , f 2 , ⋯   , f m ) ⊤ ( m ≤ p ) f=left(f_{1}, f_{2}, cdots, f_{m}right)^{}(m leq p) f=(f1​,f2​,⋯,fm​)⊤(m≤p) 为公因子向量, ε = ( ε 1 , ε 2 , ⋯   , ε p ) ⊤ varepsilon=left(varepsilon_{1}, varepsilon_{2}, cdots, varepsilon_{p}right)^{} ε=(ε1​,ε2​,⋯,εp​)⊤ 为特殊因子向量, A p × m = ( a i j ) A_{p times m}=left(a_{i j}right) Ap×m​=(aij​) 称为 因子载荷矩阵, 并假设 A A A 的秩为 m m m.
要进行因子分析, 必须要解出 A A A 这个矩阵, 下面我们要给的一些假设用来计算 A A A 矩阵。

四、因子分析模型的假设

因子分析模型
x = { x 1 = u 1 + a 11 f 1 + a 12 f 2 + ⋯ + a 1 m f m + ε 1 x 2 = u 2 + a 21 f 1 + a 22 f 2 + ⋯ + a 2 m f m + ε 2 ⋮ x p = u p + a p 1 f 1 + a p 2 f 2 + ⋯ + a p m f m + ε p = u + A f + ε 假设 , { E ( f ) = 0 E ( ε ) = 0 Var ⁡ ( f ) = I Var ⁡ ( ε ) = D = diag ⁡ ( σ 1 2 , σ 2 2 , ⋯   , σ p 2 ) cov ⁡ ( f , ε ) = E ( f ε ⊤ ) = 0 begin{aligned} &x=left{begin{array}{} 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}=u+Af+varepsilonright. \ &text {假设 ,}left{begin{array}{l} E(f)=0 \ E(varepsilon)=0 \ operatorname{Var}(f)=I \ operatorname{Var}(varepsilon)=D=operatorname{diag}left(sigma_{1}^{2}, sigma_{2}^{2}, cdots, sigma_{p}^{2}right) \ operatorname{cov}(f, varepsilon)=Eleft(f varepsilon^{}right)=0 end{array}right. end{aligned} ​x=⎩ ⎨ ⎧​x1​=u1​+a11​f1​+a12​f2​+⋯+a1m​fm​+ε1​x2​=u2​+a21​f1​+a22​f2​+⋯+a2m​fm​+ε2​⋮xp​=up​+ap1​f1​+ap2​f2​+⋯+apm​fm​+εp​​=u+Af+ε假设 ,⎩ ⎨ ⎧​E(f)=0E(ε)=0Var(f)=IVar(ε)=D=diag(σ12​,σ22​,⋯,σp2​)cov(f,ε)=E(fε⊤)=0​​
其中 f = ( f 1 , f 2 , ⋯   , f m ) ⊤ ( m ≤ p ) f=left(f_{1}, f_{2}, cdots, f_{m}right)^{}(m leq p) f=(f1​,f2​,⋯,fm​)⊤(m≤p) 为公因子向量
ε = ( ε 1 , ε 2 , ⋯   , ε p ) ⊤ varepsilon=left(varepsilon_{1}, varepsilon_{2}, cdots, varepsilon_{p}right)^{} ε=(ε1​,ε2​,⋯,εp​)⊤ 为特殊因子向量
A p × m = ( a i j ) A_{p times m}=left(a_{i j}right) Ap×m​=(aij​) 称为因子载荷矩阵, 并假设 A A A 的秩为 m m m.
公因子彼此不相关, 且具有单位方差; 特殊因子彼此不相关且与公因子也不相关。

五、因子载荷矩阵的统计意义
  1. A A A 的元素 a i j a_{i j} aij​ : 原始变量 x i x_{i} xi​ 与公因子 f j f_{j} fj​ 之间的协方差: a i j = cov ⁡ ( x i , f j ) a_{i j}=operatorname{cov}left(x_{i}, f_{j}right) aij​=cov(xi​,fj​)
    如果 x x x 经过了标准化, 则 a i j = ρ ( x i , f j ) ( x i a_{i j}=rholeft(x_{i}, f_{j}right)left(x_{i}right. aij​=ρ(xi​,fj​)(xi​ 和 f j f_{j} fj​ 的相关系数 ) ) )
  2. A A A 的行元素平方和 h i 2 = ∑ j = 1 m a i j 2 h_{i}^{2}=sum_{j=1}^{m} a_{i j}^{2} hi2​=∑j=1m​aij2​ : 原始变量 x i x_{i} xi​ 对公因子依赖的程度
    可以证明: Var ⁡ ( x i ) = h i 2 + σ i 2 ( i = 1 , 2 , ⋯   , p ) operatorname{Var}left(x_{i}right)=h_{i}^{2}+sigma_{i}^{2}(i=1,2, cdots, p) Var(xi​)=hi2​+σi2​(i=1,2,⋯,p)
    h i 2 h_{i}^{2} hi2​ 反应了公因子对于 x i x_{i} xi​ 的影响, 可以看成是公因子对于 x i x_{i} xi​ 的方差贡献,称为共性方差; 而 σ i 2 sigma_{i}^{2} σi2​ 是特殊 因子 ε i varepsilon_{i} εi​ 对 x i x_{i} xi​ 的方差贡献, 称为个性方差。如果 x x x 经过了标准化, 则 h i 2 + σ i 2 = 1 h_{i}^{2}+sigma_{i}^{2}=1 hi2​+σi2​=1.
  3. A A A 的列元素平方和 g j 2 = ∑ i = 1 p a i j 2 g_{j}^{2}=sum_{i=1}^{p} a_{i j}^{2} gj2​=∑i=1p​aij2​ : 公因子 f j f_{j} fj​ 对 x x x 的贡献
    可以证明:
    ∑ i = 1 p Var ⁡ ( x i ) = ∑ i = 1 p a i 1 2 Var ⁡ ( f 1 ) + ∑ i = 1 p a i 2 2 Var ⁡ ( f 2 ) + ⋯ + ∑ i = 1 p a i m 2 Var ⁡ ( f m ) + ∑ i = 1 p Var ⁡ ( ε i ) = g 1 2 Var ⁡ ( f 1 ) + g 2 2 Var ⁡ ( f 2 ) + ⋯ + g m 2 Var ⁡ ( f m ) + ∑ i = 1 p σ i 2 = g 1 2 + g 2 2 + ⋯ + g m 2 + ∑ i = 1 p σ i 2 begin{aligned} sum_{i=1}^{p} operatorname{Var}left(x_{i}right) &=sum_{i=1}^{p} a_{i 1}^{2} operatorname{Var}left(f_{1}right)+sum_{i=1}^{p} a_{i 2}^{2} operatorname{Var}left(f_{2}right)+cdots+sum_{i=1}^{p} a_{i m}^{2} operatorname{Var}left(f_{m}right)+sum_{i=1}^{p} operatorname{Var}left(varepsilon_{i}right) \ &=g_{1}^{2} operatorname{Var}left(f_{1}right)+g_{2}^{2} operatorname{Var}left(f_{2}right)+cdots+g_{m}^{2} operatorname{Var}left(f_{m}right)+sum_{i=1}^{p} sigma_{i}^{2} \ &=g_{1}^{2}+g_{2}^{2}+cdots+g_{m}^{2}+sum_{i=1}^{p} sigma_{i}^{2} end{aligned} i=1∑p​Var(xi​)​=i=1∑p​ai12​Var(f1​)+i=1∑p​ai22​Var(f2​)+⋯+i=1∑p​aim2​Var(fm​)+i=1∑p​Var(εi​)=g12​Var(f1​)+g22​Var(f2​)+⋯+gm2​Var(fm​)+i=1∑p​σi2​=g12​+g22​+⋯+gm2​+i=1∑p​σi2​​
    从上述的推导中可以看出, A A A 的第 j j j 列元素的平方和 g j 2 g_{j}^{2} gj2​ 是 Var ⁡ ( f j ) operatorname{Var}left(f_{j}right) Var(fj​) 的系数, g j 2 g_{j}^{2} gj2​ 的值越大, 反映了 f j f_{j} fj​ 对 x x x 的影响越大, g j 2 g_{j}^{2} gj2​ 是衡量公因子 f j f_{j} fj​ 重要性的一个尺度, 可视为公因子 f j f_{j} fj​ 对 x x x 的贡献。
六、因子模型的性质
  1. x x x 的协方差矩阵 Σ Sigma Σ 的分解
    x = u + A f + ε , 假设  { E ( f ) = 0 E ( ε ) = 0 Var ⁡ ( f ) = I Var ⁡ ( ε ) = D = diag ⁡ ( σ 1 2 , σ 2 2 , ⋯   , σ p 2 ) cov ⁡ ( f , ε ) = E ( f ε ⊤ ) = 0 begin{aligned} x=u+A f+varepsilon , text { 假设 }left{begin{array}{l} E(f)=0 \ E(varepsilon)=0 \ operatorname{Var}(f)=I \ operatorname{Var}(varepsilon)=D=operatorname{diag}left(sigma_{1}^{2}, sigma_{2}^{2}, cdots, sigma_{p}^{2}right) \ operatorname{cov}(f, varepsilon)=Eleft(f varepsilon^{}right)=0 end{array}right.end{aligned} x=u+Af+ε, 假设 ⎩ ⎨ ⎧​E(f)=0E(ε)=0Var(f)=IVar(ε)=D=diag(σ12​,σ22​,⋯,σp2​)cov(f,ε)=E(fε⊤)=0​​
    Var ⁡ ( x ) = E [ ( x − u ) ( x − u ) ⊤ ] = E [ ( A f + ε ) ( A f + ε ) ⊤ ] = A E ( f f ⊤ ) A ⊤ + A E ( f ε ⊤ ) + E ( ε f ⊤ ) A ⊤ + E ( ε ε ⊤ ) = A Var ⁡ ( f ) A ⊤ + Var ⁡ ( ε ) = A A ⊤ + D begin{aligned} operatorname{Var}(x)&=Eleft[(x-u)(x-u)^{}right]=Eleft[(A f+varepsilon)(A f+varepsilon)^{}right] \ &=A Eleft(f f^{}right) A^{}+A Eleft(f varepsilon^{}right)+Eleft(varepsilon f^{}right) A^{}+Eleft(varepsilon varepsilon^{}right) \ &=A operatorname{Var}(f) A^{}+operatorname{Var}(varepsilon) \ &=A A^{}+D end{aligned} Var(x)​=E[(x−u)(x−u)⊤]=E[(Af+ε)(Af+ε)⊤]=AE(ff⊤)A⊤+AE(fε⊤)+E(εf⊤)A⊤+E(εε⊤)=AVar(f)A⊤+Var(ε)=AA⊤+D​
  2. 因子载荷不唯一
    令 T T T 为任意一个 m × m m times m m×m 的正交矩阵, 令 A ∗ = A T , f ∗ = T ⊤ f A^{}=A T, f^{}=T^{} f A∗=AT,f∗=T⊤f, 则模型可表示为:
    x = u + A ∗ f ∗ + ε , 因为假设仍然成立  { E ( f ∗ ) = T ⊤ E ( f ) = 0 E ( ε ) = 0 Var ⁡ ( f ∗ ) = T ⊤ Var ⁡ ( f ) T = T ⊤ I T = I Var ⁡ ( ε ) = D = diag ⁡ ( σ 1 2 , σ 2 2 , ⋯   , σ p 2 ) cov ⁡ ( f ∗ , ε ) = E ( f ∗ ε ⊤ ) = T ⊤ E ( f ε ⊤ ) = 0 x=u+A^{} f^{}+varepsilon text {, 因为假设仍然成立 }left{begin{array}{l} Eleft(f^{}right)=T^{} E(f)=0 \ E(varepsilon)=0 \ operatorname{Var}left(f^{}right)=T^{} operatorname{Var}(f) T=T^{} I T=I \ operatorname{Var}(varepsilon)=D=operatorname{diag}left(sigma_{1}^{2}, sigma_{2}^{2}, cdots, sigma_{p}^{2}right) \ operatorname{cov}left(f^{}, varepsilonright)=Eleft(f^{} varepsilon^{}right)=T^{} Eleft(f varepsilon^{}right)=0 end{array}right. x=u+A∗f∗+ε, 因为假设仍然成立 ⎩ ⎨ ⎧​E(f∗)=T⊤E(f)=0E(ε)=0Var(f∗)=T⊤Var(f)T=T⊤IT=IVar(ε)=D=diag(σ12​,σ22​,⋯,σp2​)cov(f∗,ε)=E(f∗ε⊤)=T⊤E(fε⊤)=0​
    正是因为因子载荷矩阵A不是唯一的,在实际的应用中我们常常利用这一点,通过因子的变换,使得新的因子具有更容易解释的实际意义。这就是因子分析往往比主成分分析的结果更容易解释的原因。
七、参数估计

设 x 1 , x 2 , ⋯   , x n x_{1}, x_{2}, cdots, x_{n} x1​,x2​,⋯,xn​ 是一组 p p p 维样本, 则 u u u 和 Σ Sigma Σ 可分别估计为: x ˉ = 1 n ∑ i = 1 n x i bar{x}=frac{1}{n} sum_{i=1}^{n} x_{i} xˉ=n1​∑i=1n​xi​ 和 S 2 = 1 n ∑ i = 1 n ( x i − x ˉ ) ( x i − x ˉ ) ⊤ S^{2}=frac{1}{n} sum_{i=1}^{n}left(x_{i}-bar{x}right)left(x_{i}-bar{x}right)^{} S2=n1​∑i=1n​(xi​−xˉ)(xi​−xˉ)⊤ 为了建立因子模型, 我们需要估计出因子载荷矩阵 A p × m = ( a i j ) A_{p times m}=left(a_{i j}right) Ap×m​=(aij​), 以及个性方差矩阵 D = diag ⁡ ( σ 1 2 , σ 2 2 , ⋯   , σ p 2 ) D=operatorname{diag}left(sigma_{1}^{2}, sigma_{2}^{2}, cdots, sigma_{p}^{2}right) D=diag(σ12​,σ22​,⋯,σp2​).

参数估计方法
主成分法: 假设变量是因子的线性组合, 第一主成分有最大的方差, 后续主成 分所解释的方差逐渐减小, 各主成分之间互不相关, 主成分法通常用来计算初 始公因子, 它也适用于相关矩阵为奇异时的情况。
末加权最小平方法: 使得观测的相关矩阵和再生的相关矩阵之差的平方和最小, 忽略对角元素。
综合最小平方法: 使得观测的相关矩阵和再生的相关矩阵之差的平方和最小,
并以变量单值的倒数对相关系数加权。
最大似然法: 假设样本来自多元正态分布, 使用极大使然估计。
主轴因子法: 从初始相关矩阵提取公共因子, 并把多元相关系数的平方置于对 角线上, 再用初始因子载荷估计新的变量共同度, 如此重复直至变量共同度在 两次相邻迭代中的变化达到临界条件。
Alpha 因子法: 把当前分析变量看作是所有潜在变量的一个样本, 最大化因子 的Alpha可靠性。
映像因子法: 把每个变量的主要部分定义为其他各变量的线性回归, 而不是潜 在因子的函数。

最常用主成分法、最大似然法和主轴因子法。

七、因子旋转方法

得到因子模型后,其中的公共因子不一定能反映问题的实质特征,为了能更好地解释每一个公共因子的实际意义,且减少解释的主观性,可以通过因子旋转达到目的。因子旋转分为正交旋转与斜交旋转,经过正交旋转而得到的新的公共因子仍然保持彼此独立的性质,而斜交旋转得到的公共因子是相关的(违背了最初的假定,可以看作传统因子分析的拓展),其实际意义更容易解释。但不论是正交旋转还是斜交旋转,都应当使新公共因子的载荷系数的绝对值尽可能接近0或1。

最大方差法 (Varimax Method) 一种正交旋转方法, 它使得对每个因子有高负载的变量的数目达到最小。该 方法简化了因子的解释。
直接 Oblimin 方法 一种斜交 (非正交) 旋转方法。当 delta 等于 0 (缺省值) 时, 解是最斜交的。 delta 负得越厉害, 因子的斜交度越低。要覆盖缺省的 delta 值 0 , 请输人小于等于 0.8 0.8 0.8 的数。
最大四次方值法 (Quartimax Method) 一种旋转方法, 它可使得解释每个变量所需的因子最少。该方法简化 了观察到的变量的解释。
最大平衡值法 (Equamax Method) 一种旋转方法, 它是简化因子的最大方差法与简化变量的最大四次方值 法的组合。它可以使得高度依赖因子的变量的个数以及解释变量所需的因子的个数最少。
最优斜交旋转 (Promax Rotation) 斜交旋转, 可使因子相关联。该旋转可比直接最小斜交旋转更快地计算出 来, 适用于大型数据集。

八、因子得分

因子分析是将变量表示为公共因子和特殊因子的线性组合;, 我们可以反过来将公共因子表示为原变量的线性组合, 即可得到因子得分。
{ x 1 = u 1 + a 11 f 1 + a 12 f 2 + ⋯ + a 1 m f m + ε 1 x 2 = u 2 + a 21 f 1 + a 22 f 2 + ⋯ + a 2 m f m + ε 2 ⋮ x p = u p + a p 1 f 1 + a p 2 f 2 + ⋯ + a p m f m + ε p ⇒ { f 1 = b 11 x 1 + b 12 x 2 + ⋯ + b 1 p x p f 2 = b 21 x 1 + b 22 x 2 + ⋯ + b 2 p x p ⋮ f m = b m 1 x 1 + b m 2 x 2 + ⋯ + b m p x p left{begin{array} { l } { x _ { 1 } = u _ { 1 } + a _ { 1 1 } f _ { 1 } + a _ { 1 2 } f _ { 2 } + cdots + a _ { 1 m } f _ { m } + varepsilon _ { 1 } } \ { x _ { 2 } = u _ { 2 } + a _ { 2 1 } f _ { 1 } + a _ { 2 2 } 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} Rightarro left{begin{array}{c} f_{1}=b_{11} x_{1}+b_{12} x_{2}+cdots+b_{1 p} x_{p} \ f_{2}=b_{21} x_{1}+b_{22} x_{2}+cdots+b_{2 p} x_{p} \ vdots \ f_{m}=b_{m 1} x_{1}+b_{m 2} x_{2}+cdots+b_{m p} x_{p} end{array}right.right. ⎩ ⎨ ⎧​x1​=u1​+a11​f1​+a12​f2​+⋯+a1m​fm​+ε1​x2​=u2​+a21​f1​+a22​f2​+⋯+a2m​fm​+ε2​⋮xp​=up​+ap1​f1​+ap2​f2​+⋯+apm​fm​+εp​​⇒⎩ ⎨ ⎧​f1​=b11​x1​+b12​x2​+⋯+b1p​xp​f2​=b21​x1​+b22​x2​+⋯+b2p​xp​⋮fm​=bm1​x1​+bm2​x2​+⋯+bmp​xp​​
第 i i i 个因子的得分可写成 f i = b i 1 x 1 + b i 2 x 2 + ⋯ + b i p x p ( i = 1 , 2 , ⋯   , m ) f_{i}=b_{i 1} x_{1}+b_{i 2} x_{2}+cdots+b_{i p} x_{p}(i=1,2, cdots, m) fi​=bi1​x1​+bi2​x2​+⋯+bip​xp​(i=1,2,⋯,m) b i j b_{i j} bij​ 就是第 i i i 个因子的得分对应于第 j j j 个变量 x j x_{j} xj​ 的系数
注我们计算出因子得分函数的系数后,就能够求出所有的因子得分。

计算因子得分的可选方法有回归、Bartlett 和 Anderson-Rubin。

  1. 回归法 (Regression Method). 一种估计因子得分系数的方法。生成的分数的平均值为 0 , 方差等于估计的因 子分数和真正的因子值之间的平方多相关性。即使因子是正交的, 分数也可能相关。
  2. Bartlett 得分。一种估计因子得分系数的方法。所产生分数的平均值为 0 。使整个变量范围中所有唯一因子 的平方和达到最小。巴特莱特因子得分
  3. Anderson-Rubin 方法 (Anderson-Rubin Method). 一种估计因子得分系数的方; 它对 Bartlett 方法做了修正, 从而确保被估计的因子的正交性。生成的分数平均值为 0 , 标准差为 1 , 且不相关。安德森一鲁宾因子得分法
九、数据检验 9.1 KMO检验

KMO检验是 Kaiser, Meyer和 Olkin提出的,该检验是对原始变量之间的简单相关系数和偏相关系数的相对大小进行验,主要应用于多元统计的因子分析。KMO统计量是取值在0和1之间,当所有变量间的简单相关系数平方和远远大于偏相关系数平方和时, KMO值越接近于1,意味着变量间的相关性越强,原有变量越适合作因子分析;当所有变量间的简单相关系数平方和接近0时, KMO值越接近于0,意味着变量间的相关性越弱,原有变量越不适合作因子分析。其中, Kaiser给出一个KMO检验标准 KMO>0.9,非常适合; 0.8 9.2 巴特利特球形检验

巴特利特球形检验是一种检验各个变量之间相关性程度的检验方法。一般在做因子分析之前都要进行巴特利特球形检验,用于判断变量是否适合用于做因子分析。巴特利特球形检验是以变量的相关系数矩阵为出发点的。它的原假设是相关系数矩阵是一个单位阵(不适合做因子分析,指标之间的相关性太差,不适合降维),即相关系数矩阵对角线上的所有元素都是1,所有非对角线上的元素都为0。巴特利特球形检验的统计量是根据相关系数矩阵的行列式得到的。如果该值较大,且其对应的p值小于用户心中的显著性水平(一般为0.05),那么应该拒绝原假设,认为相关系数不可能是单位阵,即原始变量之间存在相关性,适合于作因子分析。 相反不适合作因子分析。

9.3 碎石检验

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

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

十、应用

因子分析跟主成分分析一样,由于侧重点都是进行数据降维,很少单独使用,大多数情况下都会有一些模型组合使用。例如

  1. 因子分析(主成分分析)+多元回归分析判断并解决共线性问题之后进行回归预测;
  2. 因子分析(主成分分析)+聚类分析通过降维后的数据进行聚类并分析数据特点,但因子分析会更适合,原因是基于因子的聚类结果更容易解释,而基于主成分的聚类结果很难解释;
  3. 因子分析(主成分分析)+分类数据降维(或数据压缩)后进行分类预测,这也是常用的组合方法。
十一、实现步骤流程
  1. 相关性检验,一般采用KMO检验法和Bartlett球形检验法两种方法来对原始变量进行相关性检验;
  2. 输入原始数据 X n ∗ p X_{np} Xn∗p​,计算样本均值和方差,对数据样本进行标准化处理;
  3. 计算样本的相关矩阵R;
  4. 求相关矩阵R的特征根和特征向量;
  5. 根据系统要求的累积贡献率确定公共因子的个数;
  6. 计算因子载荷矩阵A;
  7. 对载荷矩阵进行旋转,以求能更好地解释公共因子;
  8. 确定因子模型;
  9. 根据上述计算结果,求因子得分,对系统进行分析
十二、python实现因子分析

Copyright © 2016-2025 www.caominkang.com 曹敏电脑维修网 版权所有 Power by