探寻初心
拼命奋斗
一、赛题分析
二、模型搭建
三、算法实现及代码
1.Spearman相关系数
2.折衷型模糊多属性算法
3.主客观综合赋权法(层次分析法+熵权法)
4.网络层次分析法(质量屋思想)
赛后总结
写在前面:关于三个小白数模探寻之路的总结,只为总结和分享,如有不足或错误的地方,请各位大佬指正。:><:
初心:五月的太阳慢慢变得火热,但心中的太阳却慢慢黯淡了,没了激情、没了欲望,于是,为了找回心中那份火热的温度,我打算把心托付给“她”。
于是,开始了一段数模探寻之路,三个小白相遇了,奔着得到“她”的目标去奋斗了......
奋斗流程:分析题目-->查阅和收集资料-->讨论建模思路和方法-->完善论文
赛题背景:
题目初分析:
问题一:题目要求比较 JEE 和 GHSI 两种评估方法的异同,并且得出一些可以评估国家是否能够应对国际生物安全威胁的因素。
对GHSI、JEE分析和逐项比较-->两者的异同之处-->
针对往年的评估数据和实际的应对问题情况-->这两个评估方法都不够完善的结论-->
结合当下疫情的情况、查阅大量文献和相关资料-->修改评估指标和方法-->提出六个软指标影响因素作为补充因素
问题二:需要通过一些因素来建立一种新的评估方法,以此来衡量国家应对生 物安全威胁的能力,同时还要检测这个评估方法的有效性。通过分析,仅凭原评估方法中筛选出来的指标,是不足以完善评估方法的,但这些方法也有其正确性,作为硬指标;同时提出软性指标的概念,用来补充模型的广度。最后通过各国在疫情表现的真实情况排名进行比对,从而证明有效性。
问题三:要求把评估的对象从一个国家更换为所包含的省份或地区,并且验证上述所得的评估方法是否依然有效。由于评估对象的范围发生变化,相应的指标定义也要发生改变,首先对指标进行再定义,结合地区所能做到的能力,适当得调整压要求, 进而得出客观有效得评价指标,再利用统计学数据处理方法进行对模型的分析和检验。
问题四:根据问题四的要求,应该结合上述三个问题的内容以及所得到的答案,对即将出现的下一波国际生物安全威胁进行行动预测,并且给出建议。
具体实现:
问题一:通过多维度比较 JEE 和 GHSI 两种评估体系,得到两种评估方法的异 同,分别体现在数据来源、评估框架和流程、评估标准、评估指标、计算方式五大方面。 针对 JEE 和 GHSI 因素的异同和优劣,通过斯皮尔曼等级相关系数对各种因素指标进行 筛选、剔除和整合,保留了“预防”、“检测”、“卫生规范”三大影响因素;同时经过多层次分析法添加了更能体现应对生物威胁能力的六大指标,分别是政府决策力 GD、 政府效率 GE、区域流通度 RC、群众配合度 HC、群众重视程度 PI、迅速反映度 QR, 以此九大指标构成一套可以评估一个国家应对生物安全威胁能力的因素体系。
问题二:就问题一所提出的九大指标影响因素体系“预防、检测、卫生规范、 政府决策力 GD、政府效率 GE、区域流通度 RC、群众配合度 HC、群众重视程度 PI、 迅速反映度 QR”进行考虑,分成软硬指标,软指标以反映一个国家当即对生物安全威 胁作出行动的能力;硬指标以反映一个国家本身所具有应对生物安全威胁的硬实力。对于硬指标,通过主客观综合赋权法确定每个硬指标的权重;对于软指标,通过折衷型模糊多属性算法量化指标值,并通过网络层次分析法和质量屋法确定每一个软指标的权重,最终得到了软硬指标的权重占比分别为 0.6788 和 0.3218,成功搭建好模型。通过在多家国际性权威网站上收集世界各国应对生物安全威胁情况的数据,运用模型得出更客观、全面的世界各国能力评分和排位,并与权威数据进行拟合分析,得到高达 0.8159 的拟合程度,以此证明了该模型的有效性。
问题三:评估的对象发生改变,只需对九大指标进行了重新分类和定义,就能本文的评估模型在地区范围内都能适用。通过收集大量的资料和文献,整理得到世界各个地区有关九大指标的相关数据,并且进行筛选和量化,以中国各个省份的数据为例, 再运用我们的评估方法进行数据处理,最终得到了仍然适用的结论。同时运用多元残差个案分析法进行模型修正,最终与权威数据进行线性拟合,得到相关系数高达 0.9454, 说明两个数据集拟合效果好,得到模型准确性较高、模型对于省份、地区也适用的结论。
问题四:由于要针对性地对应对下一波生物安全威胁提出合理的建议,故需要 选取对应对生物安全威胁能力有较大影响度的指标,并针对此指标定义下的方面进行建 议。通过逐步回归算法,算出各指标与总得分的相关系数,筛选的到影响力较大的指标为:GD(政府决策力)、RC(区域流通度)、P(预防)和 HI(卫生制度),着重针对这些指标提出合理性建议,以更好地应对下一波生物安全威胁。
%choose_ying.m:硬指标的筛选
clear;
clc;
ALL=xlsread('D:\2matlab_save\A.比赛代码\2.数据库\choose_ying.xlsx');
%spearman相关性筛选
GHS=ALL(:,1);
GHSI=ALL(:,2:7);
Y=GHS;
x1=GHSI(1:end,1);
x2=GHSI(1:end,2);
x3=GHSI(1:end,3);
x4=GHSI(1:end,4);
x5=GHSI(1:end,5);
x6=GHSI(1:end,6);
[R1,P1]=corr(x1,Y, 'type' , 'Spearman')
[R2,P2]=corr(x2,Y, 'type' , 'Spearman')
[R3,P3]=corr(x3,Y, 'type' , 'Spearman')
[R4,P4]=corr(x4,Y, 'type' , 'Spearman')
[R5,P5]=corr(x5,Y, 'type' , 'Spearman')
[R6,P6]=corr(x6,Y, 'type' , 'Spearman')
R=[R1,R2,R3,R4,R5,R6]
P=[P1,P2,P3,P4,P5,P6]
figure
plot(R,'K*');
xlabel('x');
ylabel('R(Spearman相关系数)');
figure
plot(P,'K*');
xlabel('x');
ylabel('P(显著性检验)');
%zhezhongmohu.m:量化软指标
%折衷型模糊算法
clear;
clc;
load mohu.txt
%load diqu.txt %用于地区数据量化
sj=[repmat(mohu(:,1),1,3),mohu(:,2:end)];
%1.进行归一化处理
n=size(sj,2)/3; %指标的个数
m=size(sj,1); %评价对象的个数
w=[0.5*ones(1,3),0.125*ones(1,12)]; %权重向量三角模糊数
w=repmat(w,m,1); %把权重向量变成和数据同维数的矩阵
y=[]; %归一化数据矩阵的初始化
for i=1:n
tm=sj(:,3*i-2:3*i); %提出第 i 个指标的数据
max_t=max(tm); %求第 i 个指标的最大值
max_t=repmat(max_t,m,1); %把第 i 个指标的最大值向量变成与数据同维数的矩阵
max_t=max_t(:,3:-1:1); %为了下面计算需要,把最大值矩阵的列变成逆序
yt=tm./max_t; %数据归一化处理
yt(:,3)=min([yt(:,3) ones(m,1)],[],2); %归一化数据的第 3 列进行特殊处理
y=[y,yt]; %构造归一化矩阵的各个列
end
% 2.求模糊决策矩阵D
r=[];
for i=1:n
tm1=y(:,3*i-2:3*i);tm2=w(:,3*i-2:3*i);
r=[r,tm1.*tm2];
end
%3.M+,M-
mplus=max(r); %求 M+
mminus=min(r); %求 M-
dplus=dist(mplus,r'); %求到 M+距离
dminus=dist(mminus,r'); %求到 M-距离
%4.隶属度
mu=dminus./(dplus+dminus);%求隶属度
F=(mu)';
disp('最终得分为:');
disp(F);
%quan_ying.m:硬指标的权重的选取
%主客观综合赋权法
clear;
clc;
%一.层次分析法得到权重w1
%1/判断矩阵
A=[1,2,1;1/2,1,1;1,1,1];
[n,n]=size(A);
%2/计算A的最大特征值对应的特征向量
x=ones(n,100);
y=ones(n,100);
m=zeros(1,100);
m(1)=max(x(:,1));
y(:,1)=x(:,1);
x(:,2)=A*y(:,1);
m(2)=max(x(:,2));
y(:,2)=x(:,2)/m(2);
p=0.0001;i=2;k=abs(m(2)-m(1));
while k>p
i=i+1;
x(:,i)=A*y(:,i-1);
m(i)=max(x(:,i));
y(:,i)=x(:,i)/m(i);
k=abs(m(i)-m(i-1));
end
a=sum(y(:,i));
w1=y(:,i)/a;
t=m(i);
disp('w1=');disp(w1);%权重矩阵
%3/一致性检验
CI=(t-n)/(n-1);
RI=[0 0 0.52 0.89 1.12 1.26 1.36 1.41 1.46 1.49 1.52 1.54 1.56 1.58 1.59];
CR=CI/RI(n);
if CR<0.10
% disp('此矩阵的一致性可以接受!');
% disp('CI=');disp(CI);
% disp('CR=');disp(CR);
end
%2.熵权法得到权重w2
R=xlsread('D:\2matlab_save\A.比赛代码\2.数据库\quan.xlsx','A1:C153');
%1.归一化处理
[rows,cols]=size(R); % 矩阵的大小,rows:对象个数,cols:指标个数
k=1/log(rows);
Rmin = min(R);
Rmax = max(R);
A = max(R) - min(R);
y = R - repmat(Rmin,153,1);
for j = 1 : size(y,2)
y(:,j) = y(:,j)/A(j);
end
%2 计算比重
S = sum(y,1);
Y = zeros(rows,cols);
for i = 1 : size(Y,2)
Y(:,i) = y(:,i)/S(i);
end
%3.计算各指标的熵值
lnYij=zeros(rows,cols); % 初始化lnYij
% 计算lnYij
for i=1:rows
for j=1:cols
if Y(i,j)==0
lnYij(i,j)=0;
else
lnYij(i,j)=log(Y(i,j));
end
end
end
ej=-k*(sum(Y.*lnYij,1)); %熵值
%4.定义指标差异程度,并计算权重
format short
w2=(1-ej)/(cols-sum(ej))
%三.计算主客观权重
a1=w1';
a2=w2;
Wzi=sqrt(a1.*a2);
Wmu=sum(sqrt(a1.*a2));
W=Wzi/Wmu
%quan_ying.m:软指标权重的选取
%网络层次分析法
clear;
clc;
S=[0,1,1,0,0,1;
1,0,1,1,1,1;
1,0,0,0,1,1;
1,0,0,0,1,1;
1,0,1,0,0,1;
1,0,1,0,1,0];
%1.通过S图得到直接影响矩阵B
B=[0,1,1,0,0,1;
2,0,3,1,2,2;
2,0,0,0,2,3;
1,0,0,0,3,1;
1,0,3,0,0,1;
2,0,2,0,1,0];
L=length(B);
%2.B标准化
s1=sum(B,2);
bmax=max(s1);
X=B/bmax;
%X=zscore(B);%标准化函数
%3.全关联矩阵
T=X*inv(eye(L)-X);
%4.影响度与被影响度
for i=1:L
for j=1:L
D(i)=sum(T(i,:)); % 全关联矩阵的各行之和-被影响度
R(j)=sum(T(:,j)); % 全关联矩阵的各列之和-影响度
end
end
%5.影响中心度
M=R+D;
%6.总评价权重
s2=sum(M,2);
mmax=max(s2);
N=M/mmax%最终的权重
Yan=sum(N');%验证权重和
%N=zscore(f)%标准化
追逐“她”的过程可谓酸甜苦辣:
甜:1.比赛可不是一个人的事,合适的队友、分工明确、互相信任才能发挥最大能力。
2.比赛前期的积累特别重要,模型构建的思路、算法实现、大量的数据收集和处理、论文编写都需要一定时间的学习和积累,只有经过沉淀的知识才能散发幽香。
3.比赛时与队友的思维碰撞特别重要,收集到的资料、数据、想到的思路都要第一时间和队友分享和讨论。
4.比赛期间的时间安排非常非常非常重要,哪个时间段完成模型搭建、哪个时间段求解模型、哪个时间段编写论文,都要在比赛开始前就要规划好。
苦:1.模型搭建、算法实现的积累少(毕竟只学习了两周:><:)导致模型构建时犹豫不定、拖拖拉拉。
2.时间分配不合理,最后的论文编写分配的时间过少,导致提交论文匆匆忙忙、论文的编写不够完美(没有进行详细的修改和润色:><:)、最后求解的结果没有粘贴上去:><:。
写在最后:比赛终会结束,但旅途仍在前行,太阳仍在慢慢升起,那个“她”还在远方等待着我们,不要犹豫,整理好心情,再次出发吧,待到把模型“吃透”、把算法“消化”之时,就会与“她”在顶峰相遇。*~~*
ps:算法链接
1.https://blog.csdn.net/NoBuggie/article/details/102783973
2.https://blog.csdn.net/weixin_34186128/article/details/94576934
3.https://blog.csdn.net/qq_43217880/article/details/107826372
4.https://blog.csdn.net/weixin_39575565/article/details/110459717
5.https://blog.csdn.net/qq_42374697/article/details/105901229
6.https://blog.csdn.net/qq_42374697/article/details/106597644