1. 程式人生 > >熵值法的應用及matlab程式碼實現

熵值法的應用及matlab程式碼實現

熵值法是指用來判斷某個指標的離散程度的數學方法。離散程度越大,對該指標對綜合評價的影響越大。可以用熵值判斷某個指標的離散程度

用    途判斷某個指標的 離散程度



離散程度越大

該指標對綜合評價的影響越大





熵    是

對不確定性的一種度量 資訊量越大,不確定性

就越小,熵也就越小;資訊量越小,不確定越大                                                                                 




(1)選取n個國家,m個指標,則為第i個國家的第j個指標的數值。(i=1,2…,n; j=1,2,…,m) (2) 指標的標準化處理:異質指標同質化 由於各項指標的計量單位並不統一,因此在用它們計算 綜合指標前,我們先要對它們進行標準化處理,即把指標的絕對值轉化為相對值,從而解決各項不同質指標值的同質化問題。而且,由於正向指標和負向指標數值代表的含義不同(正向指標數值越高越好,負向指標數值越低越好) ,因此,對於高低指標我們用不同的演算法進行資料 標準化處理。其具體方法如下: 正向指標: 負向指標: 則為第i個國家的第j個指標的數值。(i=1,2…,n; j=1,2,…,m)。為了方便起見,仍記資料。 (3)計算第 j 項指標下第 i 個國家佔該指標的比重。 (4)計算第 j 項指標的熵值。 (5)計算第j項指標的
差異係數
。對第項指標,指標值的差異越大,對方案評價的左右就越大,熵值就越小,定義差異係數。 (6)求權值。 (7)計算各國家的綜合得分。

程式碼如下;

function w = shang1(A)%% 熵權法求指標權重,A為輸入矩陣,返回權重向量w

[rows,cols] = size(A); % 矩陣的大小
k = 1/log(rows);        % 求k


f = zeros(rows,cols);   % 初始化
sumBycols = sum(A,1);   % 矩陣的每一列之和
%計算f(i,j)
for i = 1:rows
  for j = 1:cols
      f(i,j) = A(i,j)./sumBycols(1,j);
  end
end


lnfij = zeros(rows,cols); % 初始化ln f(i,j)
% 計算
for i = 1:rows
  for j = 1:cols
      if f(i,j)==0
          lnfij(i,j) = 0;
      else
          lnfij(i,j) = log(f(i,j));
      end
  end
end


Hj = -k*(sum(f.*lnfij,1)); % 計算熵值
w = (1-Hj)/(cols-sum(Hj));%權重
end