4 灰色系统 - 关联度分析法 例子 源代码

灰色系统 - 关联度分析法 例子 源代码

   前面说到关联系数和关联度,本次就具体举个例子,并附上源代码,求解关联系数。

例子

因素 t 0 t_0 t0 t 1 t_1 t1 t 2 t_2 t2 t 3 t_3 t3 t 4 t_4 t4 t 5 t_5 t5
x 0 x_0 x011.31.722.22.5
x 1 x_1 x10.10.130.150.180.30.32
x 2 x_2 x2100120180160140200
x 3 x_3 x311.321.722.22.5
x 4 x_4 x4250220200160140100

   上面的这个例子,我们发现各个序列之间的数据差距太大了,所以首先采用数据变换技术(可以参考之前的博客),这里以初值化变化为例,对于 x = ( x ( 1 ) , x ( 2 ) , . . . , x ( n ) ) x=(x(1),x(2),...,x(n)) x=(x(1),x(2),...,x(n))序列,初值化序列定义为:
x 1 = { 1 , x ( 2 ) x ( 1 ) , . . . x ( n ) x ( 1 ) } x^1 = \{ 1,\frac {x(2)}{x(1)},... \frac {x(n)}{x(1)} \} x1={1,x(1)x(2),...x(1)x(n)}
   但是对于 x 4 x_4 x4,发现其实递减规律,和上面四个序列不同,因此,对于 x 4 x_4 x4采用不同的数据变换:
x 1 = { 1 , x ( 1 ) x ( 2 ) , . . . x ( 1 ) x ( n ) } x^1 = \{ 1,\frac {x(1)}{x(2)},... \frac {x(1)}{x(n)} \} x1={1,x(2)x(1),...x(n)x(1)}

   对上面的原始数据进行处理,可以得到处理后的数据

因素 t 0 t_0 t0 t 1 t_1 t1 t 2 t_2 t2 t 3 t_3 t3 t 4 t_4 t4 t 5 t_5 t5
x 0 1 x_0^1 x0111.31.722.22.5
x 1 1 x_1^1 x1111.31.551.833.2
x 2 1 x_2^1 x2111.201.801.601.402.00
x 3 1 x_3^1 x3111.321.722.22.5
x 4 1 x_4^1 x4111.13641.251.56251.78572.5

   经过数据变换后,就感觉可以发现一些规律了,那么记下来就算算关联度,选取 x 0 1 x_0^1 x01为参考序列,关联度。

   比较序列 x i x_i xi对参考序列 x 0 x_0 x0 k k k 时刻的关联系数定义为:
ζ i ( k ) = min ⁡ s min ⁡ t ∣ x 0 ( t ) − x s ( t ) ∣ + ρ max ⁡ s max ⁡ t ∣ x 0 ( t ) − x s ( t ) ∣ ∣ x 0 ( k ) − x i ( k ) ∣ + ρ max ⁡ s max ⁡ t ∣ x 0 ( t ) − x s ( t ) ∣ \zeta_i(k) =\frac{ \min \limits_{s} \min \limits_t \lvert x_0(t)-x_s(t) \rvert +\rho \max \limits_{s} \max \limits_t \lvert x_0(t)-x_s(t) \rvert } { \lvert x_0(k)-x_i(k) \lvert +\rho \max \limits_{s} \max \limits_t \lvert x_0(t)-x_s(t) \rvert } ζi(k)=x0(k)xi(k)+ρsmaxtmaxx0(t)xs(t)smintminx0(t)xs(t)+ρsmaxtmaxx0(t)xs(t)

   其中,分辨系数 ρ ∈ [ 0 , 1 ] \rho \in [0,1] ρ[0,1],分辨系数 ρ \rho ρ 越大,分辨率越大; ρ \rho ρ 越小,分辨率越小。 min ⁡ s min ⁡ t ∣ x 0 ( t ) − x s ( t ) ∣ \min \limits_{s} \min \limits_t \lvert x_0(t)-x_s(t) \rvert smintminx0(t)xs(t)为两级最小差, max ⁡ s max ⁡ t ∣ x 0 ( t ) − x s ( t ) ∣ \max \limits_{s} \max \limits_t \lvert x_0(t)-x_s(t) \rvert smaxtmaxx0(t)xs(t)为两级最大值。
   序列 x i x_i xi 对参考数列 x 0 x_0 x0关联度定义为:

r i = 1 n ∑ k = 1 n ζ i ( k ) r_i = \frac{1}{n}\sum_{k=1}^{n}\zeta_i(k) ri=n1k=1nζi(k)

   带入上述公式,得到各个序列相对于 x 0 x_0 x0关联度:

因素 x 1 x_1 x1 x 2 x_2 x2 x 3 x_3 x3 x 4 x_4 x4
关联度0.97170.64630.99210.6915
排序3412
分析

   从结果上看, x 3 x_3 x3 x 0 x_0 x0的关联度最高,即二者最相似, x 3 x_3 x3可以反映 x 0 x_0 x0的变化,这可以从原数据看出。 x 2 x_2 x2 x 0 x_0 x0的关联度最高,原数据上这两个序列也是差距最大的。

源代码
clc;clear all;
data = [1 1.3 1.7 2	2.2	2.5
        0.1 0.13 0.15	0.18 0.3 0.32
        100 120 180 160 140 200
        1	1.32	1.7	2	2.2	2.5
        250 220 200 160 140 100];
% 数据变换    
 for i = 1:4
     data(i,:) = data(i,:)/data(i,1);
 end
data(5,:) = data(5,1)./data(5,:);

n=size(data,1);      % 总共序列数
x0=data(1,:);        % x0序列  
mum1=size(x0,1);     % 参考序列,这里只有一个
x_n=data(2:n,:);     % 比较序列
mum2=size(x_n,1);    % 比较序列个数
for i=1:mum1 
     for j=1:mum2 
        diffX(j,:)=x_n(j,:)-x0(i,:); 
     end 
     minmin=min(min(abs(diffX)));    % 两级最小差
     maxmax=max(max(abs(diffX)));    % 两级最大差
     rho=0.5; 
     Zeta=(minmin+rho*maxmax)./(abs(diffX)+rho*maxmax); 
     rt=sum(Zeta')/size(Zeta,2);    % 关联度
     rMax(i,:)=rt; 
end 
disp(['关联矩阵:'])
rMax 
[rs,rind] = sort(rMax,'descend')        %对关联度进行排序
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

cuntou0906

玛莎拉蒂是我的目标!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值