此示例显示了如何使用统计和机器学习工具箱™执行因子分析。
多元数据通常包括大量测量变量,有时这些变量“重叠”在某种意义上,它们的组可能是相互依赖的。例如,在十项全能比赛中,每个运动员参加10个项目,但其中有几个项目可以被认为是“速度”项目,而其他项目可以被认为是“力量”项目,等等。因此,一个竞争者的10个项目得分可能被认为很大程度上依赖于较小的3或4种运动能力。
因子分析是一种适合多元数据模型来估计这种相互依赖的方式。
在因子分析模型中,测量变量取决于较少数量的未观察(潜在)因素。因为每个因素可能会影响若干变量,因为它们被称为“公共因素”。假设每个变量取决于公共因子的线性组合,并且系数被称为负载。每个测量变量还包括由于独立随机可变性而导致的组件,称为“特定方差”,因为它特定于一个变量。
具体来说,因素分析假设数据的协方差矩阵是这样的形式
SigmaX = * +
其中是载荷矩阵,对角矩阵的元素是具体的方差。这个函数选择性
使用最大似然拟合因子分析模型。
120名学生每人参加五次考试,前两次涉及数学,后两次涉及文学,第五次是综合考试。对于一个学生来说,五个等级之间应该有联系,这似乎是合理的。有些学生两门都擅长,有些学生只擅长一门,等等。这一分析的目的是确定是否有定量证据表明,学生在五种不同考试中的成绩在很大程度上取决于两种能力。
首先加载数据,然后调用选择性
并请求模型适合单个常见因素。
负载考试[loadings1,specvar1,t,stats] =因子(等级,1);
选择性
的前两个返回参数是估计的装载量和估计的特定方差。从估计的负荷中,你可以看到这个模型中的一个共同因素在所有五个变量上都有很大的正权重,但大多数权重在第五次综合考试上。
Loadings1
LOODINGS1 = 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
只有五个测量变量,您无法符合两个以上因素的模型。
您可以使用原始测试分数进行上述匹配,但有时您可能只有一个总结数据的样本协方差矩阵。选择性
使用使用的协方差或相关矩阵“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旋转,因此您不需要明确询问它。
[LoadingsVM, specVarVM rotationVM] = factoran(等级2);
快速检查返回的varimax旋转矩阵选择性
确认它是正交的。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] =...因子(等级,2年级,'旋转','promax');
对返回的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 = inv(rotationvm);H2 =线([ - 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 = inv(rotationpm);H3 =线([ - invrotpm(1,1)invrotpm(1,1)nan -invrotpm(2,1)Invrotpm(2,1)],...[-invRotPM(1,2) invRotPM(1,2) NaN -invRotPM(2,2) invRotPM(1,2)],'颜色',[0 1 0]);抓住离开轴正方形Lgndhandles = [H1(1)H1(终端)H3];lgndlabels = {“变量”,不旋转的轴的,“方差极大旋转坐标轴”,“电子产品品牌旋转坐标轴”};传奇(lgndHandles lgndLabels,“位置”,“东北”,'fontname',“arial窄”);
有时,能够基于其因子分数对观察进行分类是有用的。例如,如果您接受了双因素模型和普通速率旋转因子的解释,您可能希望预测将来在数学考试中怎样才能做好学生。
由于数据是原始考试等级,而不仅仅是他们的协方差矩阵,我们就可以了选择性
返回预测每个学生的两个旋转常见因素中的每一个的值。
(载荷、specVar旋转,统计,仅仅]=...因子(等级,2年级,'旋转','promax','maxit',200);Biplot(装载,“varlabels”num2str ((1:5) '),“分数”,preds);标题(“Promax解决方案的预测因子得分”);包含(“文学能力”);ylabel (“数学能力”);
这张图显示了模型在原始变量(向量)和每个观测值(点)的预测分数方面的拟合。这种契合性表明,虽然一些学生在某一科目上表现很好,但在其他科目(第二和第四象限)上表现不佳,但大多数学生在数学和文学(第一和第三象限)上要么表现得很好,要么表现得很差。你可以通过观察这两个因素的估计相关矩阵来证实这一点。
发票(旋转的旋转*)
Ans = 1.0000 0.6962 0.6962 1.0000
主成分分析(PCA)和因子分析(FA)在术语和目标上有很多重叠。很多关于这两种方法的文献并没有区分它们,一些拟合FA模型的算法涉及到主成分分析。这两种方法都是降维技术,从某种意义上说,它们可以用一组较小的新变量来替换一组大的观测变量。他们也经常给出相似的结果。然而,这两种方法的目标和底层模型是不同的。粗略地说,当您仅仅需要使用更少的维度来总结或近似您的数据时(例如,可视化它),您应该使用PCA;当您需要一个解释数据之间相关性的模型时,您应该使用FA。