对考试成绩进行因子分析

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

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

因子分析是一种将模型与多变量数据进行拟合以估计这种相互依赖关系的方法。

因子分析模型

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

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

SigmaX = * ' +

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

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

120名学生每人参加了五次考试,前两次涉及数学,后两次涉及文学,第五次是综合考试。这似乎是合理的,五个年级的一个给定的学生应该是相关的。有些学生两门课都好,有些只擅长一门课,等等。这种分析的目的是确定是否有定量证据表明,学生在五种不同考试中的成绩在很大程度上仅取决于两种能力。

首先加载数据,然后调用factoran并要求一个具有单一公因数的模型。

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

factoran的前两个返回参数是估计的加载量和估计的特定方差。从估计的负荷中,您可以看到,这个模型中的一个共同因素将很大的正权重放在所有五个变量上,但最重要的是第五个,综合考试。

Loadings1
Loadings1 = 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“旋转”,“没有”);

从估计的加载量中,您可以看到第一个未旋转因子对所有5个变量施加了近似相等的权重,而第二个因子对比了前两个变量和第二个变量。

Loadings2
负载s2 = 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

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

从协方差/相关矩阵进行因子分析

您使用原始测试分数进行了上述拟合,但有时您可能只有一个汇总数据的样本协方差矩阵。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维空间中一点的坐标,那么每个因子对应于一个坐标轴。因子旋转相当于旋转这些轴,并在旋转后的坐标系中计算新的载荷。有很多方法可以做到这一点。有些方法保持坐标轴正交,而另一些是倾斜的方法,改变它们之间的角度。

Varimax是正交旋转的一种常用标准。factoran默认情况下,进行最大旋转,这样你就不会需要明确地提出要求。

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

返回的最大旋转矩阵的快速检查factoran确认它是正交的。实际上,Varimax旋转了上图中的因子轴,但使它们保持直角。

rotationVM‘* rotationVM
ans = 1.0000 -0.0000 -0.0000 1.0000

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

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

Varimax刚性地旋转坐标轴,试图使所有的载荷接近于零或一。前两次考试最接近第二个因素轴,第三和第四次考试最接近第一个因素轴,第五次考试处于中间位置。这两个旋转因子可以很好地解释为“定量能力”和“定性能力”。然而,由于没有一个变量在因子轴附近,因此双图表明正交旋转不能成功地提供一组简单的因子。

由于正交旋转不是完全令人满意的,你可以尝试使用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);2 = 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(结束)h2 h3];lgndLabels = {“变量”,不旋转的轴的,“方差极大旋转坐标轴”,“电子产品品牌旋转坐标轴”};传奇(lgndHandles lgndLabels,“位置”,“东北”,“字体名”,“arial窄”);

预测因子得分

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

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

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

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

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

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

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