数模算法:熵权法(用于客观确定权值)

定义

根据信息熵的定义,对于某项指标,可以用熵值来判断某个指标的离散程度,其熵值越小,指标的离散程度越大, 该指标对综合评价的影响(即权重)就越大,如果某项指标的值全部相等,则该指标在综合评价中不起作用。
按照信息论基本原理的解释,信息是系统有序程度的一个度量,熵是系统无序程度的一个度量;如果指标的信息熵越小,该指标提供的信息量越大, 在综合评价中所起作用理当越大,权重就应该越高。因此,可利用信息熵这个工具,计算出各个指标的权重,为多指标综合评价提供依据。
综合来说这种评价法比较具有客观性

算法步骤(来源:知乎张敬信的文章
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

案例
在这里插入图片描述

matlab代码

%导入数据
shang_datas=xlsread('D:\熵权法权重.xlsx','sheet1','B2:J12')
R=shang_datas;
[n,m]=size(R);
k=1/log(n);
Rmin=min(R);
Rmax=max(R);
A=max(R)-min(R);
%构建n行1列的Rmin
y=R-repmat(Rmin,n,1);
%归一化
for j=1:m
    y(:,j)=y(:,j)/A(j)
end
%归一化后每一列的和
S=sum(y,1)
%求P
P=zeros(n,m);
for i=1:size(P,2)
    P(:,i)=y(:,i)/S(i)
end
lnPij=zeros(n,m);
for i=1:n
    for j=1:m
        if P(i,j)==0
            lnPij(i,j)=0;
        else
            lnPij(i,j)=log(P(i,j));
        end
    end
end
ej=-k*(sum(P.*lnPij,1));%计算熵值
weights=(1-ej)/(m-sum(ej));%计算权重
%以下是按原数据算综合得分
F=zeros(n,m);%保存结果,算出综合得分
for k=1:m
    F(:,k)=weights(k)*shang_datas(:,k)
    %按归一化后数据算综合得分
    %F(:,k)=weights(k)*shang_datas(:,k)
end
F=sum(F,2)

权值
在这里插入图片描述

按原数据算综合得分(1-11)

在这里插入图片描述
按归一化后数据算综合得分(1-11)
在这里插入图片描述

展开阅读全文

没有更多推荐了,返回首页

©️2019 CSDN 皮肤主题: 大白 设计师: CSDN官方博客
应支付0元
点击重新获取
扫码支付

支付成功即可阅读