建模方法(四)-因子分析定义和应用

建模方法(四)-因子分析定义和应用因子分析 factoranalys 也是一种降维 简化数据的技术 它通过研究众多变量之间的内部依赖关系 使用少数几个 抽象 的变量来表示其基本的数据结构 这几个抽象的变量被称作 因子 能反映原来众多变量的主要信息 原始的变量是可观测的显在变量 而因子一般是不可观测的潜在变量 例如 商店的环境 商店的服务和商品的价格作为因子 这三个方面除了价格外 商店的环境和服务质量 都是客观

因子分析(factor analysis)也是一种降维、简化数据的技术。 它通过研究众多变量之间的内部依赖关系,使用少数几个“抽象”的变量来表示其基本的 数据结构。这几个抽象的变量被称作“因子”,能反映原来 众多变量的主要信息。原始的变量是可观测的显在变量,而 因子一般是不可观测的潜在变量。 例如:商店的环境、商店 的服务和商品的价格作为因子,这三个方面除了价格外,商店的环境 和服务质量,都是客观存在的、抽象的影响因素,都不便于 直接测量,只能通过其它具体指标进行间接反映。因子分析 就是一种通过显在变量测评潜在变量,通过具体指标测评抽 象因子的统计分析方法。

因子分析类型分为R型因子分析和Q型因子分析。就像聚类分析分为R型和Q型一样,R型的因子分析是对变量作因子分析, Q型因子分析是对样品作因子分析。

下面我们以R型为例,介绍因子分析。

R型因子分析的模型如下所示:

R因子分析中的公共因子是不可直接观测但又客观存在的共 同影响因素,每一个变量都可以表示成公共因子的线性函数 与特殊因子之和,即 

建模方法(四)-因子分析定义和应用

式中的F1 ,F2,…Fm称为公共因子,εi称为 Xi的特殊因子,Xi为可测变量。

模型的矩阵形式如下:

建模方法(四)-因子分析定义和应用

建模方法(四)-因子分析定义和应用(7.2)

以上式子满足:

建模方法(四)-因子分析定义和应用

(1)式很好理解,因为我们目的是降维所以因子的数量一般都小于变量数量,不然没有任何意义。

(2)式需要概率论基础,Cov表示协方差,相关系数的分子为协方差,而相关系数描述变量间的线性相关性,如果相关系数为0,表示变量线性无关,因为特殊因子如果与公共因子有线性关系,则特殊因子可以合并到公共因子里面。

(3)与(2)类似,从这里可以看出为什么要用因子分析,各个变量相互相关,因子分析就是找出互不相关因子,揭示这些变量数据背后的结构,找出各个变量表达的主要信息。

(4)可以这样理解因为ε是变量的特殊因子,所以只与变量有关。

建模方法(四)-因子分析定义和应用

如果想要理解上诉的公式,可以参考概率论相关章节,如果只想知道如何应用因子分析,不知道概率论公式不影响。

模型中的aij称为因子“载荷”,是第i个变量在第j个因子上 的负荷,因此矩阵 A 称为因子载荷矩阵。注意因子载荷矩阵A不是唯一的,在实际的应用中常常利 用这一点,通过因子的变换,使得新的因子有更好的实际意 义。 实 际上因子载荷矩阵存在明显的统计意义。

aij是 变量Xi和因子Fj的相关系数(需要标准化Xi和Fj得出),它一方面表示Xi对Fj的依赖程度,绝对值 越大,密切程度越高;另一方面也反映了变量Xi对公共因子Fj 的相对重要性。

下面介绍变量的共同度。

设因子载荷矩阵为A,称第i行元素的平方和,即 

建模方法(四)-因子分析定义和应用

建模方法(四)-因子分析定义和应用

对Xi做标准化处理后,得:

建模方法(四)-因子分析定义和应用

(7.8)式说明变量Xi的方差由两部分组成: 第一部分为变量Xi的共同度,它描述了全部公共因子对变量Xi 的总方差所作的贡献,反映了公共因子对变量Xi的影响 程度。第二部分为特殊因子εi 对变量Xi的方差的贡献, 通常称为个性方差。

上面是对载荷矩阵A的一行的计算,下面对列计算,即公因子Fj对全部变量的贡献。

设因子载荷矩阵为A,称第j列元素的平方和,即 

建模方法(四)-因子分析定义和应用

为公共因子Fj对所有变量的贡献,即上述结果表示同一公共因子Fj对 各变量所提供的方差贡献之总和,它是衡量每一个公共因子 相对重要性的一个尺度。他对于选择公因子的数量有很大的作用。

 

求解因子载荷矩阵方法有主成分分析法、主因子法、大似然估计法,下面介绍主成分分析法:

建模方法(四)-因子分析定义和应用建模方法(四)-因子分析定义和应用

因为因子数
<变量数,所以m+1~p是没有任何意义的,即图中红色标记,分解中将红色部分作为特殊因子的方差忽略。在式(7.5)中因随机向量x的协方差矩阵在x标准化以后就是相关矩阵,有如下式子< p="">

建模方法(四)-因子分析定义和应用

 

上述绿色部分的p*m矩阵就是因子载荷矩阵A。

建模方法(四)-因子分析定义和应用

建模方法(四)-因子分析定义和应用

建模方法(四)-因子分析定义和应用

因子旋转用于给各个公因子取一个描述性名字,像之前提到的使用商店的环境、商店 的服务和商品的价格作为描述商品的因子。因为我们得到的载荷矩阵中的因子的系数载荷在各个变量上的值很难看出差异,也就很难看出因子对于哪些变量很重要,也就难以得出因子的含义。而因子旋转使同一列上的载荷尽可能地向靠近 1和靠近0两极分离。这时就突出了每个公共因子和其载荷较 大的那些变量的联系,矛盾的主要方面显现出来了,该公共 因子的含义也就能通过这些载荷较大变量做出合理的说明, 这样也显示了该公共因子的主要性质。 它的原理这里就不给出了,matlab中仅需一行代码就可以得到因子旋转的结果。

matlab命令:rotatefactors(A, ‘method’, ‘varimax’)

给出一个例子:

建模方法(四)-因子分析定义和应用

按上述求解因子载荷矩阵的方法确定矩阵,如下

建模方法(四)-因子分析定义和应用

因子载荷矩阵可以看出,除第一因子中所有的变量在公共因子 上有较大的正载荷,可以称为一般运动因子。其他的3个因子不太 容易解释。似乎是跑和投掷的能力对比,似乎是长跑耐力和短跑速 度的对比。于是考虑旋转因子,得下表 

建模方法(四)-因子分析定义和应用

建模方法(四)-因子分析定义和应用

因子得分:根据变量X反过来推出因子的值,因为X的值可观测,最后就得出以因子为指标的结果,可以对结果进行聚类分析等,下面给一个因子分析的完整例子。

建模方法(四)-因子分析定义和应用

这里注意相关系数矩阵为非单位阵,故可实施因子分析,因为因子分析的前提是变量Xi之间存在内部关系,这样才能分解为各因子。

建模方法(四)-因子分析定义和应用

由于初始因子载荷阵结构不够简明,各因子的含义不突出。为此采用方差大正 交旋转变化,使各变量在某个因子上产生较高载荷,而在其余因子上载荷较小, 得到旋转后因子载荷矩阵,如表3所示。

建模方法(四)-因子分析定义和应用

建模方法(四)-因子分析定义和应用

建模方法(四)-因子分析定义和应用

(注:F的表达式里面的-是+,图片有误)

建模方法(四)-因子分析定义和应用

 

 

总结:

因子分析通常包括以下五个步骤:

1.选择分析的变量     用定性分析和定量分析的方法选择变量,因子分析的前提条件 是观测变量间有较强的相关性,因为如果变量之间无相关性或相 关性较小的话,他们不会有共享因子,所以原始变量间应该有较强 的相关性。

2.计算所选原始变量的相关系数矩阵   相关系数矩阵描述了原始变量之间的相关关系。可以帮助判 断原始变量之间是否存在相关关系,这对因子分析是非常重要 的,因为如果所选变量之间无关系,做因子分析是不恰当的 并且相关系数矩阵是估计因子结构的基础。 

3.提取公共因子     这一步要确定因子求解的方法和因子的个数,根据相关系数矩阵(协方差矩阵的标准化)来做。需要根据研 究者的设计方案或有关的经验或知识事先确定。因子个数的 确定可以根据因子方差的大小。只取方差大于1(或特征值大 于1)的那些因子,因为方差小于1的因子其贡献可能很小;按 照因子的累计方差贡献率来确定,一般认为要达到70%才能 符合要求; 

4.因子旋转     通过坐标变换使每个原始变量在尽可能少的因子之间有密 切的关系,这样因子解的实际意义更容易解释,并为每个潜在 因子赋予有实际意义的名字。

 5.计算因子得分    求出各样本的因子得分,有了因子得分值,则可以在许多 分析中使用这些因子,例如以因子的得分做聚类分析的变量, 做回归分析中的回归因子。 在数学建模中可以直接使用因子得分公式。

==打赏博主==

建模方法(四)-因子分析定义和应用

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/206609.html原文链接:https://javaforall.net

(0)
上一篇 2026年3月19日 下午3:21
下一篇 2026年3月19日 下午3:21


相关推荐

  • Red Flag linux硬盘安装

    Red Flag linux硬盘安装 很早以前就想安装linux实验一下,今天从中科红旗RedFlag的网站下载了一个系统安装盘的iso,安装盘一共2CD,这里提前说一下,也不知道是不是我的WinXP文件关联有问题,下载下来的ISO显示的是WinRAR的图标,于是没看扩展名直接解压缩出来了(后面因为这个吃了不少苦头,没办法,习惯了),然后上网站上查了查,网上大都写的不明白,而且重复的很多(是不是高手都用linux,觉得

    2022年8月20日
    14
  • K8s基本概念入门_k8s菜鸟教程

    K8s基本概念入门_k8s菜鸟教程序言    没等到风来,绵绵小雨,所以写个随笔,聊聊k8s的基本概念。    k8s是一个编排容器的工具,其实也是管理应用的全生命周期的一个工具,从创建应用,应用的部署,应用提供服务,扩容缩容应用,应用更新,都非常的方便,而且可以做到故障自愈,例如一个服务器挂了,可以自动将这个服务器上的服务调度到另外一个主机上进行运行,无需进行人工干涉。那么,问题来了,要运维何用?    k8s可以更快的更新新版

    2025年8月23日
    5
  • xshell为什么老会突然连接不上虚拟机_虚拟机配置xshell连接

    xshell为什么老会突然连接不上虚拟机_虚拟机配置xshell连接问题背景最近一段时间在研究docker的使用时,在VM中安装了CentOS7.6,配置了静态IP,使用Xshell连接虚拟机,发现响应的速度特别慢,大概得有10秒钟才能连上。具体描述使用Xshell连接配置好的主机,会在这个地方停留至少十秒钟。Xshell6(Build0111)Copyright(c)2002NetSarangComputer,Inc.Allrightsr…

    2026年2月14日
    4
  • rpm卸载多个有依赖的rpm包[通俗易懂]

    rpm卸载多个有依赖的rpm包[通俗易懂][root@devOOo_3.1.0_src]#rpm-qlibxml2[root@devOOo_3.1.0_src]#rpm-qalibxml2*[root@dev~]#rpm-qa|greplibxml2libxml2-python-2.6.26-2.1.12libxml2-devel-2.6.26-2.1.12libxml2-2.6.26libxm…

    2026年2月14日
    5
  • Vivado的helloword计划(一个):硬件project部分

    Vivado的helloword计划(一个):硬件project部分

    2022年1月9日
    67
  • java递归生成树结构_java递归生成树形菜单

    java递归生成树结构_java递归生成树形菜单publicList getAllCommType(){  ListtreeList=newArrayList();  //取到父节点id为0,只有一个  ListtypeList=commType.getAllCommodityType();  for(Commodity_typetype:typeList){   Treetree=newTree();

    2026年1月14日
    4

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号