灰色关联分析及MATLAB实现

目录

一、灰色关联分析概述

灰色关联分析的基本思想:

二、灰色关联分析应用实例

举例一:

 1. 确定分析数列

 2. 对变量进行预处理

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

三、 MATLAB实现


一、灰色关联分析概述

        当一个系统是由多种因素共同作用时,我们通常想知道哪些是主要因素哪些是次要因素;哪些因素对系统发展影响大,哪些因素对系统发展影响小;哪些因素对系统发展起推动作用需强化发展,哪些因素对系统发展起阻碍作用需加以抑制

数理统计中的回归分析、方差分析、主成分分析都有不足之处:

  • 要求有大量数据,数据量少就难以找出统计规律
  • 要求样本服从某个典型的概率分布,要求各因素数据与系统特征数据之间呈线性关系且各因素之间彼此无关
  • 计算量大

灰色关联分析的优点:对样本量的多少和样本有无规律都同样适用,而且计算量小,十分方便。

灰色关联分析的基本思想:

        根据序列曲线几何形状的相似程度来判断其联系是否紧密。曲线越接近,相邻序列之间的关联度就越大,反之就越小。

二、灰色关联分析应用实例

举例一:

 1. 确定分析数列

  • 母序列:能反映系统行为特征的数据序列。(类似于因变量)  此例中母序列为国内生产总值
  • 子序列:影响系统行为的因素组成的数据序列。(类似于自变量),此处记为(x_{1},x_{2},x_{3},...x_{m})

2. 对变量进行预处理

        先求出每个指标的均值,再用该指标中的每个元素都除以其均值

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

        用母序列x_{0}减去子序列x_{0}(i)并取绝对值,找出最终最小值记为a,最大值记为b

        a=min(min(x_{0}(k)-x_{i}(k)))

        b=max(max(x_{0}(k)-x_{i}(k)))

         定义:

                \gamma =y(x_{0}(k),x_{i}(k))=\frac{a+\rho b}{\left | x_{0}(k)-x_{i}(k) \right |+\rho b}

        \rho:分辨系数(一般取0.5)

        计算结果如下:

        4. 计算x_{0}x_{i}的灰色关联度

        y(x_{0},x_{i})=\frac{1}{n}\sum_{k=1}^{n}y(x_{0}(k),x_{i}(k))

                求出:

           y(x_{0},x_{1})=0.5084

           y(x_{0},x_{2})=0.6243

           y(x_{0},x_{3})=0.7573

                因此,我们可以得出结论:该地区在2000年至2005年间的国内生产总值受到第三产业的影响最大。

三、 MATLAB实现

clear;clc
load gdp.mat  % 导入数据 一个6*4的矩阵
Mean = mean(gdp);  % 求出每一列的均值以供后续的数据预处理
gdp = gdp ./ repmat(Mean,size(gdp,1),1); 
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))

        

猜你喜欢

转载自blog.csdn.net/qq_54543084/article/details/128357711
今日推荐