灰色关联法 —— matlab

article/2025/10/19 6:41:32

目录

1.简介

2.算法详解

2.1 数据标准化

2.2 计算灰色相关系数

2.3 计算灰色关联度系数 

3.实例分析

3.1 读取数据

3.2 数据标准化

3.3 绘制 x1,x4,x5,x6,x7 的折线图

3.4 计算灰色相关系数

完整代码


1.简介

        对于两个系统之间的因素,其随时间或不同对象而变化的关联性大小的量度,称为关联度。在系统发展过程中,若两个因素变化的趋势具有一致性,即同步变化程度较高,即可谓二者关联程度较高;反之,则较低。因此,灰色关联分析方法,是根据因素之间发展趋势的相似或相异程度,亦即“灰色关联度”,作为衡量因素间关联程度的一种方法。

        灰色关联分析可以用于衡量因素相关程度的同时,也有论文将其用于综合评价,其原理思想和TOPSIS法是比较相似的。 

2.算法详解

2.1 数据标准化

 因为每个指标的数量级不一样,需要把它们化到同一个范围内再比较。标准化的方法比较多,这里仅用最大最小值标准化方法。

        设标准化后的数据矩阵元素为rij,由上可得指标正向化后数据矩阵元素为 (Xij)'

2.2 计算灰色相关系数

我们常见的灰色相关系数表达式如下:

   Xo(k)为参考列,p为分辨系数。它的范围为(0~1),它的作用为控制区分度,它的值越小,区分度越大,它的值越大,区分度越小。  常常取0.5。乍一看这个公式还是有些难懂,接下来详细介绍一下它的原理。

2.3 计算灰色关联度系数 

  • 参考向量的选择

        例如研究x2指标与x1指标之间的灰色关联度。所以将x1列作为参考向量,即要研究与谁的关系,就将谁作为参考。设参考向量为Y1=x1,生成新的数据矩阵 X1=x2.

  • 生成绝对值矩阵 

设生成的绝对值矩阵为A

A=[X1-Y1],亦是A=[x2-x1]

设dmax为绝对值矩阵A的最大值,dmin为绝对值矩阵A的最小值。

  • 计算灰色关联矩阵

设灰色关联矩阵为B

  • 计算灰色关联

3.实例分析

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

年份x1x2x3x4x5x6x7
2007225782756949872567.7267.981.54291.172
2008256982948450483131348.511.85461.2514
2009278963158951293858.2429.12.03691.0254
2010295403489455694417.7541.292.25891.189
2011310583647857835158.1647.252.42761.4213
2012359803869560456150.1736.452.56781.5304
2013394834074662597002.88502.85461.7421

3.1 读取数据

data=xlsread('D:\桌面\huiseguanlian.xlsx')

返回:

3.2 数据标准化

%数据标准化
data1=mapminmax(data',0.002,1) %标准化到0.002-1区间

 返回:

3.3 绘制 x1,x4,x5,x6,x7 的折线图

figure(1)
t=[2007:2013];
plot(t,data1(:,1),'LineWidth',2)
hold on 
for i=1:4plot(t,data1(:,3+i),'--')hold on
end
xlabel('year')
legend('x1','x4','x5','x6','x7')
title('灰色关联分析')

返回:

从图中可以看出,这几个指标的趋势大致相同

3.4 计算灰色相关系数

3.4.1 得到其他列和参考列相等的绝对值

%得到其他列和参考列相等的绝对值
for i=4:7data1(:,i)=abs(data1(:,i)-data1(:,1));
end

3.4.2 得到绝对值矩阵的全局最大值和最小值

%得到绝对值矩阵的全局最大值和最小值
data2=data1(:,4:7);
d_max=max(max(data2));
d_min=min(min(data2));

3.4.3 定义分辨系数

a=0.5

3.4.4 计算灰色关联矩阵

data3=(d_min+a*d_max)./(data2+a*d_max);
xishu=mean(data3);
disp(' x4,x5,x6,x7 与 x1之间的灰色关联度分别为:')
disp(xishu)

返回:

完整代码

clc;clear;
%读取数据
data=xlsread('D:\桌面\huiseguanlian.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),'LineWidth',2)
hold on 
for i=1:4plot(t,data1(:,3+i),'--')hold on
end
xlabel('year')
legend('x1','x4','x5','x6','x7')
title('灰色关联分析')%%计算灰色相关系数
%得到其他列和参考列相等的绝对值
for i=4:7data1(:,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)

http://chatgpt.dhexx.cn/article/LqjrE0O4.shtml

相关文章

如何利用python实现灰色关联分析?

1.灰色关联分析简介 灰色系统这个概念是相对于白色系统和黑色系统而言的。从控制论的知识里,颜色一般代表对于一个系统我们已知信息的多少,白色代表信息量充足,黑色代表我们其中的构造并不清楚的系统,而灰色介于两者之间&#xf…

灰色关联分析法详解及python实践

1. 关于灰色关联分析 1.1. 什么是灰色关联分析 灰色关联分析是指对一个系统发展变化态势的定量描述和比较的方法,其基本思想是通过确定参考数据列和若干个比较数据列的几何形状相似程度来判断其联系是否紧密,它反映了曲线间的关联程度。 在系统发展过…

python灰色关联度分析_灰色关联分析法 python

广告关闭 腾讯云11.11云上盛惠 ,精选热门产品助力上云,云服务器首年88元起,买的越多返的越多,最高返5000元! 本文2290字,预计阅读需10分钟; 关联分析(association analysis)主要用于发现隐藏在大型数据集中的有意义的联系,它起源于商品销售领域,“啤酒与尿布”的故…

灰色关联分析应用

参考学习b站:数学建模学习交流 感觉这篇博客写的很好:灰色关联分析Matlab代码实现 看完后自己尝试运行的一下,发现和自己本地的matlab代码运行结果不同,就把其中细节写到这篇博客里了 运行上述博客应用2的代码,将更…

灰色关联案例与代码

案例 求他们之间的关联度,并且大小排序。 代码 写了注释,自行查看,换了案例,你只需要修改这一部分即可: 因为读取不一样了嘛,你总要改改数字。 clc; close; clear all; xxlsread(gray_data1.xlsx); xx(:,2:end);%所…

灰色关联法 —— python

目录 1.简介 2.算法详解 2.1 数据标准化 2.2 计算灰色相关系数 2.3 计算灰色关联度系数 3.实例分析 3.1 读取数据 3.2 数据标准化 3.3 绘制 x1,x4,x5,x6,x7 的折线图 3.4 计算灰色相关系数 完整代码 1.简介 对于两个系统之间的因素,其随时间或不同对象而变…

数学建模之灰色关联分析(GRA)

本文参考的是司守奎,孙兆亮主编的数学建模算法与应用(第二版) 灰色关联分析不仅能够用做关联分析,也能够用于评价。 其具体分析步骤如下: 第一步,需要确定评价对象和参考数列。 评价对象一般指的就是待分…

【DOM】DOM操作之如何添加、删除、替换元素_04

目录 一. 添加删除替换元素 1. 添加新元素: 3步: (1). 创建一个新的空元素对象 (2). 为新元素设置必要的属性: 新元素.属性名"属性值" (3). 将新元素添加到DOM树 2. 示例: 动态创建a元素和input元素 3. 示例: 动态生成表格内容 4. 优化 5. 删除元素: 父元素.re…

DOM操作_获取元素

概述 DOM (Document objectModal) :文档对象模型。 DOM;是浏览器提供的(浏览器特有),专[ ]用来操作网页内容的一些JS对象。 目的:让我们可以使用Js/TS代码来操作页面(HTML) 内容,让页面“动”起来,从而实现Web开发。 HTML:超文本标记语言…

DOM操作class属性的方法

新增标签对象.classList.add(新增属性值) 删除 标签对象.classList.remove(删除属性值) 替换标签对象.classList.replace(原始 , 新的) 切换标签对象.classList.toggle(切换属性值)有执行删除,没有执行新增 <body><div class "box box2 "></div&…

js DOM操作自定义属性

自定义属性&#xff1a;在日常开发中&#xff0c;html的内置属性已经无法满足程序员的日常开发&#xff0c;所以需要我们自己定义属性&#xff0c;H5给我们新增了自定义属性&#xff0c;为了防止自定义属性和内置属性引起歧义&#xff0c;所以H5规定自定义属性以data-开头定义。…

JavaScript之DOM操作获取元素、事件、操作元素、节点操作

什么是 DOM&#xff1f; 文档对象模型&#xff08;Document Object Model&#xff0c;简称 DOM&#xff09;&#xff0c;是 W3C 组织推荐的处理可扩展标记语言&#xff08;HTML或者XML&#xff09;的标准编程接口。W3C 已经定义了一系列的 DOM 接口&#xff0c;通过这些 DOM 接…

DOM 基础操作

文章目录 前言一、DOM 简介1.1 什么是 DOM 二、获取元素2.1 如何获取页面元素2.2 根据 ID 获取2.3 根据标签名获取2.4 通过 HTML5 新增的方法获取2.5 获取特殊元素&#xff08;body&#xff0c;html&#xff09; 三、事件基础3.1事件三要素3.2 执行事件的步骤3.3常见的鼠标事件…

[js]DOM操作

DOM也就是文档对象模型&#xff1a;document object model 主要用来动态操作HTML的元素节点&#xff0c;dom操作文档是居于DOM树为根据操作的。DOM树为html整体结构框架&#xff0c;其中有各种嵌套标签&#xff0c;最典型的就是以body为主容器&#xff0c;在body内部设置各种元…

DOM操作总结  (。♥ᴗ♥。) 哇!!

知识点 DOM 本质DOM 节点操作DOM 结构操作DOM 性能 前言 各种框架层出不穷&#xff0c;但DOM操作一直都会是前端工程师的基础&#xff0c;必备知识。 只会Vue和React等框架&#xff0c;而不懂DOM操作的前端程序员们。。。 DOM的本质&#xff1f; Do you know&#xff1f; 首…

JavaScript中DOM操作

Web前端基础修炼 HTML基本标签详解与运行截图 CSS基本操作详解及截图演示 JavaScript基础(ECMAScript) JavaScript中DOM操作 JavaScript中BOM操作 目录 DOM介绍 获取元素 操作元素 节点操作 DOM介绍 JavaScript一共包括三部分&#xff0c;分别是ECMAScript也就是Jav…

Dom操作的性能优化

在 开发过程中&#xff0c;或多或少都会遇到要操作dom的情况&#xff0c;而dom操作多多少少都会耗费一些性能&#xff0c;那今天我们就一起来看看在操作dom的时候有哪些性能优化方式吧&#xff1a; 1.选择性能更好的获取dom元素的方法 首先&#xff0c;我们一起来看看&#xf…

常见的DOM操作有哪些

这里是修真院前端小课堂&#xff0c;本篇分析的主题是 【常见的DOM操作有哪些】 这里是修真院前端小课堂&#xff0c;每篇分享文从 【背景介绍】【知识剖析】【常见问题】【解决方案】【编码实战】【扩展思考】【更多讨论】【参考文献】 八个方面深度解析前端知识/技能&…

js中Dom操作

简单的Dom获取 什么是Dom操作&#xff1f; 1.DOM使一个"使程序"和"脚本"有能力的"动态地访问"和"更新文档内容结构"&#xff0c;以及"样式"的平台和语言中立的接口. 2.在HTML和JavaScript的学习中&#xff0c;DOM操作可谓时…

TypeScript Dom操作

文章目录 介绍获取元素类型断言获取多个DOM元素操作文本内容操作样式操作事件 介绍 DOM 是浏览器提供的&#xff08;浏览器特有)&#xff0c;专门用来操作网页内容的一些JS对象(API) 通过DOM操作&#xff0c;可以让Js/Ts控制页面&#xff08;(HTML)内容&#xff0c;让页面“动…