自己在写毕业论文时首次接触到因子分析法,中途遇到了一些问题,后来查找资料都解决了,所以在这里总结一下~

#举个简单粗暴的例子#

A:你喜欢什么样的女生?

B:哈哈哈哈 那当然是双眼皮、高鼻梁、大长腿、樱桃小嘴、肤如凝脂、胸大屁股翘、温柔可爱、善解人意、做饭香香、高学历、高智商、原生家庭和睦、父母有正经职业的女孩子啦!

A:?????我TM数了数,你丫这初步要求就有12个啊?

我们也发现B这个哥们儿要求多对不对?此时我们用因子分析的思想,来看看他到底喜欢什么样的女生。

我们把双眼皮、高鼻梁、樱桃小嘴可以归为一类,称为“颜值因子”;把大长腿、肤如凝脂、胸大屁股翘归为一类,称为“体态因子”;把温柔可爱、善解人意归为一类,称为“性格因子”;把原生家庭和睦、父母有正经职业归为一类,称为“家庭因子”,把高学历、高智商归为一类,称为“智商因子”。

经过因子分析以后,我们发现B对女孩子的要求就不是12个,而是5个——颜值、体态、性格、家庭、智商。这就是因子分析的本质思维:降维。

以上是因子分析的基本思路,但也仅仅是基本思路。为什么用“仅仅”两个字呢?因为在因子分析整个过程中,会有很多细节决定成败的问题。

还是以B同学为例,哪些择偶要求适合做因子分析呢(原始变量相关性检验)?归纳完以后的因子分别是哪些(构造因子变量)?每个因子代表哪些原始要求(因子旋转)?每个因子占比多少呢(计算因子得分)?是不是别的男生也可以这样分析(实证检验)?

很幸(操)运(蛋),以上问题我在写论文的时候都遇到了,所以都有一些解决方法。

1.相关性检验

因子分析法的使用前提是原始变量存在相关性。这很好理解,我要把一些原始表量归纳为一类,就需要它们代表同一种属性。万一它们互不相关、自成一派,那根本没办法归纳,无法降维,也就无法进行因子分析。

在stata中进行一般使用巴特利特球形检验和KMO检验。

巴特利特球形检验用于检验相关阵是否是单位阵,即各变量是否独立。它是以变量的相关系数矩阵为出发点,零假设:相关系数矩阵是一个单位阵。如果巴特利球形检验的统计计量数值较大,且对应的相伴概率值小于用户给定的显著性水平,则应该拒绝零假设;反之,则不能拒绝零假设,认为相关系数矩阵可能是一个单位阵,不适合做因子分析。若假设不能被否定,则说明这些变量间可能各自独立提供一些信息,缺少公因子。一般实证中,p值小于0.05就可以进行下去。

KMO统计值是通过比较各变量间简单相关系数和偏相关系数的大小判断变量间的相关性。相关性强时,偏相关系数远小于简单相关系数,KMO值接近1。一般来说,KMO>0.9非常适合因子分析;0.8<KMO<0.9适合;0.7以上尚可,0.6时效果很差,0.5以下不适宜作因子分析。不过实证中能达到0.6真的已经非常非常可了,所以KMO大于0.5就可以试着做下去。

在stata14.0中,输入命令factortest x1 x2 x2....xn,就可以得到两个检验值。如下图,方框内为命令语句,圆圈内分别问巴特利特球形检验p值和KMO检验值。

(合格的KMO值)

在做适用性检验时,我出现过KMO统计值小于0.5的情况,如下图。可能有2个原因:一是原始数据的异常值对结果有影响;二是原始变量不适合做因子分析。(当然原因二是我极度十分非常不愿意接受的,因为这意味着我需要另外再去找变量。。。)

(不合格的KMO值)

1.针对异常值,只需要对原始数据进行缩尾处理即可。

(1)安装winsor2命令:ssc install winsor2 replace

(2)执行winsor2命令:winsor2 x1 x2...xn, replace cuts(1 99)

这个命令的意思是,对变量进行上下1%的替换缩尾处理,也就是说,如果一个样本变量值大于变量的99分位数,则该样本的值被强制指定为99分位数的值;如果一个样本变量值小于变量的1分位数,则该样本的值被强制指定为1分位数的值。

2.针对原始变量不适合做因子分析,需要检验相各变量间的关性,然后将相关性很低的变量剔除。命令为pwcorr x1 x...xn。像这个里面的g31 g41和g51,跟其他变量之间的相关性都非常低,所以应该剔除,再去寻找其他变量。

(相关系数矩阵)

2.构造因子变量

我们应该选择哪些因子来解释原始变量?解释力度如何?这种力度可以接受吗?这些问题都是在构造因子变量时需要解决的。不过归根结底都是关于累计贡献率——怎么看累计贡献率 & 累计贡献率够不够。

在看累计贡献率时,stata是默认取特征根大于1的因子作为主成分,这表示主成分的解释力度大于直接使用1个原始变量。别忘了,因子分析的本质就是降维,如果提取的主成分特征根小于1,就不能达到化繁为简的目的,那还不如直接用原始变量。

一般认为,累计贡献率达到80%是比较好的,说明主成分包含了原始变量80%以上的信息。不过在实证中,很多人似乎都在65%左右徘徊,如果可以自圆其说的话,其实也可以接受。

输入命令factor x1 x2...xn pcf,就可以得到主成分分析的结果,如下图。4表示提取了4个主成分,因为只有前4个因子的特征根大于1,最后一列表示累计方差贡献率。这表示,提取的4个主成分可以解释原始变量中61.29%的信息。

(提取主成分)

在做因子分析时,我遇到了2个问题:一是提取出的主成分比我预想的多一个,二是累计贡献率不够。

1.主成分多一个。如下图,其他年份都只有4个主成分,而这一年的却有5个主成分。在去掉最后一个因子,累计贡献率不会太低的情况下,可以指定只提取4个主成分。命令为factor x1 x2...xn, factors(4) pcf,在之后的分析中就可以只用4个因子。

(5个主成分)

(4个主成分)

2.累计贡献率不够。我之前做过一版原始数据的因子分析,提取出主成分以后累计贡献率不足55%。这时候就需要看一下到底是哪些原始变量在捣乱,可以通过因子载荷矩阵来看,如下图。一般来说,反常因子的值要小于0.6,像下图中的g6m1达到了0.87,可以将它剔除,这样整体的累计贡献率会提高。

(剔除反常因子)

3.因子旋转

本来做完主成分分析,我们就可以知道哪些因子解释了哪些原始变量,并且知道解释力度是多少。但还是不够清晰,我们需要让因子走向极端。比如,f1对g1的解释力度是0.6,对g2的解释力度是0.5,我们怎么知道f1到底更侧重哪个属性呢?因子旋转要做的事情就是明确这种态度,如果让F1对应0.9的g1、对应0.01的g2,这样就会让结论更清晰。输入命令rotate,各因子对应的的原始变量就会非常清晰了。

如下图,第一个是旋转前的因子载荷矩阵,f1似乎对g30,g40,g50的解释力度都还不错,但是它具体代表什么属性恨不清晰;第二张图是旋转以后的因子载荷矩阵,我们可以很清晰地看出来f1在解释g30和g40。

(旋转前因子载荷矩阵)

(旋转后因子载荷矩阵)

4.计算因子得分

在进行因子旋转以后,输入命令predict f1 f2 f3,就可以得到各因子的得分。

(因子得分预测值)

这时候要构建综合得分函数,还需要知道各因子的权重。非常简单,以各因子的方差贡献率分别除以累计贡献率,得出各因子的权重。下图是stata旋转结果和用Excel制作的权数。输入命令

gen Fm1=0.3610*f1m1+0.3535*f2m1+0.2856*f3m1即可计算每个样本的综合得分。

(各因子累计贡献率)

(各因子对应权数)

5.实证检验

因为我这个是配对样本,看了下很多相关论文用的是均值t检验,所以我很开心地输入了ttest F0 ==F1,检验结果如下图,一把辛酸泪。。。我在论坛上看到一个帖子也遇到了同我一样的问题:配对样本均值t检验的结果p值全部为1。

(配对样本t检验)

后来我查了很多资料发现,配对样本均值t检验的使用前提很严格,需要样本呈正态分布。所以我对自己的样本数据做了下正态性检验,输入命令sktest Fm1 F0 F1 F2 F3,结果如下图:p值全部小于0.05,不是正态分布。后来我对样本做了一些处理:倒数、平方、立方等等,颠七倒八的整了一堆,但都没办法实现正态分布。这种情况下不能直接用参数检验,所以得用非参数检验。

(正态性检验)

然后在网上找了一张图,是针对不同样本的非参数检验方法,框架非常好。因为我是两个总体比较的相关样本,所以选择了Wilcoxon符号秩检验,输入命令signrank x1=x2,之后出现了一些比较显著的结果,于是心满意足地验证了我的一些假设~

(非参数检验方法)

(符号秩检验结果)

以上5个方面就是因子分析的全过程以及中途遇到的问题。总的来看,整个过程中最耗时的是调整KMO值和实证检验,而这两部分都是因为前提没有做好。KMO值和变量相关性息息相关,所以要先做相关系数矩阵;实证检验是因为没有先做正态性检验,使用了不恰当的检验方法导致得不出结论。不过还好最后都解决了,论文也基本定下来再也不用熬夜写论文还是很开心的。

用极大似然法估计因子载荷矩阵_关于因子分析|stata相关推荐

  1. 用极大似然法估计因子载荷矩阵_第7章-因子分析.ppt

    7.3 因子正交旋转 在第7.1节我们已经看到,满足方差结构Σ =AAT+Ф的因子模型并不惟一,模型的公因子与载荷矩阵不惟一.如果F是模型的公因子,A是相应的载荷矩阵,而T是m×m正交矩阵,则F*=T ...

  2. 用极大似然法估计因子载荷矩阵_应用统计学与R语言实现学习笔记(十三)——因子分析...

    Chapter 13 Factor Analysis 本篇是第十三章,内容是因子分析. 这篇博客的完整内容包含各类数学表达.可以见我CSDN和hexo搭的个人博客. CSDN博客 1 因子分析概念 因 ...

  3. 因子分析 factor analysis (三) : 因子载荷矩阵的估计方法

    因子分析系列博文:  因子分析 factor analysis (一 ):模型的理论推导 因子分析 factor analysis (二 ) : 因子分析模型 因子分析 factor analysis ...

  4. python主成分得分系数矩阵_用spss得出的成分矩阵就是初始因子载荷矩阵吗?成分得分系数矩阵又是什么...

    用spss得出的成分矩阵就是初始因子载荷矩阵吗?成分得分系数矩阵又是什么呢? 第一问是的,译法不同而已:第二问,成分得分系数矩阵是用来求成分得分的,用标准化后的原始数据矩阵乘以成分得分系数矩阵就可以得 ...

  5. R语言使用psych包的fa函数对指定数据集进行因子分析(输入数据为相关性矩阵)、使用rotate参数指定进行斜交旋转提取因子、编写自定义函数通过因子模式矩阵与因子相关性矩阵相乘计算因子载荷矩阵

    R语言使用psych包的fa函数对指定数据集进行因子分析(输入数据为相关性矩阵).使用rotate参数指定进行斜交旋转提取因子.编写自定义函数通过因子模式矩阵与因子相关性矩阵相乘计算因子载荷矩阵 目录

  6. matlab因子载荷矩阵正交旋转,因素分析中的矩阵旋转

    因素分析中的矩阵旋转 因素分析法 因素分析是一种统计技术,目的是从众多的可观测的"变量"中,概括和推论少数"因素".用最少数的"因素"来概括 ...

  7. 极大似然法估计与极大验后法估计

    11.2 极大似然法估计与极大验后法估计       一.极大似然法估计 极大似然法估计是以观测值出现的概率为最大作为估计准则的,它是一种觉的参数估计方法. 设是连续随机变量,其分布密度为,含有个未知 ...

  8. 空间权重矩阵与相关性检验(Stata)

    空间权重矩阵与相关性检验(Stata) 文章目录 空间权重矩阵与相关性检验(Stata) @[toc] 1 空间相关性检验 1.1 全局空间相关性检验 1.2 局部空间自相关检验 1.3 散点图 2 ...

  9. hbase 数据导出乱码_赶尽杀绝:Stata中文乱码之转码

    作者:王美庭 (中南民族大学经济学院) Stata 连享会:(知乎 | 简书 | 码云 | CSDN | 公众号 StataChina) 本文的目的: 当 Stata 官方提供的 unicode * ...

  10. matlab求因子载荷矩阵,Matlab因子分析

    %  从相关系数矩阵出发进行因子分析 %***************************定义相关系数矩阵PHO***************************** PHO = [1     ...

最新文章

  1. 导入导出Android手机文件
  2. 图的连通性和连通分量_英语,人口,连通性和露营地
  3. 条款五:对应的new和delete要采用相同的形式
  4. Python线程指南
  5. CTF加解密/编码常用在线网址
  6. android如何导入活动,关于android:如何将活动值传递给另一个活动(Kotlin)
  7. java中的v递归的思想,Java中的递归思想 - osc_9lqilnv7的个人空间 - OSCHINA - 中文开源技术交流社区...
  8. 高性能高可靠性的全数字嵌入式仿真测试软件SkyEye
  9. android底部导航栏网络请求有冲突,Android 自定义底部导航栏 CustomizeTabLayout(支持访问网络图片、本地图片)...
  10. Spark学习之第一个程序打包、提交任务到集群
  11. 【个人笔记】OpenCV4 C++ 快速入门 05课
  12. java中4种修饰符访问权限的区别
  13. Java 垃圾回收机制(面试高频问题之一)
  14. 百科知识 kux文件如何打开
  15. 图片中添加箭头【使用PPT实现】
  16. 主打产品“火力不足”致使发行人持续盈利能力下降,这公司创业板IPO被终止
  17. 在电脑上使用考研APP的方法(亲测有效)
  18. 石家庄联通宽带DNS服务器地址
  19. git 从远程服务器更新本地项目
  20. Github报错——Failed to connect to github.com port 443: Timed out

热门文章

  1. android re浏览器下载,RE文件浏览器
  2. wps中word转html乱码,wps转word格式乱码了怎么办
  3. matlab 读取odb,求教用C++方式读取abaqus的odb数据中的问题!!!
  4. qt.qpa.plugin: Could not load the Qt platform plugin xcb in /root/PycharmProjects/pythonPr
  5. 政府支撑智慧城市建设 楼宇对讲投身社区成长
  6. [原创]把vscode的快捷键json配置批量导入微信小程序开发工具
  7. freeswitch 自定义application
  8. 计算机x4,嵌入式计算机的PCIex4保持高容量和快速数据传输的方法
  9. python偏最小二乘法公式,python3 偏最小二乘法实现
  10. 你知道几个中文编程语言,快来瞧瞧这些有趣的中文编程语言。