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

指标合成的客观权重方法

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

数据预处理

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

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

这18个指标具体为: X 1 X_{1} X1​​​​​​一授予博士学位, X 2 X_{2} X2​​​​​​—授予硕士学位, X 3 X_{3} X3​​​​​​—优博入选数, X 4 X_{4} X4​​—​​​​发明专利数, X 5 X_{5} X5​—​​​​​实用新型专利数, X 6 X_{6} X6​​​​​​—国家一等奖励, X 7 X_{7} X7​​​​​​一国家二等奖励数量, X 8 X_{8} X8​​​​​​国家社科基金项目奖一等数量, X 9 X_{9} X9​​​​​​—国家社科基金项目奖二等数量, X 10 X_{10} X10​​​​​​-国家社科基金项目奖三等数量, X 11 X_{11} X11​​​​​​—教育部人文社科奖一等数量, X 12 X_{12} X12​​​​​​—教育部人文社科奖二等数量, X 13 X_{13} X13​​​​​​—教育部人文社科奖三等数量, X 14 X_{14} X14​​​​​​—国家基地总数和国家重点学科(国家重点实验室、国家工程研究中心、人文社科基地数之和), X 15 X_{15} X15​​​​​​—经费总数(万元), X 16 X_{16} X16​​​​​​—SCI总数, X 17 X_{17} X17​​​​​​—EI总数, X 18 X_{18} X18​​​​​​​​—CSCD、 CSSCI总数

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

学校 X 1 X_{1} X1 X 2 X_{2} X2 X 3 X_{3} X3 X 4 X_{4} X4​​ X 5 X_{5} X5​​ X 6 X_{6} X6​​ X 7 X_{7} X7​​ X 8 X_{8} X8​​ X 9 X_{9} X9​​ X 10 X_{10} X10​​ X 11 X_{11} X11​​ X 12 X_{12} X12​​ X 13 X_{13} X13​​ X 14 X_{14} X14​​ X 15 X_{15} X15​​ X 16 X_{16} X16​​ X 17 X_{17} X17​​ X 18 X_{18} X18
北京大学9672212451391011643849159931954.138374684526
中国人民大学377164316000014437153636652351340
清华大学5782990489471772270022366177163.2507316984647
北京交通大学6853501661000000051133128249372
北京工业大学374291691701000000215126.225031493
北京航空航天13380586919020000001247526.05403331189
北京理工大学2017572148000000001229713.813902001035
北京科技大学8049621301612000001821358.36685641

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

设共有n个学校,每个学校共有m个指标,采集到的观测数据为: x i j ( i = 1 , 2 , … , n ; j = 1 , 2 , … , m ) x_{i j}(i=1,2,…,n;j=1,2,…,m) xij(i=1,2,,n;j=1,2,,m)​​,每个数值显然越大对排名越有利,因此归一化处理方法
可采用下式
$$
y_{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个指标已经归一化处理,数据为 y i j ( i = 1 , 2 , … , n ; j = 1 , 2 , … , m ) y_{i j}(i=1,2,…,n;j=1,2,…,m) yij(i=1,2,,n;j=1,2,,m)
其第 j j j项指标的信息熵计算公式为:
E j = − ∑ i = 1 n p i j ln ⁡ p i j ln ⁡ n j = 1 , 2 , ⋯   , m 0 ≤ E j ≤ 1  其中  p i j = y i j ∑ i = 1 n y i j , 若  p i j = 0 , 则定义  p i j ln ⁡ p i j = 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} Ej=lnni=1npijlnpijj=1,2,,m0Ej1 其中 pij=i=1nyijyij pij=0则定义 pijlnpij=0
E j E_{j} Ej​​​越小,表明数据间差异越大,因此提供的信息越大,该指标权重就越大
E j E_{j} Ej​​​越大,表明数据间彼此越接近,因此提供的信息越少,该指标权重就越小

客观权重计算式:
W j = 1 − E j m − ∑ j = 1 m E j j = 1 , 2 , ⋯   , m W_{j}=\frac{1-E_{j}}{m-\sum_{j=1}^{m} E_{j}} \quad j=1,2, \cdots, m Wj=mj=1mEj1Ejj=1,2,,m
标准离差法
如果某个指标的标准差大,因此提供的信息越大,该指标权重就越大;反之,某个指
标的标准差,,因此提供的信息越少,该指标权重就越小。利用标准差来计算各指标的客观
权重,其计算式为
W j = σ j ∑ j = 1 m σ j j = 1 , 2 , ⋯   , m W_{j}=\frac{\sigma_{j}}{\sum_{j=1}^{m} \sigma_{j}} \quad j=1,2, \cdots, m Wj=j=1mσjσjj=1,2,,m

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

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

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

综合排名方法

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

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

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

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

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

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

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

为反映两种排名方法名次差异的波动程度,采用排名差异构成的序列
d i ( i = 12 , … , n ) d_{i}(i=12,…,n) di(i=12,,n)的标准差来度量。其计算式如下: v = ∑ i = 1 n ( d i − d ) 2 / n v=\sqrt{\sum_{i=1}^{n}\left(d_{i}-d\right)^{2} / n} v=i=1n(did)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);
  • 1
    点赞
  • 29
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值