因子分析——matlab

目录

一、起源

二、基本思想

三、算法用途

四、实例详解

1.读取数据

2.数据标准化

3.两种不同的做法

3.1 不用函数

3.2 factoran()法

4.对因子得分进行排序

5.对因子得分进行画图


一、起源

        因子分析的起源是这样的:1904年英国的一个心理学家发现学生的英语、法语和古典语成绩非常有相关性,他认为这三门课程背后有一个共同的因素驱动,最后将这个因素定义为“语言能力”。

        基于这个想法,发现很多相关性很高的因素背后有共同的因子驱动,从而定义了因子分析,这便是因子分析的由来。

二、基本思想

        我们再通过一个更加实际的例子来理解因子分析的基本思想:

        现在假设一个同学的数学、物理、化学、生物都考了满分,那么我们可以认为这个学生的理性思维比较强,在这里理性思维就是我们所说的一个因子。在这个因子的作用下,偏理科的成绩才会那么高。

        到底什么是因子分析?就是假设现有全部自变量x的出现是因为某个潜在变量的作用,这个潜在的变量就是我们说的因子。在这个因子的作用下,x能够被观察到。

        因子分析就是将存在某些相关性的变量提炼为较少的几个因子,用这几个因子去表示原本的变量,也可以根据因子对变量进行分类

        因子分子本质上也是降维的过程,和主成分分析(PCA)算法比较类似。

三、算法用途

        因子分析法和主成分分析法有很多类似之处。因子分析的主要目的是用来描述隐藏在一组测量到的变量中的一些更基本的,但又无法直接测量到的隐性变量。因子分析法也可以用来综合评价。

        其主要思路是利用研究指标的之间存在一定的相关性,从而推想是否存在某些潜在的共性因子,而这些不同的潜在的共性因子不同程度地共同影响着研究指标。因子分析可以在许多变量中找出隐藏的具有代表性的因子,将共同本质的变量归入一个因子,可以减少变量的数目。

四、实例详解

 数据来源于中国统计年鉴。

1.读取数据

[data,textdata] = xlsread('D:\桌面\aa.xls')%读取数据

让我们来看一下,读取的 data 和 textdata

 然后我们在读取一下变量名

varname = textdata(1,2:end)%提取textdata的第1行,第2至最后一列,即变量名

 运行结果:

 最后我们再看一下它的每行的首项,在这突然不知道叫啥了。。。。

obsname = textdata(2:end,1)%提取textdata的第1列,第2行至最后一行,即地区名

运行结果为:

2.数据标准化

标准化的数据均值为0,标准差为1;就是原数据减去均值,再除以标准差(无偏估计)

 

data=zscore(data) %数据标准化

运行结果:

3.两种不同的做法

3.1 不用函数

3.1.1  求相关系数矩阵

r=corrcoef(data) %相关系数矩阵

 运行结果:

3.1.2 带入主成分分析进行计算

%进行主成分分析的相关计算
%vec是r的特征向量,val为r的特征值,con为各个主成分的贡献率
[vec,val,con]=pcacov(r); %进行主成分分析的相关计算

3.1.3 求载荷矩阵

f1=repmat(sign(sum(vec)),size(vec,1),1); 
vec=vec.*f1; %特征向量正负号转换 
f2=repmat(sqrt(val)',size(vec,1),1); 
a=vec.*f2 %求初等载荷矩阵 

 运行结果:

3.1.4  因子旋转(最大方差法)

num=input('请选择主因子的个数:'); %选择主因子的个数
%其中b为旋转后的载荷矩阵,t为变换的正交矩阵
[b,t]=rotatefactors(a(:,1:num),'method', 'varimax'); %对载荷矩阵进行旋转 
bz=[b,a(:,num+1:end)] %旋转后的载荷矩阵 

 选择两个因子并输出:

3.1.5 贡献率

gx=sum(bz.^2); %计算因子贡献 
gxv=gx/sum(gx); %计算因子贡献率

3.1.6 因子得分

dfxsh=inv(r)*b; %计算得分函数的系数 
F=data*dfxsh ;%计算各个因子的得分

3.2 factoran()法

这个函数具有一定的 bug 所以不太建议使用!!!

3.2.1因子旋转

%调用factoran函数根据原始观测数据作因子分析4
% 进行因子旋转(最大方差旋转法)
%在这里选择2个主因子进行输出
num=input('请选择主因子的个数:'); %选择主因子的个数
[lambda,psi,T,stats,F] = factoran(data,num)

 运行结果:

 

3.2.2 贡献率

%计算贡献率,因子载荷矩阵的列元素的平方和除以维数
gx = 100*sum(lambda.^2)/8
gxv = cumsum(Contribut) %计算累积贡献率

3.2.3  因子得分

在上面 factoran() 函数的输出结果中就已经有了

4.对因子得分进行排序

%将因子得分F分别按因子得分1和因子得分2进行排序
obsF = [obsname, num2cell(F)] ;%将国家和地区名与因子得分刚在一个元胞数组中显示
F1 = sortrows(obsF, 2) ;   % 按因子得分1排序
F2 = sortrows(obsF, 3);   % 按因子得分2排序
head = {'地区','因子1','因子2'};
result1 = [head; F1]
result2 = [head; F2]

 输出:

5.对因子得分进行画图

在这里就表示一个的哦!!表示函数法那个吧,另一种自己试试吧,结果不太一样!!!

gname()  函数 ,你鼠标选中哪个点,进行击右键就会显示地区名

%绘制因子得分负值的散点图
plot(F(:,1),F(:,2),'k.');%作因子
xlabel('因子得分1');
ylabel('因子得分2');
gname(obsname);%交互式添加各散点的标注

输出: 

 

因子分析就到这里了,如果有不足之处,请大家及时指出,感谢!!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/565006.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

因子分析——python

目录 一、起源 二、基本思想 三、算法用途 四、因子分析步骤 五、factor_analyzer库 四、实例详解 1.导入库 2.读取数据 3.充分性检测 3.1 Bartletts球状检验 3.2 KMO检验 4.选择因子个数 4.1 特征值和特征向量 4.2 可视化展示 4.3 可视化中显示中文不报错 5.因…

【蓝桥杯每日一练】 三色旗

目录 1.说明 2.解法 3.python实现 第一种 第二种 第三种 1.说明 三色旗的问题最早由E.W.Dijkstra所提出,他所使用的用语为Dutch Nation Flag(Dijkstra为荷兰人),而多数的作者则使用Three-Color Flag来称之。 假设有一条绳子,上面有红…

C语言结构体数组

结构体数组,是指数组中的每个元素都是一个结构体。 定义结构体数组和定义结构体变量的方式类似。 示例 struct stu{char *name; //姓名int num; //学号int age; //年龄char group; //所在小组 float score; //成绩 }class[5];表示一个班级有5个学生。 结构…

C语言结构体指针

当一个指针变量指向结构体时,我们就称它为结构体指针。 结构体指针的定义形式一般为: struct 结构体名 *变量名;下面是一个定义结构体指针的实例: //结构体 struct stu{char *name; //姓名int num; //学号int age; //年龄char group; /…

熵权法 —— matlab

目录 一、熵权法介绍 二、熵权法赋权步骤 1.指标正向化 mapminmax介绍 2.数据标准化 3.计算信息熵 4.计算权重以及得分 三、实例分析 1.读取数据 2.指标正向化 2.1 越小越优型处理 2.2 某点最优型指标处理 3.数据标准化 4.计算信息熵 5.计算权重 6.计算得分 总…

熵权法 —— python

目录 一、熵权法介绍 二、熵权法赋权步骤 1.指标正向化 mapminmax介绍 2.数据标准化 3.计算信息熵 4.计算权重以及得分 四、实例分析 1.导入相关库 2.读取数据 2.指标正向化 2.1 越小越优型处理 2.2 某点最优型指标处理 3.数据标准化 4.计算信息熵 5.计算权重 6.…

C语言枚举类型详解

情景进入 在编程的时候,有些数据的取值往往是有限的,只能是非常少量的整数,并且最好为每个值都取一个名字,以方便在后续代码中使用,比如一个星期只有七天,一年只有十二个月,一个班每周有六门课…

R语言基础入门(3)之数据类型与相应运算1

目录 一、常量与变量 1.常量 2.变量 二、数据类型 三、数值型向量 3.1 c() 函数 3.2 length(x) 3.3 numeric() 四、向量运算 1.标量和标量运算 2.向量与标量运算 3.等长向量运算 4.不等长向量的运算 五、向量函数 1.向量化的函数 2.排序函数 3.统计函数…

C语言位运算详解

C语言位运算包括:按位与运算、或运算、异或运算、左移运算、右移运算。 位运算,就是对一个比特(Bit)位进行操作。比特(Bit)是一个电子元器件,8个比特构成一个字节(Byte)…

R语言基础入门(4)之数据类型与相应运算2

目录 一、逻辑型向量与比较运算 二、 逻辑运算 三、逻辑运算函数 一、逻辑型向量与比较运算 逻辑型是 R 的基本数据类型之一&#xff0c;只有两个值 TRUE 和 FALSE, 缺失时为 NA。逻辑值一般产生自比较&#xff0c;如sele <- (log10(15) < 2); print(sele) 返回&…

C语言typedef的用法详解

C语言允许为一个数据类型起一个新的别名&#xff0c;就像给人起“绰号”一样。 起别名的目的不是为了提高程序运行效率&#xff0c;而是为了编码方便。例如有一个结构体的名字是 stu&#xff0c;要想定义一个结构体变量就得这样写&#xff1a; struct stu stu1;struct 看起来…

R语言基入门(5)之字符型数据及其处理

目录 1.字符型向量 2. paste() 函数 3.转换大小写 4.字符串长度 5.取子串 6. 类型转换 7. 字符串拆分 8.字符串替换功能 9.正则表达式 1.字符型向量 字符型向量是元素为字符串的向量。如s <- c(abc, , a cat, NA, 李明) s 返回&#xff1a; 2. paste() 函数 针对…

C语言const的用法详解

我们希望定义这样一种变量&#xff0c;它的值不能被改变&#xff0c;在整个作用域中都保持固定。例如&#xff0c;用一个变量来表示班级的最大人数&#xff0c;或者表示缓冲区的大小。为了满足这一要求&#xff0c;可以使用const关键字对变量加以限定&#xff1a; const int M…

R语言基础入门(6)之向量下标和子集

目录 1.正整数下标 2.负整数下标 3.空下标与零下标 4.下标超界 5.逻辑下标 6. which()、which.min()、which.max() 函数 7. 元素名 8.用 R 向量下标作映射 9.集合运算 练习 1.正整数下标 首先定义一个x&#xff0c;然后对向量 x, 在后面加方括号和下标可以访问向量…

C语言随机数的生成

在编程中&#xff0c;我们经常需要生成随机数&#xff0c;例如&#xff0c;贪吃蛇游戏中在随机的位置出现食物&#xff0c;扑克牌游戏中随机发牌等。 在C语言中&#xff0c;我们一般使用 <stdlib.h> 头文件中的 rand() 函数来生成随机数&#xff0c;它的用法为&#xff…

R语言基础入门(7)之数据类型的性质

目录 1.存储模式与基本类型 2.类属 3.类型转换 4.属性 5.str() 函数 6.关于赋值 1.存储模式与基本类型 R语言中根据类型可以将数据划分为&#xff1a; 数值型&#xff08;numeric&#xff09;整数型&#xff08;integer&#xff09;字符型&#xff08;character&#xff09…

C++班级通讯录

C实现班级通讯录管理系统 设计流程 本系统基于C实现班级通讯录管理系统。功能包括增、删、查、改等。通讯录包括的个人信息有姓名、学号、性别、籍贯、政治面貌、手机号、QQ号、宿舍等。主要用到了指针、结构体、遍历链表、文件读取等知识点。 优点 1 . 此系统含有欢迎使用的…

两万字教会你解析库之Beautiful Soup

目录 1.简介 2.准备工作 3.解析器 4.基本用法 5.节点选择器 5.1选择元素 5.2提取信息 5.3嵌套选择 5.4关联选择 6.方法选择器 7. css 选择器 7.1 嵌套选择 7.2 获取属性 7.3 获取文本 总结 1.简介 简单来说&#xff0c;Beautiful Soup就是Python的一个HTML或XM…

C语言实现随机抽取纸牌

程序设计要求 本程序负责发一副标准纸牌&#xff0c;每张标准纸牌都有一种花色&#xff08;梅花、方块、黑桃、红桃&#xff09;和一个等级&#xff08;2&#xff0c;3&#xff0c;4&#xff0c;5&#xff0c;6…K,A&#xff09;。程序需要用户指明手机有几张牌。 程序设计流…

R语言基础入门(8)之日期时间

目录 1.日期和日期时间类型 2.从字符串生成日期数据 3.日期显示格式 4.访问日期时间的组成值 5.日期舍入计算 6.日期计算 6.1 时间长度 6.2 时间周期 6.3 时间区间 7.基本 R 软件的日期功能 7.1 生成日期和日期时间型数据 7.2 取出日期时间的组成值 7.3 日期计算 练…