数学建模(3)灰色关联分析[相关性分析、综合评价]

本文介绍了使用Matlab进行GDP数据的相关性分析,包括数据预处理、灰色关联度的计算以及综合评价过程,展示了如何通过灰色关联分析方法评估指标间的相关性并确定权重。
摘要由CSDN通过智能技术生成

相关性分析 

 

GDP案例 

 

 

 

 

 

 

Matlab参考代码实现 

clear;clcl
load gdp.mat
Mean=mean(gdp);
gdp=gdp./repmat(Mean,size(gdp),1);
disp('预处理的矩阵为:');
disp(gdp)
Y=gdp(:,1);%母序列
X=gdp(:,2:end);%子序列
absX0_Xi=abs(X-repmax(Y,1,size(X,2)))%|X0-Xi|
a=min(absX0_Xi(:)); %两级最小差
b=max(absX0_Xi(:));%两级最大差
rho=0.5;
gamma=(a+rho*b)./(absX0_Xi+rho*b);%关联系数矩阵
disp('子序列中各个指标的灰色关联度分别为:')
disp(mean(gamma))

 

综合评价分析

Matlab参考代码实现 

 

%灰色关联分析评价
%第一步:将原始矩阵正向化
[n,m]=size(X);
disp(['共有' num2str(n) '个评价对象,' num2str(m) '个评价指标!'])
Judge=input(['这' num2str(m) '个评价指标是否需要正向化处理,需要输入1,不需要输入0:']);
if(Judge==1)
Position=input('请输入需要正向化的指标所在列,例如第1、2、4三列需要处理,输入[1,2,4]:');
disp('请输入需要正向化处理的这些列的指标类型(1:极小型,2:中间型,3:区间型):');
Type=input('例如第1列是中间型,第2列是区间型,第3列是极小型,输入[2,3,1]:');
for i=1:size(Position,2)
  X(:,Position(i))=Positivization(X(:,Position(i)),Position(i),Type(i));
end
end
disp('正向化后矩阵为:')
disp(X);
%第二步:预处理
Mean=mean(X);
Z=X./repmat(Mean,size(X,1),1);
disp('预处理后的矩阵为:');
disp(Z);
%第三步:构造母序列和子序列
X=Z; %虚构的母序列
Y=max(Z,[],2);
%计算得分
absX0_Xi=abs(X-repmat(Y,1,size(X,2)));%|X0-Xi|
a=min(absX0_Xi(:)); %两级最小差
b=max(absX0_Xi(:));%两级最大差
rho=0.5;
gamma=(a+rho*b)./(absX0_Xi+rho*b);%关联系数矩阵
disp('子序列中各个指标的灰色关联度分别为:')
disp(mean(gamma))
weight=mean(gamma)/sum(mean(gamma)); %计算子序列中各指标权重
disp('子序列中各个指标的权重分别为:')
disp(weight)
Score=sum(X.*repmat(weight,size(X,1),1),2);%未归一化的得分
Last_Score=Score/sum(Score);%归一化后的得分
[Sort_Score,index]=sort(Last_Score,'descend')

  • 3
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值