[toc]

本篇分别有主成分分析,层次分析,聚类分析,因子分析的简单介绍以及在MATLAB(2018a)上使用的简单介绍 ( 附源码 )

主成分分析

主成分分析-百度百科

简单讲:主成分分析就是取出几个较少的变量尽可能多地反映原来变量的信息

(只看主要对结果有影的几个变量)

主成分分析适用于数学建模中筛选出少量变量对结果造成主要影响并用函数关系表征的情况

%% 主成分分析 (降维)

clc, clear

load example_1.txt %数据导入(数据要求:前几列为自变量,最后一列为因变量)

data = example_1;

[m, n] = size(data);

num = 3; % 选取的主成分的个数

mu = mean(data);

sigma = std(data); %标准差

%z-score标准化方法适用于属性A的最大值和最小值未知的情况,或有超出取值范围的离群数据的情况

%标准化的新数据=(原数据-均值)/标准差

std_data = zscore(data);

b = std_data(: , 1:end-1); % 四个变量x1, x2, x3, x4

r = cov(b); % 变量的协方差矩阵

% 运用协方差矩阵进行PCA

[PC, latent, explained] = pcacov(r); %返回主成分(PC)、协方差矩阵X的特征值 (latent)和每个特征向量表征在观测量总方差中所占的百分数(explained)

% 新的主成分z1 = PC(1,1)*x1 + PC(2,1)*x2 + PC(3,1)*x3 + PC(4,1)*x4 , z2 = ...

f = repmat(sign(sum(PC)), size(PC, 1), 1); %sum(PC)表示对矩阵PC的列求和

PC = PC .* f;

%1.普通的最小二乘法回归

regress_args_b = [ones(m, 1), b] \ std_data(:, end); %标准化数据的回归方程系数

bzh = mu ./ sigma;

% 原始数据的常数项

ch10 = mu(end) - bzh(1:end-1) * regress_args_b(2:end) * sigma(end);

fr_1 = regress_args_b(2:end); fr_1 = fr_1';

% 原始数据的自变量的系数

ch1 = fr_1 ./ sigma(1:end-1) * sigma(end);

% 此时模型为 y = ch10 + ch1[1]*x1 + ch1[2] * x2 + ch1[3] * x3 + ch1[4] * x4

% 计算均方误差

check1 = sqrt(sum( (data(:, 1:end-1) * ch1' + ch10 - data(:, end)) .^2 ) / (m - n))

%2.主成分回归模型

pca_val = b * PC(:, 1:num);

%主成分数据的回归方程系数

regress_args_pca = [ones(m, 1), pca_val] \ std_data(:, end);

beta = PC(:, 1:num) * regress_args_pca(2:num+1); %标准化数据的回归方程系数

% 原始数据的常数项

ch20 = mu(end) - bzh(1:end-1) * beta * sigma(end);

fr_2 = beta';

% 原始数据的自变量的系数

ch2 = fr_2 ./ sigma(1:end-1) * sigma(end);

% 此时模型为 y = ch20 + ch2[1]*x1 + ch2[2] * x2 + ch2[3] * x3 + ch2[4] * x4

% 计算均方误差

check2 = sqrt(sum( (data(:, 1:end-1) * ch2' + ch20 - data(:, end)) .^2 ) / (m - num - 1))

层次分析

层次分析-百度百科

简单讲:就是自己将两两影响因素作重要性对比得出判断矩阵,然后得出各个影响因素的权重

层次分析适用于数学建模多个变量对结果不同影响程度并用函数关系表征的情况

%层次分析法(AHP)

disp('请输入判断矩阵A(n阶)');

A = input('A=');

[n,n] = size(A);

x = ones(n,100);

y = ones(n,100);

m = zeros(1,100);

m(1) = max(x(:,1));

y(:,1) = x(:,1);

x(:,2) = A*y(:,1);

m(2) = max(x(:,2));

y(:,2) = x(:,2)/m(2);

p=0.0001; i=2; k=abs(m(2)-m(1));

while k>p

i=i+1;

x(:,i) = A*y(:,i-1);

m(i) = max(x(:,i));

y(:,i) = x(:,i)/m(i);

k=abs(m(i)-m(i-1));

end

a = sum(y(:,i));

w = y(:,i)/a;

t = m(i);

disp(w);

%一致性检验

CI = (t-n)/(n-1);

RI = [0 0 0.52 0.89 1.12 1.36 1.41 1.46 1.49 1.52 1.54 1.56 1.58 1.59];

CR = CI/RI(n);

if CR<0.10

disp('此矩阵一致性可以接受!');

disp('CI=');disp(CI);

disp('CR=');disp(CR);

end

聚类分析

聚类分析-百度百科

简单讲:就是多个影响因素按不同联系程度分类

%聚类分析

X; %X为导入数据的名称(类型:数值矩阵)

X=X'; %将矩阵X转置,按情况看是否需要此语句

Y=pdist(X); %X为要聚类的数组

SF=squareform(Y);

Z=linkage(Y,'average');

dendrogram(Z,0);

T=cluster(Z,'maxclust',3);

因子分析

因子分析-百度百科

可看作是主成分分析的推广,涉及的计算与主成分分析很类似

%因子分析

clc,clear

load ssgs.txt %把原始数据保存在纯文本文件ssgs.txt中

n=size(ssgs,1);

x=ssgs(:,[1:4]); y=ssgs(:,5); %分别提出自变量x1...x4和因变量x的值

x=zscore(x); %数据标准化

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

[vec1,val,con1]=pcacov(r) %进行主成分分析的相关计算

f1=repmat(sign(sum(vec1)),size(vec1,1),1);

vec2=vec1.*f1; %特征向量正负号转换

f2=repmat(sqrt(val)',size(vec2,1),1);

a=vec2.*f2 %求初等载荷矩阵

num=input('请选择主因子的个数:'); %交互式选择主因子的个数

am=a(:,[1:num]); %提出num个主因子的载荷矩阵

[bm,t]=rotatefactors(am,'method', 'varimax') %am旋转变换,bm为旋转后的载荷阵

bt=[bm,a(:,[num+1:end])]; %旋转后全部因子的载荷矩阵,前两个旋转,后面不旋转

con2=sum(bt.^2) %计算因子贡献

check=[con1,con2'/sum(con2)*100]%该语句是领会旋转意义,con1是未旋转前的贡献率

rate=con2(1:num)/sum(con2) %计算因子贡献率

coef=inv(r)*bm %计算得分函数的系数

score=x*coef %计算各个因子的得分

weight=rate/sum(rate) %计算得分的权重

Tscore=score*weight' %对各因子的得分进行加权求和,即求各企业综合得分

[STscore,ind]=sort(Tscore,'descend') %对企业进行排序

display=[score(ind,:)';STscore';ind'] %显示排序结果

[ccoef,p]=corrcoef([Tscore,y]) %计算F与资产负债的相关系数

[d,dt,e,et,stats]=regress(Tscore,[ones(n,1),y]);%计算F与资产负债的方程

d,stats %显示回归系数,和相关统计量的值

病毒传播数学建模matlab分析,数学建模MATLAB之分析法(一)相关推荐

  1. 城市交通拥堵问题matlab,深圳市交通拥堵问题分析---数学建模论文.doc

    一 摘要 本文主要针对深圳市交通拥堵问题进行分析.首先,我们对深圳市整体道路网的建设及其发展趋势进行分析,以梅林关.布吉关等关口局部为例,对交通量进行分析,并建立模型,从多方面分析了造成深圳市交通拥堵 ...

  2. 数学建模酶促反应matlab求解,数学建模——酶促反应.doc

    数学建模--酶促反应 数学建模 摘要 本文针对嘌呤霉素在某项酶促反应中对反应速度和底物浓度之间的关系的影响的问题,根据实际可知符合底物浓度与反应速度的模型有两种,即Michaelis-Menten模型 ...

  3. matlab数学建模可应用到第几章,《MATLAB在数学建模中的应用(第2版)》

    <MATLAB在数学建模中的应用(第2版)> 卓金武 (编者)) 基本信息 •出版社: 北京航空航天大学出版社; 第2版 (2014年9月1日) •丛书名: MATLAB开发实例系列图书 ...

  4. 【Matlab】数学建模_变异系数法

    [Matlab]数学建模_变异系数法 1.基本思想 2.数据集介绍 3.文件结构 4.详细代码及注释 5.运行结果 6.结果说明 1.基本思想 变异系数法通常用于解决数据分布不同的问题.它是一个用于测 ...

  5. 【数学建模】灰色关联(Matlab代码实现)

    目录 1 灰色关联理论 2 算例及Matlab代码实现 2.1 算例1 2.2 算例2   2.3 算例3 2.4 算例4  3 写在最后 1 灰色关联理论 灰色关联分析l是由邓聚龙教授于1982年提 ...

  6. 2020年数维杯数学建模A题舆情监测情感倾向分析建模求解全过程文档及程序

    2020年数维杯数学建模 A题 舆情监测情感倾向分析建模 原题再现:   公共危机事件爆发时,如拍石击水,相关信息在短时间内迅速传播,引起群众的广泛关注.其中负面报道或者主观片面的一些失实评判常常在一 ...

  7. 小行星轨道 matlab,小行星轨道问题的建模与求解数学建模论文.doc

    您所在位置:网站首页 > 海量文档 &nbsp>&nbsp学术论文&nbsp>&nbsp自然科学论文 小行星轨道问题的建模与求解数学建模论文.doc6 ...

  8. 数学建模专栏 | 第二篇 :MATLAB 数学建模快速入门

    MATLAB 虽然功能很强大,但上手却很容易,尤其是 R2013a 以后的版本, 使用起来更加容易. 现在使用 MATLAB 的一个理念就是像 Word 一样去使用 MATLAB.本讲将通过一个实例介 ...

  9. 巡检路线排班问题matlab,基于数学建模的巡检线路排班设计

    黄家云:基于数学建模的巡检线路排班设计 49 基于数学建模的巡检线路排班设计 黄家云 夏伟 蒋娜 张磊 (芜湖职业技术学院基础部,安徽芜湖,241003) 摘 要:巡检线路的排班设计是 2017 年全 ...

  10. matlab在数学中的应用论文,探究数学建模中MATLAB的运用

    随着科学技术的高速发展,自然科学的各个领域都需要在调查研究的基础上建立数学模型,并通过计算解决实际问题.数学建模在合理假设的基础上将实际问题简单化.抽象化,用数学知识解决问题并接受实践的检验.在这一过 ...

最新文章

  1. EOS共识机制——DPoS代理权益证明
  2. 上海Uber优步司机奖励政策(1月18日~1月24日)
  3. ajax文字上下滚动,ajax页面底部 滚动加载效果 实例
  4. android XML解析详解(封装好的工具类)
  5. linux中lvs命令详解,LVS之三:ipvsadm常用管理命令介绍 | 旺旺知识库
  6. POI批量导入及一键上传ocupload和pinyin4j组件的使用案例
  7. java线程基础巩固---线程生命周期以及start方法源码剖析
  8. freemarker生成java代码,freeMarker之根据模板生成JAVA代码示例
  9. kepware rest服务器_指南安全的KEPServerEX部署-Kepware.PDF
  10. 串珠问题(今日头条笔试)
  11. Excel 宏编程-使用excel宏编写第一个Hello World程序实例演示!
  12. Java中PDF转WORD
  13. Recorder Point Guideline
  14. C语言程序设计ncre,NCRE二级C语言程序设计辅导
  15. mybatis多表操作(一对一、一对多、多对多)
  16. Event Trigger 使用方法
  17. linux灯控软件下载,Maize DMX下载
  18. linux查看orc文件,ORC 文件扩展名: 它是什么以及如何打开它?
  19. 虚拟机拷贝文件到U盘(VMware Workstation 14)
  20. Look into Person: Self-supervised Structure-sensitive Learning and A New Benchmark for Human Parsing

热门文章

  1. mysql数据库:mysql增删改、单表、多表及子查询
  2. 2018大华软件大赛模拟赛第4题 (某股票操盘手账户里有N支股票,股价互不等)
  3. 点4下还是点1下?使用jQuery启动一个SharePoint工作流
  4. Asp.net AJAX JavaScript 基本类型扩展(7)——String 类型及其扩展
  5. [转载] kotlin 字符串_Kotlin基本类型字符串
  6. [转载] python| map()函数应用详解
  7. [转载] Python: ljust()|rjust()|center()字符串对齐
  8. [转载] python __import__ 搜索路径详解
  9. 二维平面上判断点是否在三角形内
  10. MySQL5.7 踩坑实录