因子分析
因子分析又称为EFA,是一系列用来发现一组变量的潜在结构的办法。它通过寻找一组更小的,潜在的结构来解释已观测到的显式的变量间的关系。这些虚拟的、无法观测的变量称为因子(每个因子被认为可以解释多个观测变量间共有的方差)
人话版:开豪宅,住豪车,戴名表 可以归因为 有钱(当然有钱还可以继续归因)。
开豪宅,住豪车,戴名表 这些变量是显式的,而有钱是潜在的隐式的可以解释显式变量的因子。
因子分析和主成分分析有什么区分嘛
个人觉得:因子分析和主成分分析很相似
有人说:原理不同,线性表示方向不同;假设条件不同;求解方法不同;主成分和因子的变化不同;因子数量与主成分的数量;解释重点不同;算法上的不同;优点不同;应用场景不同。
那用因子分析对“有人说的话”进行分析,可以得到潜在的因子,比如解决问题的出发点不同
主成分分析的出发点是将相关变量 打包成一个新变量称为PC ==> 多(变量) 到 (组合)一(主成分),线性组合
因子分析的出发点是 找出引起相关变量变异的共同原因 ==> 一(因子) 到(引发) 多(变量),拆开然后归纳的过程
brief
模型可以用如下方式表达:
判断需要提取的因子数
fa.parallel()函数可以判断提取的因子数
library(psych)
options(digits=2)
covariances <- ability.cov$cov
correlations <- cov2cor(covariances)
correlations
fa.parallel(correlations, n.obs=112, fa="both", n.iter=100,
main="Scree plots with parallel analysis") # fa="both" 同时显示主成分和因子分析的结果
碎石图显示拐点在2/3个因子处
平行分析(红色虚线)显示三个因子时真实数据的特征值小于模拟数据的特征值
综合来看选择2个因子
提取公共因子
比如 Xvocab = 0.73PA1 - 0.39PA2 + Uvocab 解释
PA1 + PA2累积可以解释数据60%的变异
因子旋转
-
正交旋转
正交就是让PA1 与PA2不相关
现在PA1可以更多解释reading 和 vocab
PA2可以更好的解释picture blocks,但是累积解释方差不变。 -
斜交旋转
-
可视化方法
factor.plot(fa.varimax, labels=rownames(fa.varimax$loadings))
fa.diagram(fa.promax, simple=FALSE)