因子分析的两个matlab案例
因子分析是指研究从变量群中提取共性因子的统计技术。最早由英国心理学家C.E.斯皮尔曼提出。他发现学生的各科成绩之间存在着一定的相关性,一科成绩好的学生,往往其他各科成绩也比较好,从而推想是否存在某些潜在的共性因子,或称某些一般智力条件影响着学生的学习成绩。因子分析可在许多变量中找出隐藏的具有代表性的因子。将相同本质的变量归入一个因子,可减少变量的数目,还可检验变量间关系的假设。
%--------------------------------------------------------------------------
% 从相关系数矩阵出发进行因子分析
%--------------------------------------------------------------------------
%***************************定义相关系数矩阵PHO*****************************
PHO = [1 0.79 0.36 0.76 0.25 0.51
0.79 1 0.31 0.55 0.17 0.35
0.36 0.31 1 0.35 0.64 0.58
0.76 0.55 0.35 1 0.16 0.38
0.25 0.17 0.64 0.16 1 0.63
0.51 0.35 0.58 0.38 0.63 1
];
%******************调用factoran函数根据相关系数矩阵作因子分析*****************
% 从相关系数矩阵出发,进行因子分析,公共因子数为2,设置特殊方差的下限为0,
% 不进行因子旋转
[lambda,psi,T] = factoran(PHO,2,'xtype','covariance','delta',0,'rotate','none')
% 定义元胞数组,以元胞数组形式显示结果
% 表头
head = {'变量', '因子f1', '因子f2'};
% 变量名
varname = {'身高','坐高','胸围','手臂长','肋围','腰围','<贡献率>','<累积贡献率>'}';
Contribut = 100*sum(lambda.^2)/6; % 计算贡献率,因子载荷阵的列元素之和除以维数
CumCont = cumsum(Contribut); % 计算累积贡献率
% 将因子载荷阵,贡献率和累积贡献率放在一起,转为元胞数组
result1 = num2cell([lambda; Contribut; CumCont]);
% 加上表头和变量名,然后显示结果
result1 = [head; varname, result1]
%从相关系数矩阵出发,进行因子分析,公共因子数为2,设置特殊方差的下限为0,
%进行因子旋转(最大方差旋转法)
[lambda,psi,T] =factoran(PHO,2,'xtype','covariance','delta',0)
Contribut = 100*sum(lambda.^2)/6 %计算贡献率,因子载荷阵的列元素之和除以维数
CumCont = cumsum(Contribut) %计算累积贡献率
% 从相关系数矩阵出发,进行因子分析,公共因子数为3,设置特殊方差的下限为0,
% 进行因子旋转(最大方差旋转法)
[lambda,psi,T] = factoran(PHO,3,'xtype','covariance','delta',0)
Contribut = 100*sum(lambda.^2)/6 % 计算贡献率,因子载荷阵的列元素之和除以维数
CumCont = cumsum(Contribut) % 计算累积贡献率
%--------------------------------------------------------------------------
% 读取examp12_02.xls中数据,进行因子分析
%--------------------------------------------------------------------------
%*********************************读取数据*********************************
[X,textdata] = xlsread('examp12_02.xls'); % 从Excel文件中读取数据
X = X(:,3:end); %
提取X的第3至最后一列,即要分析的数据
varname = textdata(4,3:end); %提取textdata的第4行,第3至最后一列,即变量名
obsname = textdata(5:end,2); %提取textdata的第2列,第5至最后一行,即国家或地区名
因子分析是指研究从变量群中提取共性因子的统计技术。最早由英国心理学家C.E.斯皮尔曼提出。他发现学生的各科成绩之间存在着一定的相关性,一科成绩好的学生,往往其他各科成绩也比较好,从而推想是否存在某些潜在的共性因子,或称某些一般智力条件影响着学生的学习成绩。因子分析可在许多变量中找出隐藏的具有代表性的因子。将相同本质的变量归入一个因子,可减少变量的数目,还可检验变量间关系的假设。
%******************调用factoran函数根据原始观测数据作因子分析*****************
% 从原始数据(实质还是相关系数矩阵)出发,进行因子分析,公共因子数为4
% 进行因子旋转(最大方差旋转法)
[lambda,psi,T,stats] = factoran(X,4)
Contribut = 100*sum(lambda.^2)/8 %计算贡献率,因子载荷阵的列元素之和除以维数
CumCont = cumsum(Contribut) %计算累积贡献率
% 从原始数据(实质还是相关系数矩阵)出发,进行因子分析,公共因子数为2
% 进行因子旋转(最大方差旋转法)
[lambda,psi,T,stats,F] = factoran(X, 2)
Contribut = 100*sum(lambda.^2)/8 %计算贡献率,因子载荷阵的列元素之和除以维数
CumCont = cumsum(Contribut) %计算累积贡献率
[varname' num2cell(lambda)]
%**************将因子得分F分别按耐力因子得分和速度因子得分进行排序*************
obsF = [obsname, num2cell(F)]; % 将国家和地区名与因子得分放在一个元胞数组中显示
F1 = sortrows(obsF, 2); % 按耐力因子得分排序
F2 = sortrows(obsF, 3); % 按速度因子得分排序
head = {'国家/地区','耐力因子','速度因子'};
result1 = [head; F1]; % 显示按耐力因子得分排序的结果
result2 = [head; F2]; % 显示按速度因子得分排序的结果
%*************************绘制因子得分负值的散点图***************************
plot(-F(:,1),-F(:,2),'k.') ; %
作因子得分负值的散点图
xlabel('耐力因子得分(负值)'); %为X轴加标签
ylabel('速度因子得分(负值)'); %为Y轴加标签
box off ; %去掉坐标系右上的边框
gname(obsname); %交互式添加各散点的标注
相关推荐:
- [综合文档]应答器设备技术规范(征求意见稿)A1
- [综合文档]教师 2012年高考政治试题按考点分类汇
- [综合文档]保险公司的总经理助理竞职演说
- [综合文档]卫生应急大练兵大比武活动考试--题库(
- [综合文档]徐州经济技术开发区总体规划环境影响报
- [综合文档]汉语拼音表(带声调)
- [综合文档]二年级 上 思维训练( 1~18)
- [综合文档]特色学校五年发展规划
- [综合文档]机床经常出现报警“X1轴定位监控”
- [综合文档]《电子技术基础》21.§5—2、3、4 习题
- [综合文档]浙江省深化普通高中课程改革
- [综合文档]CRISP原理 - 图文
- [综合文档]2017年电大社会调查研究与方法形考答案
- [综合文档]浅析建筑施工安全毕业论文
- [综合文档]《回忆我的母亲》名师教案
- [综合文档]装饰装修工程监理规划
- [综合文档]三下乡心得体会-文艺
- [综合文档]柱计算长度系数 - 图文
- [综合文档]全流程思考,提高燃电系统热电转换率--
- [综合文档]2018年嘉定区中考物理一模含答案
- 433M车库门滚动码遥控器
- 8、架空线路施工规范
- 大学四年声乐学习的体会
- 新北师大版五年级数学上册《轴对称再认
- 部编版五年级上册语文第六单元小结复习
- 小学六年级英语形容词用法
- 第2课 抗美援朝保家卫国 课件01(岳麓版
- 2015年天津大学运筹学基础考研真题,考
- 微机计算机控制技术课后于海生(第2版)
- 安全教育实践活动
- Delphi程序设计教程_第1章_Delphi概述
- 第八讲 工业革命与启蒙运动
- 《中华人民共和国药典》2005年版二部勘
- 科粤版九年级化学2.3构成物质的微粒(1)
- 西师大版数学三年级下册《长方形、正方
- ch6_冒泡排序演示
- 第4章 冲裁模具设计
- 浙江中小民营企业员工流失论文[终稿]
- 再议有线数字电视市场营运模式
- 昆明供水工程监理大纲




