灰色关联分析过程及代码实现

  • 对于两个系统之间的因素,其随时间或不同对象而变化的关联性大小的量度,称为关联度。在系统发展过程中,若两个因素变化的趋势具有一致性,即同步变化程度较高,即可谓二者关联程度较高;反之,则较低。因此,灰色关联分析方法,是根据因素之间发展趋势的相似或相异程度,亦即“灰色关联度”,作为衡量因素间关联程度的一种方法。

实现步骤

  • 数列无量纲化处理
    由于原始数据指标的量纲不同,因此对其进行统一的无量纲化数据处理使其具有可比较性。即:
    设有序列x=(x(1),x(2),…,x(n)) 则称映射f:x→y
    f(x(k))= y(k),k=1,2,…,n
    为序列x到序列y的数据变换。
    效益型初值化:f(x(k))=x(k)/x(1) = y(k),x(1)≠0
    成本型初值化:f(x(k))=x(1)/x(k) = y(k),x(1)≠0

  • 求灰色关联系数ξ_i (k)
    选取参考数列
    x_0={x_0 (k)│k=1,2,……,n}=(x_0 (1),x_0 (2),……x_0 (n)) k表示时刻。
    其余指标为比较数列
    x_i={x_i (k)│k=1,2,……,n}=(x_i (1),x_i (2),……x_i (n)),i=1,2,…,m
    则称,
    在这里插入图片描述

为比较数列x_i对参考数列x_0在k时刻的关联系数,其中ρ∈[0,1]为分辨系数,分辨系数ρ越大,分辨率越大;分辨系数ρ越小,分辨率越小,本文选择0. 5。⏟max┬s⁡⏟max┬t  |x_0 (t)-x_s (t)| 为两级最大差、⏟min┬s⁡⏟min┬t  |x_0 (t)-x_s (t)|为两级最小差。

  • 计算出指标的关联度r_i
    关联系数是描述比较数列与参考数列在某时刻的关联程度的一种指标,由于各个时刻都有一个关联数,因此信息显得过于分散,不便于比较,为此我们给出
    r_i=1/n ∑_(k=1)^n▒〖ξ_i (k) 〗
    为数列x_i参考数列x_i的关联度。关联度是把各个时刻的关联系数集中为一个平均值,亦即把过于分散的信息集中处理。利用关联度这个概念,我们可以对筛选后的指标进行分析。

  • matlab代码

clc,clear
%load x.txt %把原始数据存放在纯文本文件 x.txt 中,其中把数据的"替换替换成.
load data.mat
for i=1:13
    x(i,:)=x(i,:)/x(i,1); %标准化数据  效益性  
end
for i=14:15
    x(i,:)=x(i,1)./x(i,:); %标准化数据  成本型  初值化
end
data=x;
n=size(data,2); %求矩阵的列数,即观测时刻的个数
%n=size(data,1); %求矩阵的行数,即观测时刻的个数
ck=data(1,:); %提出参考数列
bj=data(2:end,:); %提出比较数列
m2=size(bj,1); %求比较数列的个数
for j=1:m2
    t(j,:)=bj(j,:)-ck;
end
mn=min(min(abs(t'))); %求最小差
mx=max(max(abs(t'))); %求最大差
rho=0.5; %分辨系数设置
ksi=(mn+rho*mx)./(abs(t)+rho*mx); %求关联系数
r=sum(ksi')/n %求关联度
[rs,rind]=sort(r,'descend') %对关联度进行排序
发布了21 篇原创文章 · 获赞 20 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/Summertrainxy/article/details/104917198
今日推荐