灰色关联度矩阵——MATLAB在数学建模中的应用

这篇博客介绍了灰色预测方法,一种基于灰色系统理论的预测技术,用于处理具有不确定性的数据。文章详细阐述了灰色关联度的概念,用于衡量数列间的关联程度,并提供了MATLAB代码实现。通过对一组经济数据的分析,展示了如何应用灰色关联度矩阵来识别各因素的相关性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

灰色预测及其MATLAB实现(一)

灰色预测是一种常规的预测手段,具有操作简便,所需数据量少等优点,一般只需有4个数据就可以进行预测。

灰色预测是基于灰色系统理论的预测方法。灰色系统由我国著名学者邓聚龙教授在1982年提出,是相对于“白色模型”——完全信息透明的模型,和“黑色模型”——对信息一无所知的模型的模型概念。利用灰色系统解决的问题主要是具有不确定性的问题:

  1. 信息具有模糊性,无法用数学方程精确刻画。
  2. 机理具有不确定性。
  3. 信息贫瘠的不确定性。

灰色关联度矩阵

灰色关联度分析了向量与向量之间以及矩阵与矩阵之间的关联度,而向量与向量之间的关联度可以看作矩阵与矩阵之间的关联度的一种特殊形式。

计算关联度,一定是计算某个待比较的数列与参照物(亦即参考数列)之间的相关程度。

假设有一组参照数列如下:
xj=(xj(1),xj(2),xj(3),⋯ ,xj(k),⋯ ,xj(n))    j=1,2,3,⋯ ,s x_j=(x_j(1),x_j(2),x_j(3),\cdots,x_j(k),\cdots,x_j(n))\ \ \ \ j=1,2,3,\cdots,s xj=(xj(1),xj(2),xj(3),,xj(k),,xj(n))    j=1,2,3,,s
假设有一组待比较数组如下:
xi=(xi(1),xi(2),xi(3),⋯ ,xi(k),⋯ ,xi(n))    i=1,2,3,⋯ ,t x_i=(x_i(1),x_i(2),x_i(3),\cdots,x_i(k),\cdots,x_i(n))\ \ \ \ i=1,2,3,\cdots,t xi=(xi(1),xi(2),xi(3),,xi(k),,xi(n))    i=1,2,3,,t
则定义关联系数如下:
ξji(k)=mini mink∣xj(k)−xi(k)∣+ρ⋅maxi maxk∣xj(k)−xi(k)∣∣xj(k)−xi(k)∣+ρ⋅maxi maxk∣xj(k)−xi(k)∣ \xi_{ji}(k)=\frac{\underset{i}{min}\ \underset{k}{min}|x_j(k)-x_i(k)|+\rho \cdot\underset{i}{max}\ \underset{k}{max}|x_j(k)-x_i(k)|}{|x_j(k)-x_i(k)|+\rho \cdot\underset{i}{max}\ \underset{k}{max}|x_j(k)-x_i(k)|} ξji(k)=xj(k)xi(k)+ρimax kmaxxj(k)xi(k)imin kminxj(k)xi(k)+ρimax kmaxxj(k)xi(k)
关于该式的说明如下:

  1. 变量ξji(k)\xi_{ji}(k)ξji(k)表示的是第iii个数列与第jjj个参考数列第kkk个样本之间的关联系数。
  2. mini mink∣xj(k)−xi(k)∣\underset{i}{min}\ \underset{k}{min}|x_j(k)-x_i(k)|imin kminxj(k)xi(k)maxi maxk∣xj(k)−xi(k)∣\underset{i}{max}\ \underset{k}{max}|x_j(k)-x_i(k)|imax kmaxxj(k)xi(k)表示参考数列矩阵与比较数列矩阵作差后的最小值和最大值,目的是为了保证ξji(k)\xi_{ji}(k)ξji(k)的值在[0,1]区间内,同时上下对称的结构可以消除量纲不同和数量级悬殊的问题。
  3. ∣xj(k)−xi(k)∣|x_j(k)-x_i(k)|xj(k)xi(k)即为汉明距离(“Hamming distance”),汉明距离的倒数被称为反倒数距离,灰色关联度的本质就是通过反倒数距离的大小来判定关联程度,倒数越大,表示两条曲线之间距离越小,其曲线程度越相似。
  4. ρ\rhoρ的取值约定俗成为[0,1],但实际上ρ\rhoρ的取值范围为(0,+∞)(0,+\infin)(0,+)。但不管ρ\rhoρ如何取值,其只改变ξji(k)\xi_{ji}(k)ξji(k)的绝对大小,而不改变关联度的相对强弱。

由于ξji(k)\xi_{ji}(k)ξji(k)只能反映处点与点之间的相关性,相关性信息分散,不方便刻画数列之间的相关性,需要把ξji(k)\xi_{ji}(k)ξji(k)整合起来,定义:
rji=Σk=1nξji(k)n r_{ji}=\frac{\overset{n}{\underset{k=1}{\Sigma}}\xi_{ji}(k)}{n} rji=nk=1Σnξji(k)
变量rjir_{ji}rji即为相关度,结合实际背景,有正面作用的即为正相关,反之则为负相关;rjir_{ji}rji大于0.7称为强相关,小于0.3称为弱相关。

xix_ixixjx_jxj之间的相关度写为矩阵形式:
R=[r11r12⋯r1tr21r22⋯r2t⋮⋮⋱⋮rs1rs2⋯rst] R= \begin{bmatrix} r_{11}&r_{12}&\cdots&r_{1t}\\ r_{21}&r_{22}&\cdots&r_{2t}\\ \vdots&\vdots&\ddots&\vdots\\ r_{s1}&r_{s2}&\cdots&r_{st}\\ \end{bmatrix} R=r11r21rs1r12r22rs2r1tr2trst
则通过观察某一列数值明显大于其他列数值,则称该列为优势子因素;假如某一行数值明显大于其他行数值,则称该行为优势母因素,优势母因素易受子因素的驱动影响。

灰色关联度矩阵的程序设计

19791980198119821983
固定资产投资308.58310295346367
工业投资195.4189.9187.2205222.7
农业投资24.62112.215.114.57
科技投资2025.623.329.230
交通投资18.981922.323.527.655
国民收入170174197216.4235.8
工业收入57.5570.7476.880.789.85
农业收入88.567085.3899.83103.4
商业收入11.1913.2816.8218.922.8
交通收入4.034.264.345.065.78
建筑业收入13.715.613.7711.9813.95
function [R]=GrayConnect(X,Y)
[xa,xb]=size(X);
[ya,yb]=size(Y);
if (xb==yb)
else
    return ;
end
R=zeros(ya,xa);
q=0.5;
for i = 1:ya
    k=zeros(xa,xb);
    for j=1:xa
        k(j,:)=abs(X(j,:)-Y(i,:));
    end
    temp1=min(min(k));
    temp2=q*max(max(k));
    for j=1:xa
        sum=0;
        for t=1:xb
        sum=sum+(temp1+temp2)/(abs(X(j,t)-Y(i,t))+temp2);
        end
        R(i,j)=sum/xb;
    end
end
end

将数据导入MATLAB,

A=xlsread('Grey.xlsx','B1:F11');

将数据标准化,

for i=1:11
    A(i,:)=A(i,:)/A(i,1);
end

将母因素和子因素分割为X和Y,并使用函数GrayConnect,

X=A(1:5,:);
Y=A(6:11,:);
[R]=GrayConnect(X,Y)

得到结果如下:
R=[0.80160.76110.55700.81020.93550.68870.66580.52870.88540.80040.89100.85810.57860.57730.67490.67760.66340.56750.78000.73070.81130.77420.56480.80380.92050.74320.76630.56160.60650.6319] R= \begin{bmatrix} 0.8016&0.7611&0.5570&0.8102&0.9355\\ 0.6887&0.6658&0.5287&0.8854&0.8004\\ 0.8910&0.8581&0.5786&0.5773&0.6749\\ 0.6776&0.6634&0.5675&0.7800&0.7307\\ 0.8113&0.7742&0.5648&0.8038&0.9205\\ 0.7432&0.7663&0.5616&0.6065&0.6319\\ \end{bmatrix} R=0.80160.68870.89100.67760.81130.74320.76110.66580.85810.66340.77420.76630.55700.52870.57860.56750.56480.56160.81020.88540.57730.78000.80380.60650.93550.80040.67490.73070.92050.6319

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值