理论
- 灰色系统理论提出了一种新的分析方法—关联度分析方法,即根据因素之间发展 态势的相似或相异程度来衡量因素间关联的程度,它揭示了事物动态关联的特征与程度。
- 灰色系统理论建模的主要任务是根据具体灰色系统的行为特征数据,充分开发并 利用不多的数据中的显信息和隐信息,寻找因素间或因素本身的数学关系。通常的办法 是采用离散模型,建立一个按时间作逐段分析的模型。
- 因素分析的基本方法过去主要采取回归分析等办法。但是,回归分 析的办法有很多欠缺,如要求大量数据、计算量大及可能出现反常情况等。为克服以上 弊病,本节采用关联度分析的办法来做系统分析。 作为一个发展变化的系统,关联分析实际上是动态过程发展态势的量化比较分析。 所谓发展态势比较,也就是系统各时期有关统计数据的几何关系的比较。
关联分析
参考:
应用实现
数据data1:
实现:
###R语言代码
## 灰色关联度分析
huidu <- function(data){
data1 <- scale(data) #标准化数据
data2 <- na.omit(data1) #去掉缺失值
data<-data.matrix(data2) #nz为初值化后数据框格式转矩阵
ndata<-abs(data-data[,1]) #矩阵每列求绝对值
xj<-ndata[,-1] #删除矩阵第一列,形成绝对值比较矩阵
min<-min(apply(xj,1,min))
max<-max(apply(xj,1,max)) #求全局最小,最大值
rmax=max*0.5
sh=min+rmax #求公式上半部分
xx<-sh/(xj+rmax) #求整个灰色关联公式
xi<-colMeans(xx) #求关联度
xi
}
data <- read.csv('data1.csv')
huidu(data)
结果:
MATLAB代码:
clc
load x.txt
%初始化数据
% for j=1:14
% x(:,j)=x(:,j)/x(1,j);
% end
% data = x;
data = zscore(x);%标准化数据
n = size(data,1);%求矩阵的行数,即观测时刻的个数
ck = data(:,1); %提出参考数列
bj = data(:,2:end);%提出比较数列
m2 = size(bj,2);%求比较数列的个数
for i = 1:m2
t(:,i)=bj(:,i)-ck;
end
mm = min(min(abs(t)));%求最小差
mx = max(max(abs(t)));%求最大差
rho = 0.5;%分辨系数设置
ksi = (mm+rho*mx)./(abs(t')+rho*mx);%求关联系数
r = sum(ksi')/n ;%求关联度
[rs,rind] = sort(r,'descend')
使用gm(1,1)对Y预测