加载中…
个人资料
  • 博客等级:
  • 博客积分:
  • 博客访问:
  • 关注人气:
  • 获赠金笔:0支
  • 赠出金笔:0支
  • 荣誉徽章:
正文 字体大小:

[原创]熵权法求权重的Matlab实现及演示

(2013-03-31 01:25:16)
标签:

matlab

熵权法

信息熵

客观权重

分类: 综合

一、理论简介
“熵权”理论是一种客观赋权方法,它借用信息论中熵的概念。熵权是在给定评价对象集后各种评价指标值确定的情况下,各指标在竞争意义上的相对激烈程度,从信息角度考虑,它代表该评价指标在该问题中提供有效信息量的多寡程度,作为一种客观综合评价方法,它主要是根据各指标传递给决策者的信息量大小来确定其权数。

 
二、Matlab程序实现

根据熵权法理论,编写Matlab程序如下:
------------------------------------------------------分割线---------------------------------------------------------------
function weights = EntropyWeight(R)
%% 熵权法求指标权重,R为输入矩阵,返回权重向量weights

[rows,cols]=size(R);   % 输入矩阵的大小,rows为对象个数,cols为指标个数
k=1/log(rows);         % 求k

f=zeros(rows,cols);    % 初始化fij
sumBycols=sum(R,1);    % 输入矩阵的每一列之和(结果为一个1*cols的行向量)
% 计算fij
for i=1:rows
    for j=1:cols
        f(i,j)=R(i,j)./sumBycols(1,j);
    end
end

lnfij=zeros(rows,cols);  % 初始化lnfij
% 计算lnfij
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)); % 计算熵值Hj
weights=(1-Hj)/(cols-sum(Hj));
end
------------------------------------------------------分割线---------------------------------------------------------------
 

三、结果展示

假设某评价问题中涉及100个对象和12个指标,随机生成一个100×12的评价矩阵(假设已规范化),并命名为testData,调用以上熵权法函数EntropyWeight( ),便可到这12个指标的权重。结果如下:(最终结果分别为第1~第12个指标的权重)


参考文献:
倪九派李萍,等基于AHP和熵权法赋权的区域土地开发整理潜力评价[J].农业工程学报, 2009, 25(5): 202-209.


版权所有,转载请声明来源:http://blog.sina.com.cn/s/blog_b3509cfd0101bm0f.html

0

阅读 收藏 喜欢 打印举报/Report
  

新浪BLOG意见反馈留言板 欢迎批评指正

新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 产品答疑

新浪公司 版权所有