数学建模指标合成客观权重法matlab实现

51 阅读7分钟

本文已参与「新人创作礼」活动,一起开启掘金创作之路

指标合成的客观权重方法

通过一个实例讲解指标权重确定的方法。 我们根据采集到的指标对高校进行排名。

数据预处理

(1)统计数据的指标介绍

为全面反映各高校实际情况,选取了包括人才培养、科学研究及成果方面的18个指标。

这18个指标具体为:X1X_{1}​​​​​​一授予博士学位,X2X_{2}​​​​​​—授予硕士学位,X3X_{3}​​​​​​—优博入选数,X4X_{4}​​—​​​​发明专利数,X5X_{5}​—​​​​​实用新型专利数,X6X_{6}​​​​​​—国家一等奖励,X7X_{7}​​​​​​一国家二等奖励数量,X8X_{8}​​​​​​国家社科基金项目奖一等数量,X9X_{9}​​​​​​—国家社科基金项目奖二等数量,X10X_{10}​​​​​​-国家社科基金项目奖三等数量,X11X_{11}​​​​​​—教育部人文社科奖一等数量,X12X_{12}​​​​​​—教育部人文社科奖二等数量,X13X_{13}​​​​​​—教育部人文社科奖三等数量,X14X_{14}​​​​​​—国家基地总数和国家重点学科(国家重点实验室、国家工程研究中心、人文社科基地数之和),X15X_{15}​​​​​​—经费总数(万元),X16X_{16}​​​​​​—SCI总数,X17X_{17}​​​​​​—EI总数,X18X_{18}​​​​​​​​—CSCD、 CSSCI总数

表1部分高校某年的18个指标信息

学校X1X_{1}X2X_{2}X3X_{3}X4X_{4}​​X5X_{5}​​X6X_{6}​​X7X_{7}​​X8X_{8}​​X9X_{9}​​X10X_{10}​​X11X_{11}​​X12X_{12}​​X13X_{13}​​X14X_{14}​​X15X_{15}​​X16X_{16}​​X17X_{17}​​X18X_{18}
北京大学9672212451391011643849159931954.138374684526
中国人民大学377164316000014437153636652351340
清华大学5782990489471772270022366177163.2507316984647
北京交通大学6853501661000000051133128249372
北京工业大学374291691701000000215126.225031493
北京航空航天13380586919020000001247526.05403331189
北京理工大学2017572148000000001229713.813902001035
北京科技大学8049621301612000001821358.36685641

(2)数据的归一化处理 由于各个指标的取值范围不同, 量纲与意义不同, 为消除这些影响, 需要对数据进行归一化处理。

设共有n个学校,每个学校共有m个指标,采集到的观测数据为:xij(i=1,2,,n;j=1,2,,m)x_{i j}(i=1,2,…,n;j=1,2,…,m)​​,每个数值显然越大对排名越有利,因此归一化处理方法 可采用下式

yij=xijxjmxjMxjm(i=1,2,,n;j=,2,,m) 其中 xjM=max1inxij,xjm=min1inxijy_{i j}=\frac{x_{i j}-x_{j m}^{*}}{x_{j M}^{*}-x_{j m}^{*}} \quad(i=1,2, \cdots, n ; j=, 2, \cdots, m)\\ \\ \text { 其中 } x_{j M}^{*}=\max _{1 \leq i \leq n} x_{i j}, \quad x_{j m}^{*}=\min _{1 \leq i \leq n} x_{i j}

经过上面变换,所有数据都变到[0,1],便于后续工作进行统一处理

客观权重确定的三种方法

==熵权法== 设n个学校的m个指标已经归一化处理,数据为yij(i=1,2,,n;j=1,2,,m)y_{i j}(i=1,2,…,n;j=1,2,…,m)​ 其第jj项指标的信息熵计算公式为:

Ej=i=1npijlnpijlnnj=1,2,,m0Ej1 其中 pij=yiji=1nyij, 若 pij=0, 则定义 pijlnpij=0\begin{array}{l} E_{j}=-\frac{\sum_{i=1}^{n} p_{i j} \ln p_{i j}}{\ln n} \quad j=1,2, \cdots, m\\ \\ 0 \leq E_{j} \leq 1 \text { 其中 } p_{i j}=\frac{y_{i j}}{\sum_{i=1}^{n} y_{i j}} \text {, 若 } p_{i j}=0 \text {, 则定义 } p_{i j} \ln p_{i j}=0 \text {. } \end{array}

EjE_{j}​​​越小,表明数据间差异越大,因此提供的信息越大,该指标权重就越大 EjE_{j}​​​越大,表明数据间彼此越接近,因此提供的信息越少,该指标权重就越小

客观权重计算式:

Wj=1Ejmj=1mEjj=1,2,,mW_{j}=\frac{1-E_{j}}{m-\sum_{j=1}^{m} E_{j}} \quad j=1,2, \cdots, m

==标准离差法== 如果某个指标的标准差大,因此提供的信息越大,该指标权重就越大;反之,某个指 标的标准差,,因此提供的信息越少,该指标权重就越小。利用标准差来计算各指标的客观 权重,其计算式为

Wj=σjj=1mσjj=1,2,,mW_{j}=\frac{\sigma_{j}}{\sum_{j=1}^{m} \sigma_{j}} \quad j=1,2, \cdots, m

==CRITIC法确定权重== CRITIC法是Diakoulaki提出的一种客观赋权方法, 确定权值以两个基本概念为基础: 一是对比度, 标准差越大权重相对越大。 二是评价指标间的冲突性, 当两个指标间有较强的正相关, 说明两个指标冲突性低, 两个指标反映的信息具有较大的相似性; 当两个指标间有较强的负相关, 说明两个指标冲突性大, 两个指标反映的信息具有较大的不同。

确定第jj个指标包含的信息量为:cj=σji=1m(1rij)(j=1,2,,m)c_{j}=\sigma_{j} \sum_{i=1}^{m}\left(1-r_{i j}\right)(j=1,2, \cdots, m) \quad

第j个指标权重为:wj=cji=1mci(j=1,2,,m)\quad w_{j}=\frac{c_{j}}{\sum_{i=1}^{m} c_{i}}(j=1,2, \cdots, m)

综合排名方法

采用(1)式对数据归一化处理后,采用三种不同的客观权重,对各学校的所有指标进 行加权平均,可以得到各学校的综合得分,计算式为:

fi=j=1mwjyij(i=1,2,,n)f_{i}=\sum_{j=1}^{m} w_{j} \cdot y_{i j} \quad(i=1,2, \cdots, n) 其中权重 wjw_{j} 可由 (3)、(4)或 (6) 式计算得到。

表2三种不同排名法得到的前10名高校

名次熵权法标准离差法CRITIC法
1北京大学北京大学北京大学
2清华大学清华大学清华大学
3复旦大学浙江大学复旦大学
4中国人民大学复旦大学浙江大学
5武汉大学武汉大学武汉大学
6北京师范大学中国人民大学中国人民大学
7浙江大学北京师范大学北京师范大学
8南京大学南京大学南京大学
9吉林大学吉林大学吉林大学

从表2所排前10名结果来, 不同客观权重确定方法排名结果存在一定差异, 这说明排名结果是相对的, 跟采用方法有关。 从差异大小来看, 标准离差法和CRITIC法排名结果更接近。

不同排名结果差异的度量方法

设有两种不同方法得到的排名序列分别为B1=(k1,k2,,kn),B2=(z1,z2,,zn)B_{1}=(k_{1},k_{2},…,k_{n}),B_{2}=(z_{1},z_{2},…,z_{n})​。 其中k1,k2,,knk_{1},k_{2},…,k_{n}​和z1,z2,,znz_{1},z_{2},…,z_{n}​都是1,2,…,n的一个排列,kik_{i}​代表第一种排名方法中 第i个学校的名次,ziz_{i}​代表第二种排名方法中第i个学校的名次 则第i个学校的名次在两种排名方法中的差异为:di=kizid_{i}=|k_{i}-z_{i}|​​ (i=1,2,,n)(i=1,2,…,n)​​​​​ 两种排名方法的排名平均差异定义为:d=i=1ndi/nd=\sum_{i=1}^nd_{i}/n

为反映两种排名方法名次差异的波动程度,采用排名差异构成的序列 di(i=12,,n)d_{i}(i=12,…,n)的标准差来度量。其计算式如下:v=i=1n(did)2/nv=\sqrt{\sum_{i=1}^{n}\left(d_{i}-d\right)^{2} / n}

表3三种方法的排名差异

方法(1,2)(1,3)(2,3)
平均差异度d5.12004.44001.7400
差异度的标准差5.60894.86862.3034

其中1代表熵权法,2代表标准偏差法,3代表 CRITIC法。 从表3的结果来看,标准偏差法与CRITIC法的排名差异最小,为1.74, 各学校采用这两种方法的排名差异的波动程度也最小,为2.3034。 从结果看,标准偏差法和CRITIC法确定的权重排名结果最为接近

Matlab程序univer.m

%采用三种客观权重的方法对高校排名
%1.熵权法,2.标准离差法,3.CRITIC法
load university.txt;
x=university;
[m,n]=size(x);
%m---数据样本数,n---指标数
%数据的标准化
xmin=min(x);
xmax=max(x);
dis=xmax-xmin;
for i=1:n;
x(:,i)=(x(:,i)-xmin(i))/dis(i);
end; %归一化
%-----------------------------------------------------------------------------------------
%1.熵权法
p=[]; E=[];
for k=1:n
s=sum(x(:,k));
p=x(:,k)/s;
s=0.0;
for i=1:m
if(p(i)>0) s=s+p(i)*log(p(i)); end
end
E(k)=-s/log(m); %获得熵
end;
s=sum(E);
W1=(1-E)/(n-s); %熵权法权重
%-----------------------------------------------------------------------------------------
%2.标准离差法
au=mean(x); );%均值
sig=std(x);% );%标准差
s=sum(sig);
w2=sig/s; %标准离差法获得的权重
%-----------------------------------------------------------------------------------------
%3.CRITIC法
r=corrcoef(x); %求相关系数
w=[];
for i=1:n
s=0.0;
for j=1:n
s=s+(1.0-r(i,j));
end
w3(i)=sig(i)*s;
end
s=sum(W3);
W3=W3/s; %CRITIC法获得的权重
w=W1; %选取一种权重
wg=100*w; %权重归一化
f=x*wg‘; %计算各学校得分
ff=f;
s=1:m;
for i=1:m-1
for j=i+1:m
if(ff(j)>ff(i))
temp=ff(i); ff(i)=ff(j); ff(j)=temp;
temp=s(i); s(i)=s(j);
s(j)=temp; %s(i)为第i名的学校序号
end
end
end
fid=fopen('result.txt','w');
%输出前20名的: 名次,学校序号,得分
fprintf(fid,' 名次,学校序号,得分\r\n');
for i=1:20
fprintf(fid,'%5d %5d %6.2f\r\n',i,s(i),ff(i));
end
fclose(fid);