文章首发于我的个人博客:欢迎大佬们来逛逛
p i j = Y y ¨ ∑ i = 1 m Y i j , i = 1 , ⋯ , m , j = 1 , ⋯ , n \begin{aligned}p_{ij}=\frac{Y_{\ddot{y}}}{\sum_{i=1}^m Y_{ij}},i=1,\cdots,m,j=1,\cdots,n\end{aligned} pij=∑i=1mYijYy¨,i=1,⋯,m,j=1,⋯,n
E j = − ln ( m ) − 1 ∑ i = 1 m p i j ln p i j E_j=-\ln(m)^{-1}\sum_{i=1}^mp_{ij}\ln p_{ij} Ej=−ln(m)−1i=1∑mpijlnpij
w j = 1 − E j k − Σ E j ( j = 1 , 2 , … , n ) w_j=\dfrac{1-E_j}{k-\Sigma E_j}(j=1,2,\ldots,n) wj=k−ΣEj1−Ej(j=1,2,…,n)
D j = 1 − E j w j = D j ∑ j = 1 m D j \begin{aligned}D_j&=1-E_j\\\\w_j&=\frac{D_j}{\sum_{j=1}^mD_j}\end{aligned} Djwj=1−Ej=∑j=1mDjDj
Z i = ∑ j = 1 n X i j W j , i ∈ ( 1 , 2 , 3 , . . . m ) Z_{i}\mathrm{=}\sum_{j=1}^{n}X_{ij}W_{j},i\in(1,2,3, ... m) Zi=j=1∑nXijWj,i∈(1,2,3,...m)
function [Score,W]=mfunc_entropyMethod(data)
% 熵权法:求解每个指标的权重
% paramts:
% data: 原始数据矩阵,(m,n) m为评价对象,n为评价指标
% returns:
% Score:每个评价对象的综合得分
% W: 所有指标的权重
%数据标准化到0.002-1区间
data2=mapminmax(data',0.002,1);
data2=data2';
%得到信息熵
[m,n]=size(data2); % m个对象,n个指标
p=zeros(m,n);
for j=1:n
% 计算第j列的每一列指标在该指标中所占的比例
p(:,j)=data2(:,j)/sum(data2(:,j));
end
for j=1:n
% 计算每个指标的信息熵
E(j)=-1/log(m)*sum(p(:,j).*log(p(:,j)));
end
%计算权重
W=(1-E)/sum(1-E); % 通过信息冗余度计算
%计算得分
s=data2*W';
Score=100*s/max(s);
end