熵值法确定权重(matlab附代码)

文章目录

  • 一、基本原理
  • 二、计算过程
  • 三、实例

一、基本原理

​ 熵值法是一种客观赋权法,是根据各项指标观测值所提供的信息的大小来确定指标权重。

​ 在信息论中,熵是对不确定性信息的一种度量。信息量月越大,不确定性就越小,熵也就越小;信息量越小,不确定性就越大,熵也越大。

​ 对于某项指标,可以用熵值来判断某个指标的离散程度,其信息熵值越小,指标值的离散程度越大,提供的信息信息量越多,该指标对综合评价的影响(即权重)就越大,如果某项指标的值全部相等,则该指标在综合评价中不起作用。因此,可利用信息熵这个工具,计算出各个指标的权重,为多指标综合评价提供依据。

​ 在具体使用过程中,熵值法根据各指标的离散程度,利用信息熵计算各指标的熵,该方法得出的各指标的权重较为客观。

​ 根据指标的特性,我们可以用熵值来判断某个指标的离散程度:指标熵值越小,离散程度越大,该指标对综合评价的影响(即权重)也越大。

二、计算过程

第一步 极差变换法

image-20210904082607276

第二步 求各评价对象在各指标下的比值

熵值法确定权重(matlab附代码)_第1张图片

第三步 求个指标的熵值

image-20210904082809465

第四步 通过熵值计算各指标权重

熵值法确定权重(matlab附代码)_第2张图片

第五步 计算各评价对象的综合评分

image-20210904083413311

三、实例

例子的代码(这个代码可以在命令栏中运行,也可以写成脚本来运行)

clc,clear,close all%command window clear,workspace clear,clear all window
A=[96	68	85	88	77	72	92	93
   91	99	61	61	74	87	65	70
   70	99	94	71	91	86	80	93
   98	79	98	61	92	66	88	69
   88	92	87	63	67	64	96	98
   63	65	91	93	80	80	99	74
   70	77	90	88	79	99	82	68
   82	97	76	73	86	73	65	70
   99	93	86	98	89	83	66	85
   99	99	67	61	90	69	70	80];
[n,m]=size(A);
for j=1:m
    C(:,j)=(A(:,j)-min(A(:,j)))./(max(A(:,j))-min(A(:,j))); %极大型(效益型)
    %C组成一个行动矩阵,负向指标的话可以换列再做一个for循环
end
for i=1:n
    for j=1:m
        P(i,j)=C(i,j)./sum(C(:,j));%(:,j)代表一列的总和
    end
end
for i=1:n
    for j=1:m
        if P(i,j)==0
            P(i,j)=1E-6  
        end
    end 
end
for j=1:m
    e(j)=(-1/log(n))*sum(P(:,j).*log(P(:,j)));
end
d=1-e
for j=1:m
    w(j)=d(j)/sum(d)
end
s=w*P';s=s';
[ssort,id]=sort(s,'descend')

​ 熵值法也不一定是对的,用这个例子计算出来的值其实还是有较大差别的,指标的权重其实和离散程度有关,离散程度越大,计算出来的权重也就也大,所以来说如果计算的是成绩的话还是不合理的。熵值法更适合于多指标综合评价。

熵值法确定权重(matlab附代码)_第3张图片

参考文献

基于熵值法的综合评价精讲_用熵值法来确定权重

你可能感兴趣的:(地理学,matlab)