数学建模笔记——灰色关联分析

灰色关联分析是什么

灰色关联分析层次分析法TOPSIS法一样,可以用来进行系统分析的方法。但与其他方法不同的是灰色关联分析对样本数量要求不高,计算量较小,且不会出现量化结果与定性分析结果不符的情况。
灰色关联分析的基本思想是根据序列曲线集合形状的相似程度来判断其联系是否紧密。曲线越接近,相应序列之间的关联度就越大,反之则越小。

灰色关联分析怎么用

应用1 进行系统分析

在这里插入图片描述
第一步:画统计图
在这里插入图片描述根据统计图可得以下结论:

  1. 四个变量均呈上升趋势
  2. 第二产业的增幅较为明显
  3. 第二产业和第三产业的差距在后三年相差更大

第二步:确定分析序列
将这四个序列分为一个母序列和多个子序列

母序列(参考序列)是能反映系统行为特征的序列。类似于因变量,此处记为 x 0 x_0 x0
子序列(比较序列)是影响系统行为的因素组成的序列。类似于自变量,此处记为 ( x 1 , x 2 , x 3 , . . . x n ) (x_1,x_2,x_3,...x_n) (x1,x2,x3,...xn)

在本例中,国内生产总值是母序列,第一二三产业是子序列。

第三步:对变量进行预处理
预处理有两个目的:

  1. 去量纲
  2. 缩小变量范围来简化计算

预处理的方法:先求出每个指标的均值,再用该指标中的每个元素都除以其均值。
在这里插入图片描述
第四步:计算子序列中各个指标与母序列的关联系数
在这里插入图片描述设子序列的个数为 m m m,每个序列有 n n n个样本,则我们的数据可以表示为:
x 0 = ( x 0 ( 1 ) , x 0 ( 2 ) , . . . , x 0 ( n ) ) T x_0=(x_0(1),x_0(2),...,x_0(n))^T x0=(x0(1),x0(2),...,x0(n))T
x 1 = ( x 1 ( 1 ) , x 1 ( 2 ) , . . . , x 1 ( n ) ) T x_1=(x_1(1),x_1(2),...,x_1(n))^T x1=(x1(1),x1(2),...,x1(n))T
x m = ( x m ( 1 ) , x m ( 2 ) , . . . , x m ( n ) ) T x_m=(x_m(1),x_m(2),...,x_m(n))^T xm=(xm(1),xm(2),...,xm(n))T
a a a为两极最小差, b b b为两极最大差
a = m i n ( i ) m i n ( k ) ∣ x 0 ( k ) − x i ( k ) ∣ a=min(i)min(k)|x_0(k)-x_i(k)| a=min(i)min(k)x0(k)xi(k)
b = m a x ( i ) m a x ( k ) ∣ x 0 ( k ) − x i ( k ) ∣ b=max(i)max(k)|x_0(k)-x_i(k)| b=max(i)max(k)x0(k)xi(k)
如图
在这里插入图片描述
关联系数 y y y(Gamma值)的公式为:
y ( x 0 ( k ) , x i ( k ) ) = a + ρ b ∣ x 0 ( k ) − x i ( k ) ∣ + ρ b y(x_0(k), x_i(k))=\frac{a+\rho b}{|x_0(k)- x_i(k)|+\rho b} y(x0(k),xi(k))=x0(k)xi(k)+ρba+ρb
其中 ρ \rho ρ为分辨系数,一般取0.5
本例中每个样本的关联系数如图:
在这里插入图片描述第五步:计算各个子序列的灰色关联度
设灰色关联度为 y ( x 0 , x i ) y(x_0,x_i) y(x0,xi),则
y ( x 0 , x i ) = 1 n ∑ k = 1 n y ( x 0 ( k ) , x i ( k ) ) y(x_0,x_i)=\frac{1}{n}\sum_{k=1}^{n}y(x_0(k),x_i(k)) y(x0,xi)=n1k=1ny(x0(k),xi(k))
(其实就是每个子序列的关联系数取平均值)
本例:

第一产业灰色关联度为0.5084
第二产业灰色关联度为0.6243
第三产业灰色关联度为0.7573

最后得到结论:灰色关联度最大的子序列即为对系统影响最大的因素
本例第三产业对国内生产总值影响最大

matlab代码示例:

%灰色关联分析
clear;clc

%加载数据,每个序列为一列,母序列在第一列
load gdp.mat

%画图
[n ,m]= size(gdp);
for i = 1:m
    plot(gdp(:,i), 'x-');
    hold on 
end
hold off
xlabel('年份')
ylabel('百万元')
legend({'国内生产总值','第一产业','第二产业','第三产业'})

%对变量进行预处理
y = gdp(:,1);
x = gdp(:,2:end);

x_norm = zeros(n ,m);
x_sum = 0;
for i = 1:m
    x_sum = sum(gdp(:,i));
    for j = 1:n
        x_norm(j, i) = gdp(j, i) / x_sum * n;
    end
    x_sum = 0;
end

%计算子序列中各个指标与母序列的关联系数
x_concect = zeros(size(x));
for i = 1: length(x_concect(1,:))
    x_concect(:,i) = abs(x_norm(:, 1) - x_norm(:,i+1));
end
a = min(min(x_concect));
b = max(max(x_concect));

%计算灰色关联度(gamma)
rho = 0.5;
gamma = zeros(n, m-1);
for i = 1:m-1
    for j = 1:n
        gamma(j, i) = (a + rho * b)/(x_concect(j,i) + rho * b);
    end
end
ans = mean(gamma);
disp('最终得到的灰色关联度分别是:')
disp(ans)

% % 注意:代码文件仅供参考,一定不要直接用于自己的数模论文中
% % 国赛对于论文的查重要求非常严格,代码雷同也算作抄袭

学习资源和部分图片来自“清风数学建模”

  • 130
    点赞
  • 905
    收藏
    觉得还不错? 一键收藏
  • 12
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值