Matlab代码来源是司守奎书中的案例。

clc;
clear;%% 1.进行主成分分析
fid = fopen('data.txt');%打开数据文件,返回文件标志符
data1 = textscan(fid,'%s %f %f %f %f %f','CollectOutput',1);
data = data1{2};
data = reshape(data, [16, 5]);
m = size(data, 1);
x = data(:,5);data = data(:,1:4);num = 2;
% 数据标准化
data = zscore(data);
r = cov(data);
% 进行主成分分析的相关计算
[vec, val, con] = pcacov(r);
disp('旋转前特征向量:');
val
disp('旋转前因子贡献率:');
conf1 = repmat(sign(sum(vec)), size(vec,1), 1);
% 特征向量正负号转换
vec = vec.*f1;
f2 = repmat(sqrt(val)', size(vec,1), 1);
% 载荷矩阵
disp('载荷矩阵');
a = vec.*f2%% 2.对载荷矩阵进行旋转
% 如果指标变量多,选择的主因子个数少,可以直接使用factoran实现因子分析
% varimax采用最大方差法进行旋转
[b, t] = rotatefactors(a(:,1:num),'method','varimax');
% 旋转后的载荷矩阵
disp('旋转后的载荷矩阵:');
bz = [b,a(:,num+1:end)]
disp('成分转化矩阵');
t
% 计算因子贡献
disp('旋转后的因子贡献:');
gx = sum(bz.^2)
% 计算因子贡献率
disp('旋转后的因子贡献率:');
gxv = gx/sum(gx)
% 计算得分函数的系数
disp('得分函数的系数:');
dfxsh = inv(r)*b
% 计算各个因子的得分
disp('上市公司在各个因子的得分:');
df = data * dfxsh;% 对各因子的得分进行加权求和
zdf = df*gxv(1:num)'/sum(gxv(1:num));
% 对企业进行排名
[szdf, ind] = sort(zdf, 'descend');
% 显示计算结果
xianshi = [df(ind,:)'; zdf(ind)'; ind'];
for j = 1:mi = ind(j);disp(['第',num2str(j),'名:',data1{1}{i},'=>F1得分为',num2str(df(i,1)),',F2得分为',num2str(df(i,2)),',F得分为',num2str(zdf(i))]);
end
disp('\n');
% 计算相关系数
[x_zdf_coef, p] = corrcoef([zdf, x]);
disp('F与x之间的相关系数为');
x_zdf_coef%% 回归分析计算
disp('因子分析法回归方程系数为d1');
[d1, d1int,r,rint,stats] = regress(zdf, [ones(m,1), x]);
d1
% 绘制残差及其置信区间
figure(1)
rcoplot(r,rint)
% 绘制回归曲线图
figure(2)
[x,ind] = sort(x);
p = [ones(length(x),1), x]*d1;
plot(x,zdf(ind),'bo');
hold on;
plot(x,p,'rx');

其中data.txt为:

歌华有线 43.31   7.39    8.73    54.89   15.35
五粮液 17.11   12.13   17.29   44.25   29.69
用友软件    21.11   6.03    7   89.37   13.82
太太药业    29.55   8.62    10.13   73  14.88
浙江阳光    11  8.41    11.83   25.22   25.49
烟台万华    17.63   13.86   15.41   36.44   10.03
方正科技    2.73    4.22    17.16   9.96    74.12
红河光明    29.11   5.44    6.09    56.26   9.85
贵州茅台    20.29   9.48    12.97   82.23   26.73
中铁二局    3.99    4.64    9.35    13.04   50.19
红星发展    22.65   11.13   14.3    50.51   21.59
伊利股份    4.43    7.3 14.36   29.04   44.74
青岛海尔    5.4 8.9 12.53   65.5    23.27
湖北宜化    7.06    2.79    5.24    19.79   40.68
雅戈尔 19.82   10.53   18.55   42.04   37.19
福建南纸    7.26    2.99    6.99    22.72   56.58

结果分析将数据导入SPSS,可以得到:

  1. 对比一:SPSS中的初始特征值部分对应Matlab通过[vec, val, con] = pcacov®得到的val和con值,其中vec特征值对应总计,con为对应方差百分比。

因为这里手动设置了提取两个公因子,因此提取载荷平方和部分取的是初始特征值的前两行。

  1. 对比二:SPSS中总方差解释表中的旋转载荷平方和对应Matlab通过对rotatefactors命令载荷矩阵进行旋转后得到的gx值和gxv值。

  2. 对比三
    SPSS的成分矩阵表对应于Matlab中计算的载荷矩阵a,这里SPSS只取了两个主成分的结果。

  3. 对比四
    SPSS旋转后的成分矩阵对应与Matlab旋转后计算得到的矩阵bz。

  4. 对比五
    SPSS中的成分转换矩阵对应于Matlab计算得到的成分转化矩阵。

其中SPSS对应的一些设置:

使用Matlab对最后的结果进行回归计算:

因子分析法(Matlab与SPSS对比)相关推荐

  1. 用相关法辨识系统的脉冲响应 matlab,基于相关分析法的系统辨识算法对比及仿真...

    计算机工程应用技术 ComputerKnowledgeand Technology 电脑知识第12卷第9期 (2016年3月) 基于相关分析法的系统辨识算法对比及仿真 冀征难 (国防科技大学 机电工程 ...

  2. ahp层次分析法matlab代码_Matlab数据分析实战,基于AHP高校食堂满意度调查分析

    层次分析法(Analytical Hierachy Process,AHP)是匹兹堡大学T.L.Saaty教授在20世纪70年代初期提出对定性问题进行定量分析的一种渐变灵活的多准则决策方案. 其特点是 ...

  3. Matlab:序列分析法MATLAB代码

    Matlab:序列分析法MATLAB代码 目录 输出结果 设计代码 输出结果 更新-- 设计代码 ###下面所有带代码中的n值需要以自己输入的数据为准###1.简单一次滑动平均法预测MATLAB程序代 ...

  4. matlab和c 对比,matlab与c的对比研究

    .RESET SESSION DELVAR, A Purpose π 180/π ≈ 57.2958 ∞ Not a number Matlab inf NaN A = [1,2,3] B = [4, ...

  5. 目标层准则层MATLAB,层次分析法-MATLAB

    层次分析法-MATLAB 第八章 层次分析法 层次分析法(Analytic Hierarchy Process,简称AHP)是对一些较为复杂.较为模糊的问题作出决策的简易方法,它特别适用于那些难于完全 ...

  6. 矩阵位移法matlab编程,矩阵位移法_MATLAB_GUI.doc

    Matrix_Displacement_Method--by MATLAB GUI PAGE58 / NUMPAGES64 yanfeng39@zju.edu.cn <结构力学>课程设计之 ...

  7. 灰色关联与TOPSIS法 —— matlab

    目录 1.简介 2.算法详解 2.1 指标正向化及标准化 2.2 找到最大最小参考向量 2.3 计算与参考向量的相关系数 2.4 求评分 3.实例分析 3.1 读取数据 3.2 数据标准化 3.3 得 ...

  8. matlab中牛顿下山法实例,非线性方程的数值解法牛顿下山法matlab

    非线性方程的数值解法牛顿下山法matlab 1 非线性方程的数值解法 --计算物理实验作业九 陈万 物理学2013级 130******** ● 题目: 用下列方法求0133=--=x x f(x)在 ...

  9. matlab中牛顿下山法实例,非线性方程的数值解法牛顿下山法matlab.docx

    非线性方程的数值解法牛顿下山法matlab.docx 1 非线性方程的数值解法 --计算物理实验作业九 陈万 物理学2013级 13020011006  题目: 用下列方法求 在 附近的根.根的准确 ...

  10. matlab 回归分析t检验,第三章 利用Matlab和SPSS进行线性回归分析

    §3.利用Matlab和SPSS进行线性回归分析 回归分析是处理两个及两个以上变量间线性依存关系的统计方法.可以通过软件Matlab和SPSS实现. 1.利用Matlab软件实现 在Matlab中,可 ...

最新文章

  1. 【推荐】Flex+asp.net上传文件
  2. MATLAB_edge()
  3. 做了几道Linux笔试题1
  4. FD.io/VPP — L3 vRouter
  5. proe输入数字时成双出现_罗斯蒙特温度变送器3144P单只和双只输入输出的的含义...
  6. MySql_5-7安装教程
  7. Excel XP受损文件的急救三招
  8. 程序员十大心愿,程序员:你这么了解我的心声的嘛!
  9. hdu 2222 ac自动机
  10. 移动应用安全形势分析报告
  11. WordPress添加背景音乐
  12. 利用NTFS流文件隐藏
  13. LKT系列加密芯片DES加解密以及OpenSSL DES接口实现加解密
  14. DevExpress DXperience最新版订阅加载程序
  15. 信息熵是怎样炼成的 | 纪念信息论之父香农
  16. 背包那些经典的例子( 上 )
  17. Steam安装游戏时,无法选择C盘(无法选择其他盘(盘符))
  18. behavior3editor环境搭建
  19. 蓝牙耳机BES2300P通过盒子获取/修改耳机状态信息
  20. 一次惨痛的线下机房上云的经历

热门文章

  1. x战娘2服务器维护,x战娘2变态版攻略
  2. 单片机通过串口与电脑通信
  3. 如何将苹果手机里照片和视频传输至win或mac电脑上面?
  4. 国外开放的硕博论文、期刊、数据库下载网站
  5. Eclipse下载以及旧版本下载
  6. [GIS教程] 5.2 空间数据管理 | SDE空间数据引擎
  7. jquery.seat-charts.1.1.15 选座座位插件的方法介绍
  8. 如何理解最小二乘法?
  9. 一次局域网入侵全过程
  10. python暴力破解压缩密码?