主要内容

对考试成绩进行因素分析

这个例子展示了如何使用统计和机器学习工具箱™执行因素分析。

多变量数据通常包含大量的测量变量,有时这些变量“重叠”,因为它们的组可能是相互依赖的。例如,在十项全能比赛中,每个运动员参加10个项目,但其中一些可以被认为是“速度”项目,而其他可以被认为是“力量”项目,等等。因此,一名运动员的10项成绩可能被认为主要取决于3或4种运动能力。

因子分析是一种将模型与多元数据拟合以估计这种相互依赖性的方法。

因子分析模型

在因子分析模型中,被测变量依赖于较少数量的未观察(潜在)因素。因为每个因素可能影响几个共同的变量,所以它们被称为“公共因素”。假设每个变量都依赖于公因数的线性组合,这些系数称为负荷。由于独立的随机变异性,每个测量变量还包括一个分量,称为“特定方差”,因为它是特定于一个变量的。

具体来说,因子分析假设你的数据的协方差矩阵是这样的形式

SigmaX = * +

其中是载荷矩阵,对角线矩阵的元素是具体的方差。这个函数factoran用最大似然法拟合因子分析模型。

例子:找出影响考试成绩的共同因素

120名学生每人参加了五场考试,前两场是数学,后两场是文学,第五场是综合考试。一个学生的五个分数应该是相关的,这似乎是合理的。有些学生两门功课都好,有些学生只擅长一门,等等。这项分析的目的是确定是否有定量证据表明,学生在五种不同考试中的成绩主要是由两种能力决定的。

首先加载数据,然后调用factoran并要求模型拟合单一公因式。

负载examgrades[Loadings1 specVar1 T,统计]= factoran(等级1);

factoran的前两个返回参数是估计的负载和估计的特定方差。从估计的负荷中,您可以看到,这个模型中的一个共同因素对所有五个变量都赋予了较大的正权重,但大部分权重都放在第五个,即综合考试上。

Loadings1
loading1 = 0.6021 0.6686 0.7704 0.7204 0.9153

对这种匹配的一种解释是,学生可能被认为是根据他们的“综合能力”,对此,综合考试将是可用的最佳衡量标准。一个学生在更具体的科目测试中的成绩将取决于他们的综合能力,但也取决于该学生是否在该领域很强。这就解释了为什么前四次考试的负荷较低。

从估计的具体方差中,您可以看到,该模型表明,一个特定学生在特定测试中的成绩变化相当大,超出了由于公共因素的变化。

specVar1
specVar1 = 0.6375 0.5530 0.4065 0.4810 0.1623

具体的方差为1表示存在没有该变量的公因子分量,而特定方差为0则表示该变量为完全由公因式决定。这些考试成绩似乎介于两者之间,尽管综合考试的具体变化最少。这与上述对该模型中单个公因子的解释是一致的。

返回的p值统计数据结构拒绝单一公因子的零假设,因此我们对模型进行了改装。

stats.p
ans = 0.0332

接下来,使用两个共同因素来尝试更好地解释考试成绩。如果有多个因素,您可以旋转估计的负载,以尝试使其解释更简单,但目前,要求一个未旋转的解决方案。

[Loadings2 specVar2 T,统计]= factoran(等级2“旋转”“没有”);

从估计的负载中,您可以看到第一个未旋转的因素对所有五个变量的权重几乎相等,而第二个因素将前两个变量与后两个变量进行对比。

Loadings2
Loadings2 = 0.6289 0.3485 0.6992 0.3287 0.7785 -0.2069 0.7246 -0.2070 0.8963 -0.0473

你可以将这些因素解释为“整体能力”和“定量与定性能力”,扩展了之前对单因素拟合的解释。

一个变量图,其中每个加载是沿着相应因子的轴的一个坐标,图形化地说明了这种解释。前两次考试对第二个因素有积极的影响,表明它们依赖于“定量”能力,而后两次考试显然依赖于相反的能力。第五次考试对第二个因素的影响不大。

biplot (Loadings2“varlabels”num2str ((1:5) '));标题(不旋转的解决方案的);包含(“潜在因素1”);ylabel (《潜在因素2》);

从估计的具体方差中,您可以看到,这个双因素模型表明,由于公共因素的影响,比单因素模型的变化更小。同样,在第五次考试中,具体差异最少。

specVar2
specVar2 = 0.4829 0.4031 0.3512 0.4321 0.1944

统计数据结构表明,在这个双因素模型中只有一个自由度。

stats.dfe
ans = 1

由于只有五个测量变量,你无法拟合一个包含两个以上因素的模型。

基于协方差/相关矩阵的因子分析

您使用原始测试分数进行上述拟合,但有时您可能只有一个样本协方差矩阵来总结您的数据。factoran函数接受协方差或相关矩阵“Xtype”参数,并给出与原始数据相同的结果。

σ= x(成绩);[LoadingsCov, specVarCov] =...factoran(σ2“Xtype”“浸”“旋转”“没有”);LoadingsCov
LoadingsCov = 0.6289 0.3485 0.6992 0.3287 0.7785 -0.2069 0.7246 -0.2070 0.8963 -0.0473

因子旋转

有时,从一个因子分析模型估计的负荷可能给一些被测变量的几个因素很大的权重,使解释这些因素代表什么变得困难。因子旋转的目标是找到一个解,其中每个变量只有少量的大负荷,即受少量因子的影响,最好只有一个。

如果你把载荷矩阵的每一行看作m维空间中一个点的坐标,那么每个因子都对应一个坐标轴。因子旋转相当于旋转这些轴,并在旋转后的坐标系中计算新的载荷。有多种方法可以做到这一点。有些方法保持轴的正交,而另一些方法是改变它们之间的角度的斜向方法。

var max是正交旋转的常用判据。factoran默认情况下执行varmax旋转,因此不需要显式地请求它。

[LoadingsVM, specVarVM rotationVM] = factoran(等级2);

一个快速检查的varimax旋转矩阵返回factoran证明了它是正交的。Varimax实际上旋转了上图中的因子轴,但保持了它们的直角。

rotationVM‘* rotationVM
Ans = 1.0000 0.0000 0.0000 1.0000

五个变量在旋转因子上的双线图显示了最大旋转的影响。

biplot (LoadingsVM“varlabels”num2str ((1:5) '));标题(“最大方差法解决方案”);包含(“潜在因素1”);ylabel (《潜在因素2》);

Varimax严格地旋转了坐标轴,试图使所有载荷接近0或1。前两个考试最接近第二个因子轴,而第三和第四个考试最接近第一个轴,第五个考试位于中间位置。这两个旋转的因素也许可以最好地解释为“定量能力”和“定性能力”。然而,由于没有一个变量靠近因子轴,双线图显示,正交旋转未能成功地提供一个简单的因子集。

因为正交旋转并不完全令人满意,所以可以尝试使用promax,这是一种常见的斜向旋转准则。

[LoadingsPM, specVarPM rotationPM] =...factoran(等级2“旋转”的电子产品品牌);

返回的promax旋转矩阵的检查factoran表明它不是正交的。实际上,Promax分别旋转第一个图中的因子轴,允许它们之间有一个斜角。

rotationPM‘* rotationPM
Ans = 1.9405 -1.3509 -1.3509 1.9405

变量在新旋转因子上的双标图显示了promax旋转的效果。

biplot (LoadingsPM“varlabels”num2str ((1:5) '));标题(“电子产品品牌解决方案”);包含(“潜在因素1”);ylabel (《潜在因素2》);

Promax执行了轴的非刚性旋转,在创建“简单结构”方面比varimax做得更好。前两个考试靠近第二个因子轴,而第三和第四个考试靠近第一个轴,第五个考试位于中间位置。这使得将这些旋转的因素解释为“定量能力”和“定性能力”更加精确。

不需要在不同的旋转轴集合上绘制变量,可以将旋转轴覆盖在未旋转的双标线图上,以便更好地了解旋转和未旋转的解之间的关系。

h1 = biplot (Loadings2,“varlabels”num2str ((1:5) '));包含(“潜在因素1”);ylabel (《潜在因素2》);持有invRotVM =发票(rotationVM);h2 = line([-invRotVM(1,1) invRotVM(1,1) NaN -invRotVM(2,1) invRotVM(2,1)],...[-invRotVM(1,2) invRotVM(1,2) NaN -invRotVM(2,2) invRotVM(2,2)],“颜色”, (1 0 0));invRotPM =发票(rotationPM);h3 = line([-invRotPM(1,1) invRotPM(1,1) NaN -invRotPM(2,1) invRotPM(2,1)],...[-invRotPM(1,2) invRotPM(1,2) NaN -invRotPM(2,2) invRotPM(2,2)],“颜色”[0 1 0]);持有广场lgndHandles = [h1(1) h1(end) h2 h3];lgndLabels = {“变量”不旋转的轴的“方差极大旋转坐标轴”“电子产品品牌旋转坐标轴”};传奇(lgndHandles lgndLabels,“位置”“东北”“字体名”“arial窄”);

预测因子得分

有时,能够根据因子得分对观察结果进行分类是很有用的。例如,如果您接受双因素模型和promax旋转因子的解释,那么您可能希望预测一个学生将来在数学考试中的表现。

因为数据是原始的考试成绩,而不仅仅是他们的协方差矩阵,我们可以factoran返回每个学生的两个旋转公因数的预测值。

(载荷、specVar旋转,统计,仅仅]=...factoran(等级2“旋转”的电子产品品牌“麦克斯特”, 200);biplot(载荷,“varlabels”num2str ((1:5) '),“分数”,仅仅);标题(“Promax解决方案的预测因子得分”);包含(“文学能力”);ylabel (“数学能力”);

该图显示了根据原始变量(向量)和每个观察点(点)的预测得分进行的模型拟合。该拟合表明,虽然有些学生在某一学科上表现很好,但在另一学科上表现不佳(第二和第四象限),但大多数学生在数学和文学(第一和第三象限)上要么表现很好,要么表现很差。您可以通过查看两个因素的估计相关矩阵来确认这一点。

发票(旋转的旋转*)
Ans = 1.0000 0.6962 0.6962 1.0000

因子分析与主成分分析的比较

主成分分析(PCA)和因子分析(FA)在术语和目标上有很多重叠。很多关于这两种方法的文献并没有对它们进行区分,一些拟合FA模型的算法涉及到PCA。这两种方法都是降维技术,从某种意义上说,它们可以用来用一组更小的新变量替换大量的观测变量。它们也经常给出类似的结果。然而,这两种方法的目标和基础模型是不同的。粗略地说,当您只需要用更少的维度来总结或近似数据时(例如可视化),您应该使用PCA,而当您需要为数据之间的相关性提供解释性模型时,您应该使用FA。

Baidu
map