灰色关联度分析算法(包含matlab源码及实例)

    本文为整理后写出,不保证不会出现问题,若发现问题,请在评论区或私信指正!!!

目录

前言

1.确定母序列和子序列

2.数据归一化

        1)初值化

        2)均值化

3.计算绝对值差

4.计算灰色关联系数

PS:均值化数据演示

代码实现


前言

灰色关联度分析(Grey Relation Analysis,GRA)是一种多因素统计分析的办法,通俗来说,通过此算法,我们可以得到某个项目受其他因素影响的强弱,比如国内生产总值受到第一产业、第二产业、第三产业的影响,这三种产业对国内生产总值的影响分别有多大?这就是我们要讨论的问题,也是灰色关联度分析能解决的问题。

下面的讨论我们以下表的数据作为演示(数据仅供学习 不保证其真实性合理性)

表1 灾害直接经济损失及各相关影响因素原始表
年份灾害直接经济损失(亿元)农作物成灾面积(千公顷)地震灾害损失(亿元)海洋灾害损失(亿元)森林火灾损失(亿元)泥石流损失(亿元)
20002045.33437414.6792120.90.306949.4201
20011942.23179314.8449100.10.740934.8699
20021637.2273191.477465.90.36150.974
20031884.23251646.60480.523.750.4325
20041602.3162799.495954.222.021340.8828

灰色关联度分析大致分为四步

1.确定母序列和子序列

        母序列:能反映系统行为特征的数据序列,在上面的例子中灾害直接经济损失就是母序列。

        子序列:影响系统行为的因素组成的数据序列,在上面的例子中农作物成灾面积、地震灾害损失、海洋灾害损失、森林火灾损失、泥石流损失就是子序列。

2.数据归一化

        归一化即去量纲,由于量纲不同,指标数值可能有大有小,如果不做处理大的数据必定淹没小数据的变量的影响,因此要减少数据的绝对数值的差异,统一到近似的范围内,这就是数据归一化。

        归一化主要有两种方式,分别是初值化均值化

        1)初值化

        简单来说,是用每个指标的数据除以最初的值。显然表1中的最初数据就是2000年的值[2045.3 34374 14.6792 120.9 0.3069 49.4201

        处理完后的数据如下(保留了四位小数)

表2.1 初值化后的数据
年份灾害直接经济损失(亿元)农作物成灾面积(千公顷)地震灾害损失(亿元)海洋灾害损失(亿元)森林火灾损失(亿元)泥石流损失(亿元)
20001.00001.00001.00001.00001.00001.0000
20010.94960.92491.01130.82802.41410.7056
20020.80050.79480.10060.54511.17631.0314
20030.92120.94603.17480.666012.05601.0205
20040.78340.47360.64690.44856.58620.8273

        2)均值化

        均值化是先算出母系列和各个子序列的平均值,然后每个指标的数据除以对应列的平均值。均值化的例子放在最后!!!

3.计算绝对值差

        这一步计算被评价指标序列与参考序列对应元素的绝对值差,参考序列一般是数据归一化后的母序列,即[1.00 , 0.95 , 0.80 , 0.92 , 0.78],具体的操作为假如有m列,后m-1列都对应减去第一列,然后取绝对值,得到m-1列的表格。             

表3.1 绝对值差
00000
0.02470.06170.12161.46450.2440
0.00570.69980.25540.37580.2310
0.02472.25360.255211.13480.0993
0.30930.13650.33495.80280.0438

        随后在这个表格中取出最小值a=0和最大值b=11.1348

4.计算灰色关联系数

        对于表3的每一个数据,我们统称这个数为x,那么灰色关联系数的计算公式为

                \xi =\frac{a+\rho *b}{x+\rho*b},于是我们得到了灰色关联系数表(\rho为分辨系数 一般取0.5)。

表4.1 灰色关联系数表
11111
0.99560.98900.97860.79170.9580
0.99900.88830.95610.93680.9602
0.99560.71190.95620.33330.9825
0.94730.97610.94330.48960.9922

        随后对每一列取平均值,就是该列影响因素与灾害直接经济损失的关联度

表5.1 灾害直接经济损失与各相关因素的关联度
农作物成灾面积地震灾害损失海洋灾害损失森林灾害损失泥石流损失
0.98750.91310.96680.71030.9786

PS:均值化数据演示

                

表1 灾害直接经济损失及各相关影响因素原始表
年份灾害直接经济损失(亿元)农作物成灾面积(千公顷)地震灾害损失(亿元)海洋灾害损失(亿元)森林火灾损失(亿元)泥石流损失(亿元)
20002045.33437414.6792120.90.306949.4201
20011942.23179314.8449100.10.740934.8699
20021637.2273191.477465.90.36150.974
20031884.23251646.60480.523.750.4325
20041602.3162799.495954.222.021340.8828

        对每一列取均值 得到 [1822.24 , 28456 , 17.42028 , 84.328 , 1.42602 , 45.31586 ]

表2.2 均值化后的数据
年份灾害直接经济损失(亿元)农作物成灾面积(千公顷)地震灾害损失(亿元)海洋灾害损失(亿元)森林火灾损失(亿元)泥石流损失(亿元)
20001.12241.20790.84271.43370.21521.0906
20011.06581.11730.85221.18700.51960.7695
20020.89850.96000.08480.78150.25321.1249
20031.03401.14272.67530.95482.59461.1129
20040.87930.57210.54510.64301.41740.9022

        

表3.2 绝对值差
0.08550.27980.31130.90720.0318
0.05140.21370.12120.54630.2963
0.06160.81360.11700.64530.2264
0.10871.64130.07921.56060.0789
0.30720.33420.23630.53810.0229

表4.2 灰色关联系数表
0.93090.76650.74520.48820.9895
0.96720.81550.89560.61710.7552
0.95610.51610.89960.57540.8056
0.90770.34260.93740.35420.9377
0.74790.73040.79800.62081.0000

表5.2 灾害直接经济损失与各相关因素的关联度
农作物成灾面积地震灾害损失海洋灾害损失森林灾害损失泥石流损失
0.90200.63430.85520.53110.8976

代码实现

%灰色关联度分析
%以旅游收入为例 一共6行4列 行数代表2000-2005年 列数表示 国内生产总值 第一产业 第二产业 第三产业
%最终得到的结果代表三产业对国内生产总值的关联度
clear;clc;
load 灰色关联度分析-灾害直接经济损失.mat
[n,m]=size(X);

%初值化例子 灾害直接经济损失 
%均值化例子 国内生产总值

%初值化和均值化选择一个就可以

%均值化
aveg=mean(X);%取每一列的平均值
for j=1:m
   update_x(:,j)=X(:,j)./aveg(:,j);%每一列的数据除以这一列的平均值
end

%初值化
% for j=1:m
%     update_x(:,j)=X(:,j)./X(1,j);%每一列的数据除以这一列的初始值
% end


for i=1:n
    for j=2:m
        temp_x(i,j-1)=abs(update_x(i,j)-update_x(i,1));%update_x第一列与后面几列的差值的绝对值
    end
end
a=min(min(temp_x));%temp_x矩阵里的最小值
b=max(max(temp_x));%temp_x矩阵里的最大值
p=0.5;%分辨系数 一般是0.5
XX=(a+p*b)./(temp_x+p*b);
R=mean(XX,1)%灰色关联度


   

               

  • 7
    点赞
  • 90
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
灰色关联度分析是一种多因素统计分析的方法,可以用来评估某个项目受其他因素影响的强弱程度。在MATLAB中进行灰色关联度分析,可以使用灰色关联度分析函数来计算灰色关联矩阵。根据引用\[1\]中的代码,可以使用以下MATLAB代码进行计算: ```matlab data3 = (d_min + a * d_max) ./ (data2 + a * d_max); xishu = mean(data3); disp('x4,x5,x6,x7与x1之间的灰色关联度分别为:'); disp(xishu); ``` 其中,`data3`是灰色关联矩阵,`xishu`是灰色关联度的平均值。通过这段代码,可以得到x4、x5、x6、x7与x1之间的灰色关联度。引用\[2\]提供了灰色关联度分析的背景和应用场景,可以帮助理解灰色关联度分析的意义和作用。引用\[3\]中的表格展示了灰色关联系数表,可以用于参考和分析灰色关联度的结果。 #### 引用[.reference_title] - *1* [灰色关联法 —— matlab](https://blog.csdn.net/qq_25990967/article/details/123121295)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* *3* [灰色关联度分析算法包含matlab源码实例)](https://blog.csdn.net/m0_62558103/article/details/126803195)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值