Matlab学习系列19.-熵值法确定权重
熵权法——指标权重确定

p ij rij
r
i 1
m
ij
• (2)计算第j个指标的熵值 e j :
e j k p ij ln p ij
m
其中,k
1 ln m
• (3)计算第j个指标的熵权 w j :
w
j
i 1
(1 e j )
•故在具体应用时,可根据各指标值的变异程度,利 用熵来计算各指标的熵权,利用各指标的熵权对所 有的指标进行加权,从而得出较为客观的评价结果
Page 6
3.利用熵权法计算权重
•我们将综合指标的重要性和指标提供的信息量这两 方面来确定各指标的最终权重。
•现有m个待评项目,n个评价指标,形成原始 数据矩阵 R r :
4.熵权法的适用范围
•可用于任何评价问题中的确定 指标权重; •可用于剔除指标体系中对评价 结果贡献不大的指标。
Page 11
5.熵权法的优缺点
优点
客观性 适应性
相对那些主观赋 值法,精度较高 客观性更强,能 够更好的解释所 得到的结果。
可以用于任何需 要确定权重的过 程,也可以结合 一些方法共同使 用。
郑州大学
熵权法--确定指标权重
目录
熵权法概述 熵权法基本原理
熵权法计算权重过程 熵权法适用范围 熵权法的优缺点
Page 2
1.熵权法概述
• 熵原本是一热力学概念,它最先由申农 C. E.Shannon 引入信息论 ,称之为信息熵。现已在工 程技术,社会经济等领域得到十分广泛的应用。 •申农定义的信息熵是一个独立于热力学熵的概念, 但具有热力学熵的基本性质(单值性、可加性和极 值性),并且具有更为广泛和普遍的意义,所以称 为广义熵。它是熵概念和熵理论在非热力学领域泛 化应用的一个基本概念。
熵值法算法代码-MATLAB

[n,m]=size(x);
[X,ps]=mapminmax(x',0.1,1.1);
X=X'; % X为归一化后的数据, n行(品种), m列(指标)
%% 计算第j个指标下,第i个记录占该指标的比重p(i,j)
for i=1:n
for j=1:m
p(i,j)=X(i,j)/sum(X(:,j));
end
d=ones(1,m)-e; % 计算信息熵冗余度
w=d./sum(d); % 求权值w
s=w*p';
s=s'; % 求综合得分
%算法二(第二次课件PPT上的方法)
x=[]; %%手动粘贴输入数据
x=x';
end
end
%% 计算第j个指标的熵值e(j)
k=1/log(n);
for j=1:m
e(j)=-k*sum(p(:,j).*log(p(:,j)));
end
%%计算差异系数g(j)
g=(ones(1,m)-e)./(m-sum(e));
w=g./sum(g); % 求权值w
s=w*p';
s=s'; % 求综合得分
%%算法一(熵值法确定权重算法及Matlab实现-/thread-452528-1-1.html)
x=[]; %%手动粘贴输入数据
[n,m]=size(x);
[X,ps]=mapminmax(x',0.1,1.1);
X=X'; % X为归一化后的数据, n行(品种), m列(指标)
%% 计算第j个指标下,第i个记录占该指标的比重p(i,j)
Matlab学习系列19.-熵值法确定权重

19.熵值法确定权重一、基本原理在信息论中,熵是对不确定性的一种度量。
信息量越大,不确定性就越小,熵也就越小;信息量越小,不确定性越大,熵也越大。
根据熵的特性,可以通过计算熵值来判断一个事件的随机性及无序程度,也可以用熵值来判断某个指标的离散程度,指标的离散程度越大,该指标对综合评价的影响(权重)越大,其熵值越小。
二、熵值法步骤1. 选取n个国家,m个指标,则x j为第i个国家的第j个指标的数值(i=1, 2…,n; j=1,2,…,m);2. 指标的归一化处理:异质指标同质化由于各项指标的计量单位并不统一,因此在用它们计算综合指标前,先要对它们进行标准化处理,即把指标的绝对值转化为相对值,并令X j X j ,从而解决各项不同质指标值的同质化问题。
而且,由于正向指标和负向指标数值代表的含义不同(正向指标数值越高越好,负向指标数值越低越好),因此,对于高低指标我们用不同的算法进行数据标准化处理。
其具体方法如下:正向指标:X ij min {勺公2),...,人)}X ijmax{X ij,X2j,...,X nj} min {勺公?」,…,x j负向指标:max{X ij,X2j,...,X nj} X jX jmax{X jj,X2j,...,X nj} m in {勺必),…,x^}则X j为第i个国家的第j个指标的数值(i=1,2…,n; j=1,2,…,m) 为了方便起见,归一化后的数据X j仍记为X j;3•计算第j项指标下第i个国家占该指标的比重:X ijP j —, i 1,2..., n, j 1,2..., mX iji 14. 计算第j项指标的熵值:ne j k P ij ln( p j)i 1其中,k=1/ln(n)>0.满足e j >0;5. 计算信息熵冗余度:d j 1e j;6. 计算各项指标的权值:d jW j —, j 1,2,...,md jj 17. 计算各国家的综合得分:ms W j p ij, i 1,2,...nj 1三、Matlab实现按上述算法步骤,编写Matlab函数:shang.mfunction [s,w]=sha ng(x)%函数shang(), 实现用熵值法求各指标(列)的权重及各数据行的得分%x为原始数据矩阵,一行代表一个国家,每列对应一个指标%s返回各行得分,W返回各列权重[n,m]=size(x); % n=23 个国家,m=5 个指标%%数据的归一化处理% Matlab2010b,2011a,b 版本都有bug,需如下处理.其它版本直接用[X,ps]=mapmi nm ax(x',0,1); 即可[X,ps]=mapmi nm ax(x');ps.ymi n=0.002; %归一化后的最小值ps.ymax=0.996; %归一化后的最大值ps.yrange=ps.ymax-ps.ymin; %归一化后的极差,若不调整该值,则逆运算会出错X=mapmi nm ax(x',ps);% mapminmax('reverse',xx,ps); % 反归一化,回到原数据X=X'; %为归一化后的数据,23行(国家),5列(指标)%%计算第j个指标下,第i个记录占该指标的比重p(i,j)for i=1: nfor j=1:mp(i,j)=X(i,j)/sum(X(:,j));endend%%计算第j个指标的熵值e(j)k=1/log( n);for j=1:me(j)=-k*sum(p(:,j).*log(p(:,j)));endd=o nes(1,m)-e; %计算信息熵冗余度w=d./sum(d); % 求权值ws=w*p'; %求综合得分程序测试,现有数据如下:(存为data.txt )114.6 1.1 0.71 85.0 34655.3 0.96 0.4 69.0 300132.4 0.97 0.54 73.0 410152.1 1.04 0.49 77.0 433103.5 0.96 0.66 67.0 38581.0 1.08 0.54 96.0 336179.3 0.88 0.59 89.0 44629.8 0.83 0.49 120.0 28992.7 1.15 0.44 154.0 300248.6 0.79 0.5 147.0 483115.0 0.74 0.65 252.0 45364.9 0.59 0.5 167.0 402163.6 0.85 0.58 220.0 49595.7 1.02 0.48 160.0 384139.5 0.70 0.59 217.0 47889.9 0.96 0.39 105.0 31476.7 0.95 0.51 162.0 341121.8 0.83 0.60 140.0 40142.1 1.08 0.47 110.0 32678.5 0.89 0.44 94.0 28077.8 1.19 0.57 91.0 36490.0 0.95 0.43 89.0 301100.6 0.82 0.59 83.0 456执行代码:x=load( 'data.txt' ); % 读入数据[s,w]=sha ng(x)运行结果:s = Columns 1 through 90.0431 0.0103 0.0371 0.0404 0.0369 0.0322 0.0507 0.0229 0.0397Colu mns 10 through 180.0693 0.0878 0.0466 0.0860 0.0503 0.0800 0.0234 0.0456 0.0536Colu mns 19 through 230.0272 0.0181 0.0364 0.0202 0.0420w = 0.1660 0.0981 0.1757 0.3348 0.2254。
手把手教你用熵值法计算权重

手把手教你用熵值法计算权重由于对数据要求少,且容易计算,熵值法一直是备受欢迎的权重计算方法。
今天的文章,将带大家一起梳理熵值法计算权重的步骤以及如何应用到综合评价研究中。
一、研究背景研究案例是利用熵值法来对各企业的财务状况进行综合评价分析。
选取了7个财务指标,分别是固定资产产值率、固定资产利税率、资金利润率、资产利税率、流动资金周转天数、销售收入利润率、全员劳动生产率。
二、操作步骤1. 数据标准化首先,需要对数据进行标准化处理。
指标量纲(单位)不一致会造成不同指标的数据有大有小,这样会影响计算结果。
为了消除量纲的影响,分析前需要先对数据进行处理。
正向指标:(X-Min)/(Max-Min) (生成变量-正向化MMS)逆向指标:(Max-X)/(Max-Min) (生成变量-逆向化NMMS)无量纲化处理方法有多种,SPSSAU均有提供。
常见处理办法有标准化、归一化、区间化等。
2、熵值法分析由于熵值法的计算过程要求数值中不能存在0或负数,否则就无法计算出结果。
SPSSAU熵值法中提供了[非负平移]功能。
操作:选择【综合评价】→【熵值法】。
将处理后的指标项放入右侧分析框里,勾选[非负平移]、[综合得分],点击开始分析。
综合评价--熵值法熵值法分析结果各项指标的权重={0.117, 0.134, 0.142, 0.146, 0.139, 0.135, 0.186}。
SPSSAU智能分析中也会提供每个指标具体的权重值。
3. 对综合得分进行排序操作:选择【数据处理】→【生成变量】里排名功能。
点击“综合得分”,再选择“排名(Rank)”,点击确认处理。
通过右上角【我的数据】即可查看到排名情况,以及下载综合得分和排名。
下载后可使用EXCEL对数据进行整理,最终结果如下:三、其他说明1、在综合评价中,每层的权重是独立存在的。
如果研究设计包含多级指标,则需要分别计算权重。
确定好各层指标权重后,再加权求和得到总得分。
matlab熵权法求权重和综合得分

熵权法(Entropy weight method)是一种用于求解权重和综合得分的数学方法,在实际应用中具有重要的意义。
本文将从以下几个方面对熵权法进行介绍和分析,以帮助读者更好地理解和应用这一方法。
一、熵权法的原理熵权法是一种基于信息熵理论的多指标决策方法,其基本原理是利用信息熵的概念对决策对象的指标进行加权,以确定各指标的权重,并最终进行综合评价。
在具体操作中,熵权法首先需要计算每个指标的信息熵,然后基于信息熵计算每个指标的权重,最终利用权重对指标数据进行加权求和,得到综合得分。
二、熵权法的计算步骤1. 收集指标数据:首先需要收集决策对象的各项指标数据,这些数据可以是数量型也可以是分类型,但需要保证数据的准确性和完整性。
2. 计算信息熵:对于数量型指标,可以利用概率分布来计算信息熵;对于分类型指标,可以利用类别的概率分布来计算信息熵。
3. 计算权重:根据各指标的信息熵,可以通过一定的计算方法求解各指标的权重,常用的计算方法包括熵值法、熵权法、熵-权层次法等。
4. 综合得分:最后利用各指标的权重对指标数据进行加权求和,得到综合得分,从而实现对决策对象的综合评价。
三、熵权法的优缺点分析1. 优点:(1)能够综合考虑各指标的信息量,避免了常规加权法中主观性和任意性的缺点;(2)对指标数据的变化较为敏感,能够体现决策对象各指标的变化情况;(3)在处理较为复杂的决策问题时具有较好的适用性和灵活性。
2. 缺点:(1)熵权法在权重计算时对数据的稳定性要求较高,一定范围内的数据变化可能导致权重结果的较大波动;(2)对于分类型指标的处理相对较为复杂,需要对类别进行合理的处理和转化。
四、熵权法在MATLAB中的实现MATLAB作为一种功能强大的科学计算软件,提供了丰富的工具和函数支持,能够方便地实现熵权法的计算和应用。
在MATLAB中,可以利用相关的数学工具箱或自定义函数来实现熵权法的各个步骤,包括数据处理、信息熵计算、权重计算和综合得分的计算,从而实现对决策对象的综合评价和排序。
matlab信息熵方法确定权重

matlab信息熵方法确定权重Matlab是一种强大的数学建模和计算工具,可以用于解决各种实际问题。
信息熵是一种用于度量信息量和信息不确定性的方法,通过计算每个变量的信息熵,可以确定变量的权重。
在本文中,我们将介绍如何使用Matlab 的信息熵方法确定权重。
首先,我们需要明确问题的背景和目标。
假设我们有一个包含多个变量的数据集,我们希望确定每个变量对最终结果的影响程度,即各个变量的权重。
接下来,我们需要计算每个变量的信息熵。
信息熵的计算公式为:H(X) = - ΣP(x) log2(P(x))其中,H(X)表示变量X的信息熵,P(x)表示变量X取值为x的概率。
首先,我们需要对数据集进行预处理,以便计算每个变量的概率。
在Matlab中,我们可以使用histcounts函数来计算每个变量的概率分布。
例如,假设我们有一个包含n个样本的数据集,其中变量X有m个不同的取值。
我们可以使用以下代码计算变量X的概率分布:[counts, edges] = histcounts(X, 'Normalization', 'probability');在代码中,X表示待计算的变量,counts表示每个取值的频数,edges 表示每个取值的边界。
接下来,我们可以使用上述公式计算每个变量的信息熵。
在Matlab中,我们可以使用sum和log2函数来计算信息熵。
例如,假设我们有一个包含m个取值的变量X,我们可以使用以下代码计算变量X的信息熵:H = -sum(counts .* log2(counts));在代码中,counts表示变量X的概率分布,.*表示逐元素相乘操作。
计算完所有变量的信息熵后,我们可以将其归一化,以便比较各个变量的影响程度。
在Matlab中,我们可以使用normalize函数来实现归一化操作。
例如,假设我们有一个包含n个变量的信息熵向量H,我们可以使用以下代码将其归一化:normalized_H = normalize(H);在代码中,H表示信息熵向量,normalized_H表示归一化后的信息熵向量。
熵权法_指标权重确定

越小,提供的信息量越少,在综合评价中起的作用越小, 其权重也应越小
•故在具体应用时,可根据各指标值的变异程度,利 用熵来计算各指标的熵权,利用各指标的熵权对所 有的指标进行加权,从而得出较为客观的评价结果
Page 6
3.利用熵权法计算权重
其中 rij 为第j个指标下第i个项目的评价值
Page 7
3.利用熵权法计算权重
• 求各指标值权重的过程为:
• (1)计算第j个指标下第i个项目的指标值的比重 pij:
m
pij rij
rij
i 1
• (2)计算第j个指标的熵值 e j :
m
e j k pij ln pij 其中,k 1 ln m
• (3)计算第j个指标的熵权 w j :i1
n
w j (1 e j )
(1 e j )
j 1
Page 8
3.利用熵权法计算权重
• (4)确定指标的综合权数 j :
假设评估者根据自己的目的和要求将指标重要性的权重
确定为 j ,j=1,2,…,n,结合指标的熵权 w j 就可以得到指
用。Page 125. Nhomakorabea权法的优缺点
缺点:目前为止,熵权法只在确定权重的过
程中使用,所以使用范围有限,解决的问题 有限
Page 13
谢谢!
知识回顾 Knowledge
Review
Page 15
标j的综合权数:
j
i wi
m
i wi
i 1
Page 9
3.利用熵权法计算权重
•当各备选项目在指标j上的值完全相同时,该指标的 熵达到最大值1,其熵权为零。这说明该指标未能向 决策者供有用的信息,即在该指标下,所有的备选项 目对决策者说是无差异的,可考虑去掉该指标。因 此,熵权本身并不是表示指标的重要性系数,而是表 示在该指标下对评价对象的区分度。
熵值法权重

权重的确定从上面的分析中可知,应用改进理想解法进行评价必须先确定各指标的权重. 确定指标权重通常有两类方法:一类是主观方法,如专家打分法、层次分析法、经验判断法等;另一类是客观方法,如熵权计算法、主成分分析法等. 因评标过程中,指标的权重对被评价对象的最后得分影响很大,要做到评标尽可能客观,所以采用客观计算法来计算指标的权重比较合适。
而熵值法可以客观的确定权重,因此我们选用熵值法来确定每个指标的权重。
先用熵值法确定权重熵权法是一种客观赋权方法。
在具体使用过程中,熵权法根据各指标的变异程度,利用信息熵计算出各指标的熵权,再通过熵权对各指标的权重进行修正,从而得出较为客观的指标权重。
此法相对那些主观赋值法,精度较高客观性更强,能够更好的解释所得到的结果。
如果某个指标的熵值越小,说明其指标值的变异程度越大,提供的信息量越多,在综合评价中该指标起的作用越大,其权重应该越大在具体应用时,可根据各指标值的变异程度,利用熵来计算各指标的熵权,利用各指标的熵权对所有的指标进行加权,从而得出较为客观的评价结果根据信息论的基本原理 , 信息是系统有序程度的一个度量; 而熵是系统无序程度的一个度量。
熵值法的一般步骤为:现有m 个待评项目,n 个评价指标,形成原始数据矩阵()ij m nR r ⨯=:11121212221234n n m m m m m nr r r r r r R r r r r ⨯⎛⎫ ⎪ ⎪= ⎪ ⎪⎝⎭ 其中ij R 为第j 个指标下第i 个项目的评价值。
求各指标值权重的过程为:(1)计算第j 个指标下第i 个项目的指标值的比重ij p :1mij ijiji p r r==∑(2)计算第j 个指标的熵值Ej :1ln mj ij ij i e k p p ==-⋅∑其中:1ln k m =(3)计算第j 个指标的熵权j W :j W =(1-ej 1)/(1)nj ej =-∑根据本文的具体情况,本文通过如下步骤用熵值法计算权重。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
19.熵值法确定权重
一、基本原理
在信息论中,熵是对不确定性的一种度量。
信息量越大,不确定性就越小,熵也就越小;信息量越小,不确定性越大,熵也越大。
根据熵的特性,可以通过计算熵值来判断一个事件的随机性及无序程度,也可以用熵值来判断某个指标的离散程度,指标的离散程度越大,该指标对综合评价的影响(权重)越大,其熵值越小。
二、熵值法步骤
1. 选取n个国家,m个指标,则x j为第i个国家的第j个指标的数值(i=1, 2…,n; j=1,2,…,m);
2. 指标的归一化处理:异质指标同质化
由于各项指标的计量单位并不统一,因此在用它们计算综合指标前,先要对它们进行标准化处理,即把指标的绝对值转化为相对值,并令X j X j ,从而解决各项不同质指标值的同质化问题。
而且,由于正向指标和负向指标数值代表的含义不同(正向指标数值越高越好,负向指标数值越低越好),因此,对于高低指标我们用不同的算法进行数据标准化处理。
其具体方法如下:
正向指标:
X ij min {勺公2),...,人)}
X ij
max{X ij,X2j,...,X nj} min {勺公?」,…,x j
负向指标:
max{X ij,X2j,...,X nj} X j
X j
max{X jj,X2j,...,X nj} m in {勺必),…,x^}
则X j为第i个国家的第j个指标的数值(i=1,2…,n; j=1,2,…,m) 为了方便起见,归一化后的数据X j仍记为X j;
3•计算第j项指标下第i个国家占该指标的比重:
X ij
P j —, i 1,2..., n, j 1,2..., m
X ij
i 1
4. 计算第j项指标的熵值:
n
e j k P ij ln( p j)
i 1
其中,k=1/ln(n)>0.满足e j >0;
5. 计算信息熵冗余度:
d j 1
e j;
6. 计算各项指标的权值:
d j
W j —, j 1,2,...,m
d j
j 1
7. 计算各国家的综合得分:
m
s W j p ij, i 1,2,...n
j 1
三、Matlab实现
按上述算法步骤,编写Matlab函数:shang.m
function [s,w]=sha ng(x)
%函数shang(), 实现用熵值法求各指标(列)的权重及各数据行的得分
%x为原始数据矩阵,一行代表一个国家,每列对应一个指标
%s返回各行得分,W返回各列权重
[n,m]=size(x); % n=23 个国家,m=5 个指标
%%数据的归一化处理
% Matlab2010b,2011a,b 版本都有bug,需如下处理.其它版本直接用[X,ps]=mapmi nm ax(x',0,1); 即可
[X,ps]=mapmi nm ax(x');
ps.ymi n=0.002; %归一化后的最小值
ps.ymax=0.996; %归一化后的最大值
ps.yrange=ps.ymax-ps.ymin; %归一化后的极差,若不调整该值,
则逆运算会出错
X=mapmi nm ax(x',ps);
% mapminmax('reverse',xx,ps); % 反归一化,回到原数据
X=X'; %为归一化后的数据,23行(国家),5列(指标)
%%计算第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=o nes(1,m)-e; %计算信息熵冗余度
w=d./sum(d); % 求权值w
s=w*p'; %求综合得分
程序测试,现有数据如下:(存为data.txt )114.6 1.1 0.71 85.0 346
55.3 0.96 0.4 69.0 300
132.4 0.97 0.54 73.0 410
152.1 1.04 0.49 77.0 433
103.5 0.96 0.66 67.0 385
81.0 1.08 0.54 96.0 336
179.3 0.88 0.59 89.0 446
29.8 0.83 0.49 120.0 289
92.7 1.15 0.44 154.0 300
248.6 0.79 0.5 147.0 483
115.0 0.74 0.65 252.0 453
64.9 0.59 0.5 167.0 402
163.6 0.85 0.58 220.0 495
95.7 1.02 0.48 160.0 384
139.5 0.70 0.59 217.0 478
89.9 0.96 0.39 105.0 314
76.7 0.95 0.51 162.0 341
121.8 0.83 0.60 140.0 401
42.1 1.08 0.47 110.0 326
78.5 0.89 0.44 94.0 280
77.8 1.19 0.57 91.0 364
90.0 0.95 0.43 89.0 301
100.6 0.82 0.59 83.0 456
执行代码:
x=load( 'data.txt' ); % 读入数据
[s,w]=sha ng(x)
运行结果:
s = Columns 1 through 9
0.0431 0.0103 0.0371 0.0404 0.0369 0.0322 0.0507 0.0229 0.0397
Colu mns 10 through 18
0.0693 0.0878 0.0466 0.0860 0.0503 0.0800 0.0234 0.0456 0.0536
Colu mns 19 through 23
0.0272 0.0181 0.0364 0.0202 0.0420
w = 0.1660 0.0981 0.1757 0.3348 0.2254。