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

这篇具有很好参考价值的文章主要介绍了【数学建模】灰色关联(Matlab代码实现)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

目录

1 灰色关联理论

2 算例及Matlab代码实现

2.1 算例1

2.2 算例2 

 2.3 算例3

2.4 算例4 

3 写在最后


1 灰色关联理论


灰色关联分析l是由邓聚龙教授于1982年提出的,也称“邓氏灰色关联法”。方法以部分信息已知 ,部分信息未知的“贫信息”为研究对象,通过对部分已知信息的生成和开发,实现对现实世界的定量描述。其基本思路是根据序列曲线的几何形状的相似程度来判断联系的紧密性,曲线越接近比较序列与参考序列的关联度越大,反之越小。灰色关联法能较好地客服回归分析中的不足,在样本量较小的“贫信息”中能较准确的找出关联性。

灰色关联分析法的优势在于,它弥补了采用数理统计方法系统分析所导致的缺憾,对样本量的多少和样本有无规律都适用,而且计算量小,十分方便,更不会出现与定性结果不符合的情况。但是灰色关联分析仅在我国有部分学者使用,在国际上并没有得到太多认可,而且当数据量较大的时候,使用标准化回归的方法是更好的选择,只有在数据很少万不得已的情况下,才考虑灰色关联分析,当然,你也可以两者综合考虑。

2 算例及Matlab代码实现

2.1 算例1

1)算例:

其中指标,x1:货物运输量;x2:港口货物吞吐量;x3:货物周转量;x4:GDP;x5:财政收入x6:城市居民人均可支配收入;x7:农村居民人均净收入。现研究x4-x7指标与x1指标之间的灰色关联度。数据表格如下:

年份 x1 x2 x3 x4 x5 x6 x7
2007 22578 27569 4987 2567.7 267.98 1.5429 1.172
2008 25698 29484 5048 3131 348.51 1.8546 1.2514
2009 27896 31589 5129 3858.2 429.1 2.0369 1.0254
2010 29540 34894 5569 4417.7 541.29 2.2589 1.189
2011 31058 36478 5783 5158.1 647.25 2.4276 1.4213
2012 35980 38695 6045 6150.1 736.45 2.5678 1.5304
2013 39483 40746 6259 7002.8 850 2.8546 1.7421

2)Matlab代码实现

代码属于模板类型,把数据换成自己的就行:来源:灰色关联法 —— matlab

clc;
clear;
%读取数据
data=xlsread('算例1.xlsx');
%数据标准化
data1=mapminmax(data',0.002,1); %标准化到0.002-1区间
data1=data1';
%%绘制 x1,x4,x5,x6,x7 的折线图,这里数据换成自己的
figure(1)
t=[2007:2013];
plot(t,data1(:,1),'Color','r','LineWidth',1.5)
hold on 
for i=1:4
    plot(t,data1(:,3+i),'--','LineWidth',1.2)
    hold on
end
xlabel('year')
legend('x1','x4','x5','x6','x7')
title('灰色关联分析')
 
%%计算灰色相关系数
%得到其他列和参考列相等的绝对值
for i=4:7
    data1(:,i)=abs(data1(:,i)-data1(:,1));
end
 
%得到绝对值矩阵的全局最大值和最小值
data2=data1(:,4:7);
d_max=max(max(data2));
d_min=min(min(data2));
%灰色关联矩阵
a=0.5;   %分辨系数
data3=(d_min+a*d_max)./(data2+a*d_max);
xishu=mean(data3);
disp(' x4,x5,x6,x7 与x1之间的灰色关联度分别为:')
disp(xishu)

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

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

2.2 算例2 

1)算例

分析产业对GDP的影响程度:

数据:

年份 国内生产总值 第一产业 第二产业 第三产业
2000 1988 386 839 763
2001 2061 408 846 808
2002 2335 422 960 953
2003 2750 482 1258 1010
2004 3356 511 1577 1268
2005 3806 561 1893 1352

2)Matlab代码实现

代码也是属于把数据换成自己的就可以了。来源:灰色关联案例与代码

clc;
close;
clear all;
x=xlsread('算例2.xlsx');
%load data.mat;
x=x(:,2:end)';%所有列,2到最后一列
%===获取行数列数=====
column_num=size(x,2);
index_num=size(x,1);

%% 1.数据均值化处理
x_mean=mean(x,2);
for i = 1:index_num
    x(i,:) = x(i,:)/x_mean(i,1);
end
%% 2.提取参考队列和比较队列
ck=x(1,:)
cp=x(2:end,:)
cp_index_num=size(cp,1);

%==2.1 比较队列与参考队列相减===
for j = 1:cp_index_num
    t(j,:)=cp(j,:)-ck;
end
%===2.2 求最大差和最小差====
mmax=max(max(abs(t)))
mmin=min(min(abs(t)))
rho=0.5;
%% 3.求关联系数
ksi=((mmin+rho*mmax)./(abs(t)+rho*mmax))

%% 4.求关联度
ksi_column_num=size(ksi,2);
r=sum(ksi,2)/ksi_column_num;

%% 5.关联度排序,得到结果r3>r2>r1
[rs,rind]=sort(r,'descend')

disp('=====关联度的大小=========')
rs
disp('=====关联度的排序=========')
rind

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

 2.3 算例3

用算例1的方法应用在算例2上,简单教学

clc;
clear;
%读取数据
data=xlsread('算例2.xlsx');
%数据标准化
data1=mapminmax(data',0.002,1); %标准化到0.002-1区间
data1=data1';
%%绘制 x1,x4,x5,x6,x7 的折线图,这里数据换成自己的
figure(1)
t=[2000:2005];
plot(t,data1(:,1),'Color','r','LineWidth',1.5)
hold on 
for i=1:4
    plot(t,data1(:,1+i),'--','LineWidth',1.2)
    hold on
end
xlabel('year')
legend('国内生产总值','第一产业',	'第二产业',	'第三产业')
title('灰色关联分析')
 
%%计算灰色相关系数
%得到其他列和参考列相等的绝对值
for i=2:4
    data1(:,i)=abs(data1(:,i)-data1(:,1));
end
 
%得到绝对值矩阵的全局最大值和最小值
data2=data1(:,2:4);
d_max=max(max(data2));
d_min=min(min(data2));
%灰色关联矩阵
a=0.5;   %分辨系数
data3=(d_min+a*d_max)./(data2+a*d_max);
xishu=mean(data3);
disp('第一产业,第二产业,第三产业与国内生产总值之间的灰色关联度分别为:')
disp(xishu)

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

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

2.4 算例4 

1)算例

灰色关联分析评价河流情况

数据:

河流 含氧量 PH值 细菌总数(个/ml) 植物性营养物量(ppm)
A 4.69 6.59 51 11.94
B 2.03 7.86 19 6.46
c 9.11 6.31 46 8.91
D 8.61 7.05 46 26.43
E 7.13 6.5 50 23.57
F 2.39 6.77 38 24.62
G 7.69 6.79 38 6.01
H 9.3 6.81 27 31.57
I 5.45 7.62 5 18.46
J 6.19 7.27 17 7.51
K 7.93 7.53 9 6.52
L 4.4 7.28 17 25.3
M 7.46 8.24 23 14.42
N 2.01 5.55 47 26.31
o 2.04 6.4 23 17.91
p 7.73 6.14 52 15.72
Q 6.35 7.58 25 29.46
R 8.29 8.41 39 12.02
s 3.54 7.27 54 3.16
T 7.44 6.26 8 28.41

2)Matlab代码 

主要也是换取自己的数据即可,代码来源:灰色关联分析+Matlab代码实现

%灰色关联分析评价河流情况
clear;clc;
load case4.mat;
%获取行数列数
r = size(case4,1);
c = size(case4,2);
%首先,把我们的原始指标矩阵正向化
%第二列中间型--->极大型
middle = input('请输入最佳的中间值:');
M = max(abs(case4(:,2)-middle));
for i=1:r
      case4(i,2) = 1-abs(case4(i,2)-middle)/M;
end
%第三列极小型--->极大型
max_value = max(case4(:,3)); 
case4(:,3) = abs(case4(:,3)-max_value);
%第四列区间型--->极大型
a = input('请输入区间的下界:');
b = input('请输入区间的下界:');
M = max(a-min(case4(:,4)),max(case4(:,4))-b);
for i=1:r
       if (case4(i,4)<a)
            case4(i,4) = 1-(a-case4(i,4))/M;
       elseif (case4(i,4)<=b&&case4(i,4)>=a)
           case4(i,4) = 1;
       else
           case4(i,4) = 1-(case4(i,4)-b)/M;
       end
end
disp('正向化后的矩阵为:');
disp(case4);
%把正向化后的矩阵进行预处理,消除量纲的影响
avg = repmat(mean(case4),r,1);
new_X = case4./avg;
%将预处理后的矩阵每一行的最大值取出,当成母序列(虚构的)
Y = max(new_X,[],2);
%计算各个指标和母序列的灰色关联度
%先把new_X矩阵所有元素都减去母序列中同行的元素,并取绝对值
Y2 = repmat(Y,1,c);
new_X = abs(new_X-Y2);
a = min(min(new_X)); %全矩阵最小值
b = max(max(new_X)); %全矩阵最大值
ro = 0.5;
new_X = (a+ro*b)./(new_X+ro*b);
disp('===========各个指标对于母序列的灰色关联度为:========================');
gamma = mean(new_X)
%计算各个指标的权重
disp('===============各个指标的权重为:=================');
weight = gamma./(sum(gamma,2))
%-------------------------------------------------------------------------------------------------------
%继续TOPSIS的步骤:对正向化后的矩阵X进行标准化(原矩阵除以每一列元素平方之和的开方)
temp1 = case4.*case4;               %先让每每一个元素平方
temp2 = sum(temp1);         %再对每一列求和
temp3 = temp2.^0.5;         %再把结果开方
temp4 = repmat(temp3,r,1);  %把开方后的结果按行复制r行
disp('******标准化后的矩阵为:');
Z = case4./temp4               %原矩阵除以每一列元素平方之和的开方
Z_max = max(Z)           %获得Z每一列中最大的元素
Z_min = min(Z)           %获得Z每一列中最小的元素
D_max = sum(weight.*(Z-repmat(Z_max,r,1)).^2,2).^0.5
D_min = sum(weight.*(Z-repmat(Z_min,r,1)).^2,2).^0.5
disp('该矩阵得分为:')
S = D_min./(D_max+D_min)
disp('矩阵归一化后得分为:');
S = S./(repmat(sum(S),r,1))

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

3 写在最后

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

【数学建模】灰色关联(Matlab代码实现)文章来源地址https://www.toymoban.com/news/detail-486587.html

到了这里,关于【数学建模】灰色关联(Matlab代码实现)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 数学建模.灰色关联分析

    1.前言:         如果要提高一片土地的粮食产量,那么肯定是要从土肥,土质,天气,气候,灾害,光照,水分等因素去分析,那么灰色关联分析就是去比较这些因素的权重,即判断哪个因素影响力大,这就是灰色关联分析的作用。其实也可以使用回归分析,方差分析等

    2024年02月02日
    浏览(38)
  • 数学建模学习:灰色关联分析

    1.概述 一般的抽象系统,如社会系统、经济系统、农业系统、生态系统、教育系统等都包含有许多种因素,多种因素共同作用的结果决定了该系统的发展态势。在众多的因素中,哪些是主要因素,哪些是次要因素;哪些因素对系统发展影响大,哪些因素对系统发展影响小;哪

    2024年02月15日
    浏览(23)
  • 【数学建模】灰色关联度分析

    目录 前言 一、灰色关联度分析是什么 二、使用步骤 1.数据归一化/标准化 1.1 导入库 2.读入数据 总结           灰色关联度分析(Grey Relation Analysis,GRA),是一种多因素统计分析的方法。简单来讲,就是在一个 灰色系统 中,我们想要了解其中某个我们所关注的某个项目受

    2024年02月05日
    浏览(63)
  • 灰色关联度分析(清风数学建模笔记)

    记录一下建模学习笔记 灰色关联分析主要有两个作用,一是进行系统分析,判断影响系统发展的因素的重要性。第二个作用就是用于综合评价问题,给出研究对象或者方案的优劣排名。 在系统发展过程中,若两个因素变化的趋势具有一致性,即同步变化程度较高,即可谓二

    2024年02月06日
    浏览(31)
  • 【数学建模】清风数模更新5 灰色关联分析

    诸如经济系统、生态系统、社会系统等抽象系统都包含许多因素,系统整体的发展受各个因素共同影响。 为了更好地推动系统发展,我们需要清楚哪些因素是主要的,哪些是次要的,哪些是积极的,哪些是消极的,这就要求我们进行系统分析。 数理统计中的系统分析方法包

    2024年02月12日
    浏览(27)
  • 数学建模—评价模型—灰色关联度分析Vs灰色综合评价

            黑色系统:只明确系统和环境的关系,内部未知         白色系统:内部结构、元素、组成、实现机理已知         灰色系统:部分明确系统与环境见关系、系统结构、实现过程。 灰色系统实例:(1)社会经济系统(企业收入、相关因素) 灰色系统理论

    2024年02月04日
    浏览(37)
  • 数学建模:评价性模型学习——灰色关联分析法(GRA模型)

    目录 前言 一、灰色关联分析 1.什么是灰色关联分析? 2.流程介绍 二、综合评价 1.数据无量纲化处理 2.确定参考序列 3.确定权重 4.计算灰色关联系数  5.计算灰色加权关联度 6.代码 总结          继续学习数学建模涉及的评价性模型,这篇会介绍如何使用灰色关联分析法进

    2024年02月04日
    浏览(149)
  • 数学建模 | 灰色预测原理及python实现

    目录 一、灰色预测的原理 二、灰色预测的应用及python实现 灰色预测是以灰色模型为基础,灰色模型GM(n,h)是微分方程模型,可用于描述对象做 长期、连续、动态 的反应。其中,n代表微分方程式的阶数,h代表微分方程式的变化数目。在诸多的灰色模型中,以灰色系统中 单序

    2024年01月16日
    浏览(34)
  • 【数学建模】多元线性回归(Python&Matlab代码实现)

    目录 1 概述 2 算例1 2.1 算例 2.2 Python代码实现  2.3 结果 3 算例2  3.1 算例 3.2 Python代码 3.3 结果 4 算例3 4.1 算例 4.2 Python代码 4.3 结果 5 算例4——Matlab代码实现 5.1 算例 5.2 Matlab代码实现 5.3 结果  6 写在最后 一元线性回归模型研究的是一个因变量与一个自变量之间呈直线趋势的

    2023年04月15日
    浏览(31)
  • 【数学建模】单、多因素试验的方差分析(Matlab代码实现)

    目录   1 概述 2 单因素方差分析 2.1 语法 2.2 算例 1 2.2.1 算例 2.2.2 Matlab代码 2.2.3 结果 2.3 算例2 2.3.1 算例 2.3.2 Matlab代码 2.4 算例3 2.4.1 算例 2.4.2 Matlab代码 2.4.3 结果 2.5 算例4(不均衡样本) 2.5.1 算例  2.5.2 Matlab代码 2.5.3 结果 3 双因子方差分析 3.1 语法 3.2 算例 3.3 Matlab代码 3

    2024年02月06日
    浏览(27)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包