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
**注意:
- 这是一个函数,在matlab创建函数一定要注意文件名必须和函数名一致
- 利用熵值法去做评价,得到评价分数并不科学,因为你用熵值法做评价会默认所有指标都是效益型指标(指标值越大,对评价结果越有利的指标称为效益型指标,反之则为成本型指标),然而事实未必如此。**