6.1 因子分析的基本理论
因子分析( factor analysis)模型是主成分分析的推广。它也是利用降维的思想,由研究原始变量相关矩阵内部的依赖关系出发,把一些具有错综复杂关系的变量归结为少数几个综合因子的一种多变量统计分析方法
相比主成分分析,因子分析更倾向于描述原始变量之间的相关关系,因此,因子分析的出发点是原始变量的相关矩阵。
6.1.1 因子分析的基本思想
因子分析的基本思想是根据相关性大小把原始变量分组,使得同组内的变量之间相关性较高,而不同组的变量间的相关性则较低。每组变量代表一个基本结构,并用一个不可观测的综合变量表示,这个基本结构就称为公共因子。
对于所研究的某一具体问题,原始变量可以分解成两部分之和的形式,一部分是少数几个不可测的所谓公共因子的线性函数,另一部分是与公共因子无关的特殊因子。
因子分析还可用于对变量或样品的分类处理,我们在得出因子的表达式之后,可以把原始变量的数据代入表达式得出因子得分值,根据因子得分在因子所构成的空间中把变量或样品点画出来,形象直观地达到分类的目的。
因子分析不仅可以用来研究变量之间的相关关系,还可以用来研究样品之间的相关关系,通常将前者称为 R型因子分析,后者称为 Q型因子分析。
6.1.2 因子分析的基本理论及模型
(1)引入(斯皮尔曼的例子)
发现奇怪的现象:
因子载荷、共同度:
(2)进行推广(有多个公共因子)
前提:p个指标之间有较强的相关性
设有 n个样品,每个样品观测 p个指标,这 p个指标之间有较强的相关性(要求 p个指标相关性较强的理由是很明确的,只有相关性较强才能从原始变量中提取出“公共”因子)
处理:样本观测数据进行标准化处理
为了消除由于观测量纲的差异及数量级不同所造成的影响,将样本观测数据进行标准化处理,使标准化后的变量均值为0,方差为1。
为方便,把原始变量及标准化后的变量向量均用表示,用表示标准化的公共因子。
因子分析需要满足的条件:
(0)必须是标准化的数据!!!
(1)是可观测随机向量,且均值向量,协方差矩阵,且协方差矩阵∑ 与相关阵R 相等(标准化样本数据);
(2)是不可观测的变量,其均值向量,协方差矩阵,即向量F 的各分量是相互独立的(方差为1,相互独立);
(3)与F 相互独立,且,ε 的协方差阵 是对角方阵。
即ε 的各分量之间也是相互独立的.
则模型:
称为因子模型。
写成矩阵形式为:
公共因子F1,F2,…,Fm 相互独立且不可测,是在原始变量的表达式中都出现的因子。公共因子的含义,必须结合实际问题的具体意义确定。
ε1,ε2,…,εp 叫做特殊因子,是向量X的分量Xi(i =1,2,…,p)所特有的因子。各特殊因子之间以及特殊因子与所有公共因子之间也都是相互独立的。
矩阵A 中的元素aij 称为因子载荷,aij 的绝对值越大(∣ aij ∣ ≤ 1),表明Xi 与Fj 的相依程度越大,或称公共因子Fj 对于Xi 的载荷量越大,进行因子分析的目的之一就是要求出各个因子载荷的值。
(3)因子载荷、共同度
【1】因子载荷的统计意义
aij 是Xi 与Fj 的协方差,而注意到,Xi 与Fj(i =1,2,…,p;j =1,2,…,m)都是均值为0,方差为1 的变量,因此,aij 同时也是Xi 与Fj 的相关系数。
【2】共同度和剩余方差
【3】方差贡献度
考虑某一个公共因子Fj 与所有原始变量X1,X2,…,Xp 的关系。记:
则表示的是公共因子Fj 对于X 的每一分量所提供的方差的总和,称为公共因子对原始变量向量的方差贡献,它是衡量公共因子相对重要性的指标。越大,表明公共因子对 的贡献越大,或者说对 的影响和作用就越大。
如果将因子载荷矩阵的所有(j =1,2,…,m)都计算出来,并按其大小排序,就可以依此提炼出最有影响的公共因子。
6.2 因子载荷的求解
6.2.1 主成分法
方法:进行因子分析前,先进行一次主成分分析,然后将前面的几个主成分看作是未旋转的公共因子
缺点:用这种方法得到的特殊因子之间并不相互独立!
具体演示:
公共因子的个数:
6.2.2 主轴因子法
通过迭代的思想:
这里的特殊方差指的是:特殊因子的方差,R变量X的相关矩阵
初始值的设计标准:
6.2.3 极大似然法
假定公共因子F和特殊因子服从正态分布
6.2.4 因子旋转
分类:正交旋转和斜交旋转,本文只阐述正交旋转!
(1)具体含义:
(2)良好的性质:
【1】公共因子的条件依然满足
【2】不改变共同度
【3】不改变前m个因子的累计贡献率
证明如下:
6.2.5 因子得分
所求的是F在每个样品点上的得分
由主成分分析法出发时:可以原始的线性关系式来计算得出
否则用回归的方法估计得出:
6.2.6 主成分分析与因子分析的区别
(1)因子分析把展示在我们面前的诸多变量看成由对每一个变量都有作用的一些公共因子和一些仅对某一个变量有作用的特殊因子线性组合而成。因此,我们的目的就是要从数据中探查能对变量起解释作用的公共因子和特殊因子,以及公共因子和特殊因子组合系数。主成分分析则简单一些,它只是从空间生成的角度寻找能解释诸多变量绝大部分变异的几组彼此不相关的主成分。
(2)因子分析中,把变量表示成各因子的线性组合,而主成分分析中,把主成分表示成各变量的线性组合。
(3)主成分分析中不需要有一些专门假设,因子分析则需要一些假设。因子分析的假设包括:各个公共因子之间不相关,特殊因子之间不相关,公共因子和特殊因子之间不相关。
(4)提取主因子的方法不仅有主成分法,还有极大似然法等,基于这些不同算法得到的结果一般也不同。而主成分只能用主成分法提取。
(5)主成分分析中,当给定的协方差矩阵或者相关矩阵的特征值唯一时,主成分一般是固定的;而因子分析中,因子不是固定的,可以旋转得到不同的因子。
(6)在因子分析中,因子个数需要分析者指定,随指定的因子数量不同而结果不同。在主成分分析中,主成分的数量是一定的,一般有几个变量就有几个主成分。
(7)和主成分分析相比,由于因子分析可以使用旋转技术帮助解释因子,在解释方面更加有优势。
6.3 因子分析的步骤与逻辑框架
6.4 例题
因子分析例题(多元统计分析期末复习)_因子载荷矩阵例题-CSDN博客
6.4 R语言的实现
数据参见第5节的资源绑定:
library(readxl)
B=read_excel("/Users/zhaoyuna0504/Desktop/work office/多元统计分析/多元统计分析课件/Code 第五章主成分分析/例5-3水泥企业经济效益.xls", sheet = "Sheet1")
A=as.matrix(B)
is.matrix(A)
A=A[1:31,2:8]
####A=as.numeric(A) The output is an vector but not a matrix. We need to use the function "apply" to transform the character matrix into a numerical matrix
A=t(A)
rownames(A)=NULL
A=t(A)
A=apply(A,2,as.numeric)
class(A[1])
CorA=cor(A)
Decomp=eigen(CorA)
EigValues=Decomp$values
EigVctor=cbind(-Decomp$vectors[,1],Decomp$vectors[,2:7]) #####由于标准正交特征向量的第一列中元素和为负,取其相反方向的向量生成主成分
a1=EigVctor[,1]/sqrt(EigValues[1])###F1=a11*Z_1+a12*Z_2+...+a17*Z_7中的a1=(a11,a12,...,a17),其中Z_i表示原始值表标准化后
a2=EigVctor[,2]/sqrt(EigValues[2])###F2=a21*Z_1+a22*Z_2+...+a27*Z_7中的a2=(a21,a22,...,a27),其中Z_i表示原始值表标准化后,即P16页中F1,F2表达式中的系数构成的向量
Comp1=EigVctor[,1]*sqrt(EigValues[1])#####7个标准化后指标与第一主成分的相关系数构成的向量
Comp2=EigVctor[,2]*sqrt(EigValues[2])#####7个标准化后指标与第二主成分的相关系数构成的向量,即因子载荷矩阵component matrix
Tran=matrix(c(0.982,0.191,-0.191,0.982),nrow=2,byrow=TRUE)####旋转矩阵
RotMatri=cbind(Comp1,Comp2)%*%Tran ####正交旋转后的因子载荷矩阵
Sigma=CorA-RotMatri%*%t(RotMatri) ###特殊因子协方差阵
Phi_hat=solve(t(RotMatri)%*%solve(Sigma)%*%RotMatri)%*%t(RotMatri)%*%solve(Sigma)###### Phi_hat=(A'Sigma^(-1)A)^(-1)A'Sigma^(-1),即Phi_hat*scale(A)得到因子得分
factanal(SCA, factors = 2,rotation = "varimax")
A
SCA=scale(A,center=TRUE,scale=TRUE)
SCA
factanal(SCA, factors = 2,rotation = "varimax")