熵值法原理介绍及matlab实现代码

1.简单介绍熵值法

熵值法,就是用来求指标权重的。它的原理就是利用熵值计算差异系数,通过差异系数从而判断指标的离散程度,离散程度越大,对该指标对综合评价的影响越大。
原理一般都是比较概念性的,本文就用大白话把大家说明白,什么是熵,一个指标中不确定性的度量,举个例子,有两堆水果,第一堆全是苹果,第二堆有一半是苹果,一半是雪梨,那么在这两堆中抽取苹果,第一堆的概率为1,第二堆为0.5,那么第一堆的熵就为0,而第二堆的熵大于第一堆。那么熵值法就变得容易理解了,无非就是熵值越大,离散程度越大,对综合评价的贡献就越大。

2.优缺点

优点:客观。相比其他确定指标权重的方法,例如层次分析法等,熵值法确定权重不涉及人为主观因素。
缺点:指标的权重会随着样本的变化发生变化。

3.matlab程序实现

function [w]=shangZhiFa(x)  %输入x数据矩阵结构是列为指标,行为样本
[n,m]=size(x);
%% 归一化处理
[X,ps]=mapminmax(x')
ps.min=min(min(X)); % 归一化得到的最小值
ps.max=max(max(X)); % 归一化得到的最大值
ps.range=ps.ymax-ps.ymin; % 归一化后的极差
X=X';  % X为归一化后的数据
%% 计算第j个指标下,第i个记录占该指标的比重p(i,j)
for i=1:n
    for j=1:m
        p(i,j)=X(i,j)/sum(X(:,j));
    end
end
%% 计算第j个指标的熵值e(j)
k=1/log(n);
for j=1:m
    e(j)=-k*sum(p(:,j).*log(p(:,j)));
end
d=ones(1,m)-e;  % 计算信息熵冗余度
w=d./sum(d);    %求权值w
end

**注意:

  1. 这是一个函数,在matlab创建函数一定要注意文件名必须和函数名一致
  2. 利用熵值法去做评价,得到评价分数并不科学,因为你用熵值法做评价会默认所有指标都是效益型指标(指标值越大,对评价结果越有利的指标称为效益型指标,反之则为成本型指标),然而事实未必如此。**
  • 11
    点赞
  • 73
    收藏
    觉得还不错? 一键收藏
  • 10
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 10
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值