熵权法(the Entropy Weight Method)以及MATLAB实现
按照信息论基本原理的解释,信息是系统有序程度的一个度量,熵是系统无序程度的一个度量;如果指标的信息熵越小,该指标提供的信息量越小,在综合评价中所起作用理当越小,权重就应该越低。因此,可利用信息熵这个工具,计算出各个指标的权重,为多指标综合评价提供依据。
物理意义
不同意义
◎ 物理学上指热能除以温度所得的商,标志热量转化为功的程度。
◎ 科学技术上泛指某些物质系统状态的一种量(liàng)度,某些物质系统状态可能出现的程度。亦被社会科学用以借喻人类社会某些状态的程度。
◎ 在信息论中,熵表示的是不确定性的量度。
熵权法是一种客观赋权方法。它十分复杂,计算步骤如下:
- 构建各年份各评价指标的判断矩阵:
- 将判断矩阵进行归一化处理, 得到归一化判断矩阵:
- 根据熵的定义,根据各年份评价指标,可以确定评价指标的熵。
- 定义熵权。定义了第n个指标的熵后,可得到第n个指标的熵权。
- 计算系统的权重值。
MATLAB实现代码如下:
1 % 初始数据矩阵R 2 R=xlsread("C:\Users\PC\Desktop\数据.xlsx"); 3 % 输入矩阵的大小,rows为对象个数,cols为指标个数 4 [rows,cols]=size(R); 5 k=1/log(rows); % 求k 6 Rmin = min(R); 7 Rmax = max(R); 8 A = max(R) - min(R); 9 y = R - repmat(Rmin,2033,1); 10 for j = 1 : size(y,2) 11 y(:,j) = y(:,j)/A(j); 12 end 13 % 求Y(i,j) 14 S = sum(y,1); 15 Y = zeros(rows,cols); 16 for i = 1 : size(Y,2) 17 Y(:,i) = y(:,i)/S(i); 18 end 19 % 初始化lnYij 20 lnYij=zeros(rows,cols); 21 % 计算lnYij 22 for i=1:rows 23 for j=1:cols 24 if Y(i,j)==0 25 lnYij(i,j)=0; 26 else 27 lnYij(i,j)=log(Y(i,j)); 28 end 29 end 30 end 31 % 计算熵值Hj 32 ej=-k*(sum(Y.*lnYij,1)); 33 weights=(1-ej)/(cols-sum(ej)); 34 F = zeros(rows,cols); 35 for k = 1 : size(R,2) 36 F(:,k) = weights(k)*y(:,k); 37 end 38 format long 39 % F即为对变量进行熵权法客观赋权后,计算获得的综合评分 40 F = sum(F,2) ;