数学建模常用算法—灰色关联分析法(GRA)

解决问题

灰色关联分析的基本思想是根据序列曲线几何形状的相似程度来判断其联系是否紧密。曲线越接近,相应序列之间的关联度就越大,反之就越小。

一般的抽象系统,如社会系统、经济系统、农业系统、生态系统、教育系统等都包含有许多种,多种因素共同作用的结果决定了该系统的发展态势。灰色关联分析法则用于确定各因素对其所在系统的影响程度。

优点

灰色关联分析法弥补了采用数理统计方法作系统分析所导致的遗憾。它对样本量的多少和样本有无规律都同样适用,而且计算量小,十分方便,更不会出现量化结果与定性分析结果不符的情况。

缺点

要求需要对各项指标的最优值进行现行确定,主观性过强,同时部分指标最优值难以确定。(不建议在美赛中使用)

一般步骤

以国内某地区国内生产总值为例

1. 绘制统计图,并根据图线做简单分析

    四个变量均呈上升趋势 第一产业几乎没有变化 第二产业增幅相对较大

2. 确定分析数列

(1)母序列(又称参考序列、母指标)

能反映系统行为特征的数据序列,类似于因变量Y,此处记为 x 0 xmathop{ {}} olimits_{ {0}} x0

(2)子序列(又称比较序列、子指标)

影响系统行为的因素组成的数据序列,类似于因变量X,此处记为( x 1 xmathop{ {}} olimits_{ {1}} x1 , x 2 xmathop{ {}} olimits_{ {2}} x2 , ··· , x m xmathop{ {}} olimits_{ {m}} xm )

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

3. 对变量进行预处理(去量纲,缩小度量范围简化计算)

计算每个指标的均值,再将指标中的每个元素分别除以该指标的均值

4. 计算子序列中各个指标与母序列的关联系数

5. 计算子序列中各个指标与母序列的灰色关联度

对每个指标的关联系数分别求平均值,则得到灰色关联度

6. 得出结论

该地区在2000年至2005年间的国内生产总值受到第三产业的影响最大(其灰色关联度最大

代码

load gdp.mat  % 导入数据 一个6*4的矩阵
Mean = mean(gdp);  % 求出每一列的均值以供后续的数据预处理
gdp = gdp ./ repmat(Mean,size(gdp,1),1);  %size(gdp,1)=6, repmat(Mean,6,1)可以将矩阵进行复制,复制为和gdp同等大小,然后使用点除(对应元素相除),这些在第一讲层次分析法都讲过
disp(预处理后的矩阵为:); disp(gdp)
Y = gdp(:,1);  % 母序列
X = gdp(:,2:end); % 子序列
absX0_Xi = abs(X - repmat(Y,1,size(X,2)))  % 计算|X0-Xi|矩阵(在这里我们把X0定义为了Y)
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)  % 计算子序列中各个指标与母序列的关联系数
disp(子序列中各个指标的灰色关联度分别为:)
disp(mean(gamma))
经验分享 程序员 微信小程序 职场和发展