信息过度复杂是多变量数据最大的挑战之一。若数据集有100个变量,如何了解其中所有的交互关系呢?即是只有20个变量,当试图理解各个变量与其他变量的关系时,也需要考虑190对相互关系。主成分分析和探索性因子分析是两种用来探索和简化多变量复杂关系的常用方法,它们之间有联系也有区别。
主成分分析(PCA)是一种数据降维技巧,它能将大量相关变量转化为一组很少的不相关变量,这些无关变量称为主成分。例如,使用PCA可将10个相关(很可能冗余)的环境变量转化为5个无关的成分变量,并且尽可能地保留原始数据集的信息。
相对而言,探索性因子分析(EFA)是一系列用来发现一组变量的潜在结构的方法。它通过寻找一组更小的、潜在的或隐藏的结构来解释已观测到的、显式的变量间的关系。例如、Harman74.cor包含了24个心理测验的相互关系,受试对象为145个七年级或八年级的学生。假如使用EFA来探索该数据,结果表明276个测验间的相互关系可用四个学生能力的潜在因子(语言能力、反应速度、推理能力和记忆能力)来进行解释。
PCA与EFA模型间的区别如下图所示,主成分(PC1和PC2)是观测变量(X1和X5)的线性组合。形成线性组合的权重都是通过最大化各主成分所解释的方差来获得,同时还要保证各主成分之间不相关。
相反、因子(F1和F2)被当做是观测变量的结构基础或“原因”,而不是它们的线性组合。代表观测变量方差的误差(e1到e5)无法用因子来解释。图中的圆圈表示因子和误差无法直接观测,但是可通过变量间的相互关系推导得到。在本例中,因子间带曲线的箭头表示它们之间有相关性。在EFA模型中,相关因子是常见的,但并不是必需的。
无论是PCA还是EFA,都需要大样本来支撑稳定的结果,但多大样本量才足够,这也是一个复杂的问题。目前,数据分析师常使用经验分则:“因子分析需要5~10倍变量数的样本数。”研究表明,所需样本量依赖于因子数目、与各因子相关联的变量数,以及因子对变量方差的解释程度。
R语言的基础安装包提供了PCA和EFA函数,分别为princomp()和factanal()。而psych包中提供了比基础函数更为丰富的有用的相关函数,下图列出了psych包中相关度最高的函数:
PCA和EFA常见的操作步骤如下:
数据预处理。PCA和EFA都根据观测变量间的相关性来推导结果。用户可以输入原始数据矩阵或者相关系数矩阵到principal()和fa()函数中。输入初始数据,相关系数矩阵将会被自动计算,在计算之前请确保数据中没有缺失值。
选择因子模型。判断是PCA(数据降维)还是EFA(发现潜在结构)更符合研究目标。如果选择EFA方法,还需要选择一种估计估计因子模型的方法(如最大似然估计)。
判断要选择的主成分/因子数目。
选择主成分/因子。
旋转主成分呢/因子。
解释结果。
计算主成分或因子得分。