因子分析个人笔记

首先,最棒的参考文献是这篇,以及该文章开头索引的一系列文章:文献

然后我们结合多篇文章来讲一讲:

第一部分

X是原始数据的矩阵,f是公共因子,也就是之后想要提取出来的公共因子,而特殊因子就是前面的公共因子没有包涵的部分,实际分析的时候可以不管。
那么,什么是因子载荷矩阵?百度百科:因子载荷 aij 的统计意义就是第i个变量与第 j 个公共因子的相关系数即表示 Xi 依赖 Fj 的份量(比重)。统计学术语称作权,心理学家将它叫做载荷,即表示第 i 个变量在第 j 个公共因子上的负荷,它反映了第 i 个变量在第 j 个公共因子上的相对重要性。
同时,aij也是我们所构建的因子分析模型X = Af+ε中的矩阵A的元素,也就是模型中各个因子F的系数。

基于此我们得到:
1.第一行的元素分别代表着第一个变量和第一个公因子的相关系数、第一个变量和第二个公因子的相关系数…第一行元素的平方和hi²代表着第一个变量和所有公因子的R方之和,换个角度也可以理解为所有公共因子对第一个变量的解释程度。(称为变量共同度,也可以称为公因子提取度

2.同理,第一列元素分别代表第一个变量和第一个公因子的相关系数、第二个变量和第一个公因子的相关系数…第一列元素的平方和gj²代表着第一个公因子对所有变量的影响,因此“也是对比公共因子重要性的一个标准”。(称为公因子的方差贡献变量共同度和公因子方差贡献这两个概念十分重要!后面会一直用到!

3.综上,A的元素的平方和代表所有公共因子对总方差的累计贡献。

上面讲的也就是:
在这里插入图片描述
对于hi²和gj²的计算案例可见https://blog.csdn.net/qq_29831163/article/details/88909882

第二部分

那么,因子载荷矩阵A是如何得到的呢?开头的参考文献告诉我们,最常用的方法是基于样本相关系数矩阵R的主成分解得到的。(这里讲的主成分似乎就是我们学过的主成分分析法,看下面的操作就有相似之处)至于相关系数矩阵,它就是在主成分分析中讲过的协方差矩阵的升级版(协方差去除量纲后得到相关系数)。
在这里插入图片描述
上面提到的相似之处就是和主成分一样都用到了特征值与特征向量,而该矩阵A就等于各个特征向量乘以其特征值的开根号(图中公式40)
从另一篇文章的截取片段:
在这里插入图片描述
证明这里的主成分分析和我们学过的的确是一个东西,而且在PCA中,我们是将特征值从大到小排列,据此来选择对应的特征向量;而在此处(FA),特征值(根)同时也代表着相应公因子的方差贡献大小。
我们来看一下另一篇文章https://blog.csdn.net/qq_41081716/article/details/103332472的节选也证明了这个道理:
在这里插入图片描述
特征值越大,方差贡献率也就越高。

我们再来看一个新的例子https://blog.csdn.net/qq_29831163/article/details/88909882
比如我们由相关系数矩阵得到:
在这里插入图片描述

至此,我们已经解释了并且抛出了太多的东西,但具体怎么做还没有理出一个头绪来,接下来便是操作流程。

因子分析的具体步骤

具体步骤呈现于下面这篇文章

https://blog.csdn.net/qq_29831163/article/details/88918422

一、考察数据是否适合进行因子分析,主要是通过KMO检验和Bartlett球形检验。

二、计算相关系数矩阵,并由此得到因子载荷矩阵。(第一步也就是上面讲的一大堆)

三、对载荷矩阵进行因子旋转。
因子分析的目的不仅仅是要找出公共因子以及对变量进行分组,更重要的是要知道每个公共因子的意义,以便进行进一步的分析。如果每个公共因子的含义不清,则不便于进行实际背景的解释。
初始因子(也就是我们从上一步算出来的因子载荷矩阵)的综合性太强,难以找出因子的实际意义。由于因子载荷阵是不唯一的,所以可以对因子载荷阵进行旋转,使因子载荷阵的结构简化,从而使因子的实际意义更容易被解释。

四、计算因子得分
求出各样本的因子得分,有了因子得分值,则可以在许多分析中使用这些因子,例如以因子的得分做聚类分析的变量,做回归分析中的回归因子。

是否适合进行因子分析的检验

因子分析的目的是在互为相关的许多变量中寻找能反映它们之间内在联系以及起主导作用的、数目较少的因子,通过对这些因子的研究,既无损于原来多个变量的信息,又便于对它们进行分类和解释。因此,要想使用因子分析方法,其前提是:原始数据中多个变量之间应有较强的线性相关关系。如果原始变量之间的线性相关程度太小,它们之间就不存在具有说服力的公因子,这时进行因子分析就没有实际意义;如果各个变量之间相互独立,这时多变量的协方差矩阵是对角阵(更确切地说是单位阵,因为若各个变量之间相互独立,则协方差矩阵除了对角线之外的元素都为0,而对角线上的元素代表自己和自己的协方差,为1。因此各个变量之间相互独立的协方差矩阵为单位阵),显然这样的数据是不适合用因子分析进行分析。
先简单介绍Bartlett球形检验的原理:

一、巴特利特球形检验法是以相关系数矩阵为基础的.它的零假设相关系数矩阵是一个单位阵,即相关系数矩阵对角线的所有元素均为1,所有非对角线上的元素均为零.巴特利特球形检验法的统计量是根据相关系数矩阵的行列式得到的.如果该值较大,且其对应的相伴概率值(即p值)小于指定的显著水平时,拒绝零假设,表明相关系数矩阵不是单位阵,原有变量之间存在相关性,适合进行主成分分析;反之,零假设成立,原有变量之间不存在相关性,数据不适合进行主成分分析。
二、球形检验主要是用于检验数据的分布,以及各个变量间的独立情况。按照理想情况,如果我们有一个变量,那么所有的数据都在一条线上。如果有两个完全独立的变量,则所有的数据在两条垂直的线上。如果有三条完全独立的变量,则所有的数据在三条相互垂直的线上。如果有n个变量,那所有的数据就会在n条相互垂直的线上,在每个变量取值范围大致相等的情况下(常见于各种调查问卷的题目),所有的数据分布就像在一个球形体里面,大抵就是那个样子。如果不对数据分布进行球形检验,在做因素分析的时候就会违背因素分析的假设——各个变量在一定程度上相互独立。
————————————————
原文链接:https://blog.csdn.net/qq_31329259/article/details/82697117

再介绍下KMO检验的原理(以下来自百度百科):
在这里插入图片描述
在这里插入图片描述
根据文字描述,该公式的分子是简单相关系数平方和,分母的第二部分就是偏相关系数平方和。偏相关系数的解释是:在多元回归分析中,在消除其他变量影响的条件下,所计算的某两变量之间的相关系数。在多元相关分析中,简单相关系数可能不能够真实的反映出变量X和Y之间的相关性,因为变量之间的关系很复杂,它们可能受到不止一个变量的影响。这个时候偏相关系数是一个更好的选择。

KMO检验的原理:如果原始数据中确实存在公共因子,则各变量之间的偏相关系数应该很小,这时KMO的值接近于1 更容易向1趋近,因此,原数据适用于因子分析。(没看懂为什么存在公共因子则个变量之间的偏相关系数就会很小?)
👇
解释(来自GPT):

在KMO检验中,我们将变量之间的相关性分为两部分:一部分是由其他变量解释的共同变异性,另一部分是独特的变异性,即不能由其他变量解释的部分。
偏相关系数是一种统计量,它测量了两个变量之间的线性关系,在控制其他所有变量之后,仍然保留的相关性。假设我们有p个变量,偏相关矩阵P中的每个元素p_ij表示在控制其他变量的情况下,第i个变量与第j个变量之间的相关性。

推测:如果存在公共因子,也就是存在“共同变异性”,那么在“总变异性”(我自己编的词,用来指代简单相关系数)固定的情况下,共同变异性越大则独特的变异性越小,即偏相关系数越小。

因子旋转原理解释及具体步骤

因子旋转的正交旋转(除了正交还有斜交,但用的较少,此处不予讨论)中,主要有三种方法,分别为:1.方差最大旋转法(Varimax);2.四次方最大旋转法(Quartimax);3.等量最大旋转法(Equamax);此处进介绍方差最大法,其余想要了解可见(方差最大法的解释也来源于这一文章):因子分析法之因子旋转

更新:在本文的spss实现部分也介绍了一下其他旋转方法。

方差最大旋转法从简化因子载荷阵的每一列出发,使和每个因子有关的载荷平方的方差最大,当只有少数几个变量在某个因子上有较高的载荷时候,对因子的解释最简单。

这段话信息量很大,我们慢慢来解释。首先简化因子载荷阵就是我们将载荷矩阵经过因子旋转后得到的新的载荷矩阵,由于这个矩阵是较为简单的,故以此命名。当然,我们现在还不知道如何通过因子旋转得到这个简化因子载荷阵,只是此处采用的是类似待定系数的思想,我们先假设有这么一个东西存在。

其次,从一个因子载荷阵(不管是不是简化的)的每一列来看,我们前面有讲过列元素的平方和gj²称为公因子的方差贡献。然后接下来的这整段话“使和每个因子有关的载荷平方的方差最大,当只有少数几个变量在某个因子上有较高的载荷时候,对因子的解释最简单”的意思是:假设我们有四个变量abcd,两个公因子αβ,比如理想的两极分化的情况是α和ab完全相关,和cd完全无关;β和ab完全无关,和cd完全相关。这样就满足了简化情况的要求,而不是abcd四个变量和αβ都有关系,从而让我们很难去解释α和β这两个因子的含义。方差最大的直观意义是希望通过因子旋转后,使每个因子上的载荷尽量拉开距离,一部分的载荷趋于±1,另一部分趋于0。那方差和上述所说的有什么关系呢?为实现使各个因子上的载荷两极分化,使得因子载荷之间差异极大化,须让描述差异性的统计指标—方差极大化。

正交变换后的公因子共同度不变,因子方差贡献发生变化。因为公因子共同度代表的是全部公因子对某一个变量的影响,公因子共同度不变则代表着全部公因子对某一个变量的影响之和不变;而因子方差贡献代表着某个公因子对所有变量的影响,也就是某个因子对总体解释贡献度的大小。由于做了因子旋转,旋转后的因子和之前的因子已经不一样了,所以每个因子的贡献大小和之前不一样,也是很正常的事情。(这两句话不理解感觉问题不大,大致想讲的就是正交变换的特性使得各个因子的贡献大小发生变化,但总体模型对每一个变量的解释力度大小没有变化。我想这也是为什么采用因子旋转法来简化矩阵的原因)

如何让方差极大化可见原文,算是比较好理解(觉得模糊就看原文):
在这里插入图片描述
接下来如何求正交矩阵就在我的知识范围之外了,可以看一看原文,不理解也没啥关系,不过要注意一段话:
在这里插入图片描述
至此,因子旋转的原理介绍完毕。
不明白也可以看看另一篇文章:文章

计算因子得分

参考文献:文章里的第五部分

通过上面的因子旋转后,我们得到了最终的简化因子载荷阵。但是大多时候我们需要使用这些因子做其他的研究。比如把得到的因子作为自变量来做回归分析,对样本进行分类或评价,这就需要我们对公共因子进行测度,即给出公共因子的值,而不是仅仅只有一个矩阵——矩阵怎么搞回归分析嘛。

在这里插入图片描述
上图还是比较好理解的,但有一点不明白,就是为何p>m就不能得到精确的得分?→我的猜想:平时在矩阵中,如果列数>行数,也就是变量数量多于方程个数,就解不出来,列数=行数才能解。行数若多于列数,说明有一些方程是线性相关的,可以舍去。但此处多出来的行并不能舍去,而是具有自己的意义。比方说方程组中有两个方程,6=2x+1.5和6.5=2.1x+1.3,如果是严格的去算的话,x的解不唯一,因此我们就需要通过某种方法综合两个方程的信息,得到恰当的x。

上面都是题外话,不理解也没什么大关系,接下来介绍得到因子得分的方法。主要有两种方法:巴特莱特因子得分(加权最小二乘法)和回归法。
两种方法的原理见原文,巴特莱特因子得分比较好理解,就像是我们平常做OLS回归中,先待定回归系数,然后用大量的数据估计出回归系数。而此处就是把得分Fj当做回归系数来估计。而法2的回归法,我线代学的实在是太烂了,没看懂。

综合因子得分的计算就等于(各个因子得分乘以其方差贡献率)/各个因子的累计贡献率之和,详见文献

因子分析的SPSS实现

参考书目:《SPSS 22.0统计分析从入门到精通》

在这里插入图片描述

“选择变量”指的是对样本进行筛选,例如我们只想研究被引频次>100的样本,那就在此处处理,平时不用管。

描述选项卡

描述按钮中的各个选项都很好理解,见下图:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

通常来说,在描述中只需要勾选以下选项。(其实有的也不太必要,比如“单变量描述性”):
在这里插入图片描述

勾选了“系数”和“显著性”后,我们之后会输出如下两个表,可用于观测各个变量间的相关性,从而初步判断是否有做因子分析的可行性:

在这里插入图片描述
在这里插入图片描述

可以看到不少变量间有着不低的相关系数,相关系数的显著性也比较可观,所以我们初步认为看起来是能做因子分析的,不过具体的判断还要看KMO和巴特雷特:

在这里插入图片描述
————————————————————————————————————————————

抽取选项卡

点击“抽取”按钮后会弹出如下对话框:
在这里插入图片描述
方法选主成分就好,其他方法在PDF中也有介绍,以及该文献也有介绍主轴分析法,此处暂不深究。

“分析”中有两种矩阵:
在这里插入图片描述
看了知乎回答,可以认定为无脑选相关性矩阵就完事了。相关系数是标准化后的协方差,在实际分析中我们遇到的基本上都是量纲不同的情况,所以就用相关性矩阵。

“输出”中两个都要勾上,这两个都是有意义的:

在这里插入图片描述
“抽取”中,我们就用默认的选项,即基于特征值,特征值>1。在学主成分分析法的时候我们就有提到过,特征值>1的特征向量(变量)会被我们认为是比较有效的。
在这里插入图片描述

勾选了这些选项,我们会输出下表:
在这里插入图片描述
由于我们选择的是“基于特征值>1”,所以只有前两个因子被提取作为公因子,他们的累积贡献达到了75.345%,看来是比较靠谱的。中间和右边的表的意思是:
在这里插入图片描述
还会输出我们上面勾选过的碎石图:
在这里插入图片描述
说实话感性上能理解,理性上有点没看懂,解释如下(表12-5就是上面一个表):
在这里插入图片描述
不过没看懂也无所谓,根据表12-5的特征值和累计贡献率就足以判断了。

我们上面还勾选了未旋转的因子解,因此就会输出成分矩阵和旋转后的成分矩阵(后者不勾应该也会有):
在这里插入图片描述
在这里插入图片描述

解释在PDF中说的很清楚了:

在这里插入图片描述在这里插入图片描述

※ 需要注意的是,我们也可以从旋转后的矩阵来观测每个变量是否适合于本次因子分析,一般认为如果某个变量跟每个因子的因子载荷都<0.6也就是相关系数都<0.6,那就不太适合进行后续的聚类,可以考虑删去。如果很多变量都出现这样的情况,即使前面KMO检验勉强能通过,那也不适合做。这个其实是可以通过多指标观测的,像我自己随便找的数据集来练手时,虽然KMO勉强能通过,分了8个因子的特征值>1,但每个特征值都只是1出头(如果效果很好会像本例中出现很大的特征值?),且8个因子的累计贡献率也才50%,对整体变量的解释力度太低了,看旋转后的成分矩阵,其相关系数也很不好看。十几个变量分了8类,效果还很差,就可以宣告不适合做因子分析了。

在这里插入图片描述
在这里插入图片描述
“基金论文比”这一变量在两个因子上的载荷分别是0.4和0.6,所以所处位置是X轴和Y轴之间,更偏向Y轴(Y轴代表因子2),而“被引半衰期”的载荷分别是-0.04和0.9,因此跟Y轴挨得更近。其他变量的图形解释同理。因子分析的几何解释本来就是找到一组新的正交的坐标系,坐标系中的每个坐标轴代表一个因子(当然可以不止两个,也就是不止二维),将原先的变量投影在新的坐标系上。变量们在这个新的坐标系上比旧的坐标系(未旋转时)分配的更加清晰,也就是每个变量会和单一坐标轴挨得更近,墙头草的行为更少,因此也更有利于我们对每个因子进行解释。

————————————————————————————————————————————

旋转选项卡

点击“旋转”按钮后弹出如下对话框:
在这里插入图片描述
我们在这里也对各种方法的应用场景进行简单介绍(内容来自GPT+PDF):

  • Varimax旋转(最大方差法):
    应用场景:是一种正交旋转,它使得每个因子上具有较高载荷的变量的数目最小,由此可以简化对因子的解释。适用于希望因子间独立且相互不相关的情况。例如,当研究者希望找到一组解释性强且相互独立的因子时,Varimax旋转是一个不错的选择。这种方法适用于需要明确解释每个因子的情况。
  • Promax&直接Oblimin:
    应用场景:这两种方法都是斜交旋转方法,允许公共因子间彼此相关。在实际研究中,因子往往不是完全独立的,因此Promax旋转能更好地反映实际情况。(尽管这么说但用的最多的还是最大方差法)根据GPT的说法,两种方法的区别在于promax更适合于需要允许较强相关性的情况,而Oblimin虽然允许一定程度的相关性,但又不希望因子间的相关性过于强烈的情况。
    PDF中还提到promax计算起来比直接Oblimin方法快,更适用于大数据集的分析。
  • 最大四次方旋转法(Quartimin)
    应用场景:最大四次方旋转法的主要目标是最小化因子间的四次方相关系数。通过减小因子间的四次方相关系数,最大四次方旋转法试图使得旋转后的因子更加相互独立,特别是在处理高阶相关性时更为有效。
    该方法与最大方差法的区别在于,它更擅长处理更复杂的高阶相关性,特别是当因子间存在非线性相关性时,最大四次方旋转法可能更为有效。(所谓高阶相关性就是非线性的,二阶、三阶…的相关性)。但varimax法会更简单,算起来更快,更为广泛地被使用。

在这里插入图片描述

  • 最大平衡值法:
    在这里插入图片描述
    ——————————————————————————————————————————

得分选项卡

点击“得分”按钮会弹出如下对话框,我们需要勾选保存为变量、回归、显示因子得分系数矩阵,各选项解释如下:
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

后续输出和相应的解释:

在这里插入图片描述
在这里插入图片描述

————————————————————————————————————————————

————————————————————————————————————————————

其他

还会输出一个表,暂时不知道是勾了哪个选项才会跳出来的,也可能是一定会输出的:
在这里插入图片描述
公因子方差表的提取列给出的数值是变量共同度(公因子提取度),在本文第一部分中有提到:

第一行的元素分别代表着第一个变量和第一个公因子的相关系数、第一个变量和第二个公因子的相关系数…第一行元素的平方和hi²代表着第一个变量和所有公因子的R方之和,换个角度也可以理解为所有公共因子对第一个变量的解释程度。(称为变量共同度,也可以称为公因子提取度)

例如第一个数值是0.765,代表提取的所有公共因子(本例中也就是两个公共因子)对“载文量”这一变量的解释程度是76.5%。

利用因子得分进行聚类

今天突然发现可以通过因子得分进行聚类,比如我们把10个变量降维成3个因子,得到这三个因子的得分(连续数据),然后我们就可以把这三个是连续型数据的因子作为新的变量进行聚类(比如用K均值)。可参考:文献

  • 9
    点赞
  • 46
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: ny8b062e是一种常见的微控制器芯片,常用于单片机系统的控制和嵌入式系统的开发。本篇开发笔记汇总了在使用ny8b062e芯片进行嵌入式系统开发中的一些个人经验和问题解决方案。 首先,在ny8b062e芯片的开发过程中,需要选择合适的开发工具和编程语言。常用的开发工具包括keil、IAR等。同时,为了方便代码的编写和调试,可以采用C语言进行程序开发。 其次,在ny8b062e芯片的硬件设计中,需要注意芯片的引脚分配和电路设计。具体来说,需要考虑芯片的供电电压、信号输入输出接口、外部晶振设计以及串口通信等因素。 最后,在系统开发的过程中,需要加强代码的优化和调试。为了提高系统的执行效率、减少资源占用和消耗,可以采用基于嵌入式系统的优化算法,如代码压缩、空间换时间等。同时,在程序调试过程中,可以通过使用虚拟仿真器或硬件调试器等工具进行跟踪和分析,从而快速定位代码错误和解决问题。 综上所述,通过合理选择开发工具、注意硬件设计和加强代码优化与调试等措施,可以有效提高ny8b062e芯片嵌入式系统开发的效率和质量。 ### 回答2: ny8b062e是一个标准的8位微控制器,由NEC(现在被RL78系列所替代)生产。ny8b062e有许多特性,包括具有4 KB的程序存储器和256字节的数据存储器,还有8位定时器和4个中断源。 ny8b062e可以用于许多应用程序,包括低功耗应用程序和电池供电系统。除此之外,ny8b062e还可以用于家用电器、自动化和工控系统、卫生医疗、车载互联网和无线电通信等领域。 在进行ny8b062e的开发时,需以下步骤: 1.选择开发工具。可以使用C语言编写ny8b062e应用程序,同时还需要选择一个完美的开发工具来支持代码的编译、调试和下载。 2.编写代码。根据应用程序需求,撰写ny8b062e应用程序并进行调试。可以使用数据手册、示例代码或其他参考资料来帮助编写代码。 3.下载代码。使用选择的开发工具将代码下载到ny8b062e微控制器中。此时需要选择正确的下载方式,确保代码被正确地加载到芯片中。 4.测试代码。在ny8b062e微控制器中运行代码,并根据测试结果对代码进行修改。 5.集成其他硬件。集成其他必要的硬件,例如传感器、电源等,确保完整的应用程序能够正常运行。 总的来说,ny8b062e是一个功能全面的微控制器,可以应用于许多不同的领域。进行ny8b062e开发时需要选择正确的开发工具和正确的应用程序,以确保代码的正确性和应用程序的成功。 ### 回答3: ny8b062e是一款8位单片机,采用CISC指令集架构,由杭州南天电子有限公司生产。在实际应用中,ny8b062e可广泛用于家用电器、工业控制等场合,具有功耗低、集成度高、可靠性强等优点。 ny8b062e开发的第一步是准备开发环境,需要使用ny8studio IDE以及相关的开发工具和驱动程序。在具备基本开发条件的前提下,开发人员可以根据自己的需求进行芯片的程序编写和调试。 ny8b062e使用的编程语言是C语言,开发者可采用C语言的基本语法和数据类型进行程序的编写。同时,ny8b062e还支持多种通讯接口,如IIC、SPI、UART等,开发者可根据应用需求选择相应的接口实现外设的控制。 除了软件编程外,ny8b062e还需要进行硬件设计和布局。由于ny8b062e引脚较少,需要进行引脚复用和器件选型等工作。同时,由于ny8b062e的封装和工作电压等特性不同,也需要注意选择合适的器件和PCB设计方案。 总之,ny8b062e的开发需要开发人员具有扎实的C语言编程能力、硬件设计经验和良好的沟通能力,以保证芯片在应用中的可靠性和稳定性。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值