灰色关联分析笔记

article/2025/6/7 7:11:12

什么时候用灰色关联分析?

灰色关联分析 是根据因素之间发展趋势的相似或相异程度,亦即“灰色关联度”,作为衡量因素间关联程度的一种方法
【若两个因素变化的趋势具有一致性,即同步变化程度较高,即可谓二者关联程度较高;反之,则较低】

当样本个数 n 较大时,用标准化回归(第7讲学),当样本个数 n 较少时,用灰色关联分析

灰色关联分析的顺序

正向化(若已经全是极大型 则不需要)
预处理(每一个元素都被预处理)
构造母序列和子序列(若题目本身已给出 则不需要)
计算各个指标与母序列的灰色关联度(每一列 都可以求出一个灰色关联度)
针对各个指标的权重 计算每一个元素的得分(若每一列的灰色关联度都一样 则不需要)
对得分进行归一化 并排序

下图引用自 数学建模灰色关联分析法——学习笔记(一)
在这里插入图片描述

使用灰色关联分析的两种套路

① 用于系统分析(比较母序列与哪个子序列最接近)

我们以下图举例,分析国内生产总值与哪一个产业的影响最大?
在这里插入图片描述
在这里插入图片描述

load gdp.mat							    % 导入数据
Mean = mean(gdp); 						    % 求出每一列的均值以供后续的数据预处理
gdp = gdp ./ repmat(Mean,size(gdp,1),1);    % 将矩阵进行复制为和gdp同等大小,然后使用点除(对应元素相除)disp('预处理后的矩阵为:'); disp(gdp)
Y = gdp(:,1);  								% 母序列
X = gdp(:,2:end); 							% 子序列
absX0_Xi = abs(X - repmat(Y,1,size(X,2)))   % 计算|Y-Xi|矩阵
a = min(min(absX0_Xi))   				    % 计算两级最小差a
b = max(max(absX0_Xi))  					% 计算两级最大差brho = 0.5;								    % 分辨系数取 0.5
gamma = (a+rho*b) ./ (absX0_Xi  + rho*b)    % 计算子序列中各个指标与母序列的关联系数
disp('子序列中各个指标的灰色关联度分别为:')
disp(mean(gamma))

② 用于综合评价模型(评价哪个子序列是最优解)

以下图为例
在这里插入图片描述
在这里插入图片描述

load data_water_quality.mat  			% 导入数据...      								% 进行正向化(操作就省略了)%% 对正向化后的矩阵进行预处理
Mean = mean(X); 					    % 求出每一列的均值以供后续的数据预处理
Z = X ./ repmat(Mean,size(X,1),1);  
disp('预处理后的矩阵为:'); disp(Z)%% 构造母序列和子序列
Y = max(Z,[],2);  						% 母序列为虚拟的,用每一行的最大值构成的列向量表示母序列
X = Z; 									% 子序列就是预处理后的数据矩阵%% 计算得分
absX0_Xi = abs(X - repmat(Y,1,size(X,2))) 		  % 计算|X0-Xi|矩阵
a = min(min(absX0_Xi)) 						      % 计算两级最小差a
b = max(max(absX0_Xi))  						  % 计算两级最大差b
rho = 0.5; % 分辨系数取0.5
gamma = (a+rho*b) ./ (absX0_Xi  + rho*b) 		  % 计算子序列中各个指标与母序列的关联系数
weight = mean(gamma) / sum(mean(gamma));  		  % 利用子序列中各个指标的灰色关联度计算权重
score = sum(X .* repmat(weight,size(X,1),1),2);   % 未归一化的得分
stand_S = score / sum(score);  					  % 归一化后的得分
[sorted_S,index] = sort(stand_S ,'descend')		  % 进行排序

对于这题,我们需要自己构造母序列和子序列,每一行的最大值构成的列向量表示母序列,而预处理后的矩阵表示子序列,接下来,就可以比较母序列与哪个子序列最接近了

切记不能直接用于论文中,要根据题目适当的修改,避免查重

补充:

一般情况下母序列只有一个,但若母序列含有多个,则每个母序列都要与子序列算一遍,算出的灰色关联度,再来求平均值

灰色关联分析的评估

灰色关联分析 的优势:
(1)因此对样本量的多少没有过多的要求,也不需要典型的分布规律,而且计算量比较小,其结果与定性分析结果会比较吻合。
(2)是系统分析中比较简单、可靠的一种分析方法
灰色关联分析 的缺点:
(1)随着灰色关联分析理论应用领域的不断扩大,现有的一些模型存在的不足之处使得其不能很好地解决某些方面的实际问题
(2)整个理论体系目前还不是很完善,其应用受到了某些限制

文章来源:https://blog.csdn.net/CourserLi/article/details/106790524
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://chatgpt.dhexx.cn/article/BYXGttDw.shtml

相关文章

MATLAB学习笔记_Day03灰色关联分析和灰色预测模型

学习视频:【零基础教程】老哥:数学建模算法、编程、写作和获奖指南全流程培训! 文章目录 1. 灰色关联分析与预测模型适用范围:1.1 灰色预测的概念1.2 灰色关联度与优势分析1.3 灰色预测模型1.4 灰色模型GM(1,1)1.5 灰色预测步骤 1…

灰色系统理论与灰色关联分析模型

灰色系统理论与灰色关联分析模型 Author:丸子 Written on: 220211 Notes:包括灰色系统知识和灰色关联分析模型两部分 笔记课程来自b站网课老哥带你学数模书本为《数学建模算法与应用(第3版)》,司守奎编著第424页 文章目录 灰色系统理论与灰色…

Python 灰色关联度 灰色预测模型

灰色关联度 灰色关联度常用于分析影响因子与被影响因子的关联,是水论文的好东西 如果数据的量纲不统一的话,需要先进行归一化处理 import numpy as npdef gray_correlation(refer, data, rho0.5): refer: 参照数列 (列向量)data: 比较数列 (以列为单位…

备战数学建模15-灰色关联分析与灰色预测模型

目录 一、灰色系统理论与灰色关联分析 1-灰色预测的概念 2-灰色关联度与优势分析 3-灰色关联分析案例分析 4-灰色生成数列 二、灰色预测模型 1-灰色模型GM 2-灰色模型GM的建模步骤 3-灰色预测经典案例1 4-灰色预测模型经典案例2 一、灰色系统理论与灰色关联分析 1-灰…

C语言:关键字----switch、case、default(开关语句)

C语言:基础开发----目录 C语言:关键字—32个(分类说明) 有32个关键字详细说明,还有跳转链接! 一、开关语句----介绍 开关语句,包括以下四种关键字: switch:开关语句case: 开关语句…

C语言关键字auto,case,default,switch应该如何使用

前言:本文章主要用于个人复习,追求简洁,感谢大家的参考、交流和搬运,后续可能会继续修改和完善。 因为是个人复习,会有部分压缩和省略。 一、auto 1.c语言中,关键字auto用于声明一个变量为自动变量&#x…

C语言-switch-case语句与多分支结构

一、switch-case语句 1. switch语句中的每个语句段中都使用break语句 switch-case语句的一般形式为: switch (表达式){case 常量表达式1: 语句段1;break;case 常量表达式2:语句段2;break;...case 常量表达式n:语句段n;break;default:语句段n1;break;}这是switch-c…

C语言——switch case 语句判断学生成绩

C语言——switch case 语句判断学生成绩 switch case 讲解: switch(),在括号里输入所定义的变量,接着在()后面输入一个{}大括号,把每一个分支语句放在大括号中。 switch()写法: int main()…

C语言--switch case 语句,case 后没有语句

背景:在看 wireshark 的解析协议部分的源码时,发现很多的 switch case 语句,case 后没有语句 的情况,随处可见的这种情况,产生疑惑,报文解析就是很好的例子。 例如:wireshark-3.2.17/epan/diss…

补充switch语句的内容和逗号运算符(C语言case后没有break的switch语句,会继续执行后面的语句再退出)

补充switch语句的内容和逗号运算符 C语言case后没有break的switch语句,会继续执行后面的语句再退出补充逗号运算符 C语言case后没有break的switch语句,会继续执行后面的语句再退出 对于switch语句,我们在使用的时候都会注意使用的规范&#…

c语言 case break,C语言中switch...case语句中break的重要性

在C语言中switch...case语句是经常用到的,下面我介绍一下在使用该语句时候需要注意的一个细节问题。话不多说,直接举例子: 例子1: switch(fruit) { case 1:printf("apple"); break; case 2:printf("banana");…

C语言CASE语句嵌套,C语言中switch case语句的嵌套

给一个含有嵌套的switch case的一段完整代码: #include int main() { int n1; int m2; switch(n) { case 1: m; case 2: n; case 3: switch(n) { case 1: n; case 2: m; n; break; } case 4: m; break; default: break; } printf("%d %d",m,n); return 0…

c语言 switch案例,c语言switch case语句使用例子

c语言switch case语句使用例子 发布时间:2020-04-23 11:48:53 来源:亿速云 阅读:421 作者:小新 这篇文章主要为大家详细介绍了c语言switch case语句使用例子,文中示例代码介绍的非常详细,具有一定的参考价值…

c语言的case语句怎么用,c语言的switchcase语句用法

凡是使用过的人都会有同2113样的感觉—5261—C语言的使用灵活这个特点既是优点又是4102缺点, 因为对1653精通C语言的用户来讲, 灵活就意味着编程可以无拘无束, 甚至随心所欲; 但对初学者或者是尚未摸着规律的用户来说,…

case是c语言变量名吗,case是什么意思_c语言中case是什么意思

c语言中case是什么意思 是程序的入口,一般结合switch使用 举个例子: int a=2; switch(a){ case 1:prinf("1");break; case 2:prinf("2");break; default:prinf("3"); } 就表示根据a的值进行判断,a的值与 case后面的哪个值相等,就执行哪个cas…

【C语言】case 关键字

🚩write in front🚩 🔎大家好,我是謓泽,希望你看完之后,能对你有所帮助,不足请指正!共同学习交流🔎 🏅2021年度博客之星物联网与嵌入式开发TOP5&#xff5…

c语言库函数总结----math.h库

思维导图大纲 前言 上回总结了string.h常用的字符串操作函数,这次总结一下另外的一个库函数math.h和数字运算有关联的库。 double acos(double x) 函数原型:double acos(double x) 功能:返回以弧度表示的 x 的反余弦。arcos(x);//时间:2019年11月15日 //作者:Kroner //编…

c语言实现库函数

目录 一.strlen函数 1.描述 2.实现 1.计数的方法 2.函数递归的方法 3.指针 - 指针方法 二.strcmp函数 1.描述 2.实现 三.strcpy函数的实现 1.描述 2.实现 四.strcat函数的实现 1.描述 2.实现 五.strstr函数的实现 1.描述 2.实现 1.BF算法实现 2.kmp算法的实现…

C语言 库函数:qsort 详解

目录 1.qsort的介绍与使用方法 2.介绍void*​ 3.举例使用qsort​ 4. qsort的模拟实现&#xff0c;了解其运作原理​ 1.qsort的介绍与使用方法 2.介绍void* 3.举例使用qsort #define _CRT_SECURE_NO_WARNINGS 1 #include<stdio.h> #include<stdlib.h> #include…

C语言库函数查找工具MSDN

一、前言   库函数在我们写程序的时候会在很大程度上提高我们的效率&#xff0c;我知道很多人可能像我一样&#xff0c;很多时候并不是不知道可以用库函数来实现&#xff0c;但就是不知道库函数如何使用&#xff0c;所以今天呢博主就来推荐资源了——C语言库函数查找工具《MS…