熵值法excel计算步骤 熵值法如何计算
发布时间: 9/16/2023 5:23:57 PM 来源: 我没人疼
熵值法的步骤
(1)选取n个国家,m个指标,则为第i个国家的第j个指标的数值。(i=1,2…,n; j=1,2,…,m)
熵值法excel计算步骤 熵值法如何计算
(2) 指标的标准化处理:异质指标同质化
由于各项指标的计量单位并不统一,因此在用它们计算综合指标前,我们先要对它们进行标准化处理,即把指标的绝对值转化为相对值,并令,从而解决各项不同质指标值的同质化问题。而且,由于正向指标和负向指标数值代表的含义不同(正向指标数值越高越好,负向指标数值越低越好) ,因此,对于高低指标我们用不同的算法进行数据
标准化处理。其具体方法如下:
正向指标:
负向指标:
则为第i个国家的第j个指标的数值。(i=1,2…,n; j=1,2,…,m)。为了方便起见,仍记数据。
(3)计算第 j 项指标下第 i 个国家占该指标的比重。
(4)计算第 j 项指标的熵值。
(5)计算第j项指标的差异系数。对第项指标,指标值的差异越大,对方案评价的左右就越大,熵值就越小,定义差异系数。
(6)求权值。
(7)计算各国家的综合得分。
熵值法步骤
(1)方法原理及适用场景
熵值法属于一种客观赋值法,其利用数据携带的信息量大小计算权重,得到较为客观的指标权重。熵值是不确定性的一种度量,熵越小,数据携带的信息量越大,权重越大;相反熵越大,信息量越小,权重越小。
适用场景:熵值法广泛应用于各个领域,对于普通问卷数据(截面数据)或面板数据均可计算。在实际研究中,通常情况下是与其他权重计算方法配合使用,如先进行因子或主成分分析得到因子或主成分的权重,即得到高维度的权重,然后再使用熵值法进行计算,想得到具体各项的权重。
(2)操作步骤
使用SPSSAU【综合评价-熵值法】。
使用熵值法计算权重时,需将数据整理为以下格式:
1个指标占用1列数据。下图中样本编号只是个编号无实际意义,用于标识下样本的ID号,一般是比如年份一类的数据信息,分析时并不需要使用。
(3)注意事项
熵值法的计算公式上会有取对数,因此如果小于等于0的数字取对数,则会出现null值。此种情况共有两种办法。
第一种:SPSSAU非负平移功能是指,如果某列(某指标)数据出现小于等于0,则让该列数据同时加上一个‘平移值’【该值为某列数据最小值的绝对值+0.01】,以便让数据全部都大于0,因而满足算法要求。
第二种:研究者也可以手工查看数据并将小于等于0的数据设置为异常值,但此种做法会让样本减少。
熵值法怎么把多个指标合成一个指标
具体步骤如下:
1、计算各指标的熵值,熵值越大表示该指标的信息量越大,即该指标对综合评价的影响越大。
2、计算各指标的熵值,熵值越大表示该指标的信息量越大,即该指标对综合评价的影响越大。
3、根据各指标的权重计算加权熵值,加权熵值越小表示综合评价越好。
4、将加权熵值转化为综合评价指标,可以采用线性或非线性的转换方法,如指数函数、对数函数等。
如何用熵权法计算权重?
熵权法是一种客观赋权方法。十分复杂,计算步骤如下:
1、构建各年份各评价指标的判断矩阵。
2、将判断矩阵进行归一化处理, 得到归一化判断矩阵。
3、根据熵的定义,根据各年份评价指标,可以确定评价指标的熵。
4、定义熵权。定义了第n个指标的熵后,可得到第n个指标的熵权。
5、计算系统的权重值。
根据信息熵的定义,对于某项指标,可以用熵值来判断某个指标的离散程度,其信息熵值越小,指标的离散程度越大, 该指标对综合评价的影响(即权重)就越大,如果某项指标的值全部相等,则该指标在综合评价中不起作用。
因此,可利用信息熵这个工具,计算出各个指标的权重,为多指标综合评价提供依据。
注意事项:
系统由有序转变为无序被的过程是熵增,比如系的鞋带会开;家中铺的很整齐的床单睡过后会变乱。
“热力学第二定律”热量可以自发地从较热的物体传递到较冷的物体,但不可能自发地从较冷的物体传递到较热的物体。
比如一滴墨滴进清水,清水会变黑;一个热的物体和一个冷的物体放在一起,热的物体会变冷,冷的物体会变热.....物理系统总是会趋向平衡状态。
一个系统的温度是不均匀的,它慢慢趋向均匀;一个溶液的浓度是不均匀的,同样它会慢慢趋向均匀。
如何用excel 做属性ahm赋权法
理解熵值法
1
学习熵值法,熵值法是一种理论的数学方法,从计算机科学角度上看,属于一种算法。要运用熵值法当然要理解它,搞懂它。
2
熵值法原理: 熵的概念源于热力学,是对系统状态不确定性的一种度量。在信息论中,信息是系统有序程度的一种度量。而熵是系统无序程度的一种度量,两者绝对值相等,但符号相反。根据此性质,可以利用评价中各方案的固有信息,通过熵值法得到各个指标的信息熵,信息熵越小,信息的无序度越低,其信息的效用值越大,指标的权重越大。
3
具体的方法步骤见附图课件。
END
利用Excel进行熵值法计算求解
给出算例,题干是购买教车的一个决策矩阵,给出了四个方案供我们进行选择,每个方案中均有相同的六个属性,我们需要利用熵值法求出各属性的权重,级在方案中的贡献度。
一:求第j个属性下第i个方案Ai的贡献度,公式为附图一,在excel中,先求出各列的和,然后用每行的数值比上列和,形成新的矩阵,如附图2所示。
求出所有方案对属性Xj的贡献总量,用附图一所示的算法。在excel操作中,将刚才生成的矩阵每个元素变成每个元素与该ln(元素)的积,如附图2所示。
求出常数k,k为1/ln(方案数),本例中有4个方案,4中车的类型,所以求得k为
0.721348,再求k与新矩阵每一列和的乘积,这样获得的6个积为所有方案对属性xj的贡献度。至此所有的Ej就求出来了。
dj为第j属性下各方案贡献度的一致性程度。dj=1-Ej,利用上面求得的Ej,可以得到dj
各属性权重为对应的dj与所有dj和的商。dj的和为 0.22478 ,求得各属性的权重为 0.14 0.07 0.49 0.16 0.04 0.10
所以在购买汽车时,据所提供信息,利用熵值法计算得出的权重为油耗占14%,功率占7%,费用占49%,安全性占16%,维护性占4%,操作性占10%。故我们在进行购买决策时,更多是考虑车型的价格和安全性等重要因素。这是从权重角度考虑的。
就本例而言,每个车型每个指标的得分与其权重的乘积之和为其综合评价值,这样求得本田5.118分,奥迪18.32分,桑塔纳8.216分,别克12.495分。所以综合评价排序为奥迪、别克、桑塔纳、本田。
熵值法用excel计算的程序,谁有请发给我一份,不胜感激。在线等
程序如下,希望你可以看懂并选为满意答案,我的知道上没财富值了,谢谢!
Dimzbdf0(), zbdfl(), min_zb(), max_zb(), zbh(), p0(), pl(), pclogp(), h(), w(),sum_h As Single
Dim temp, fw, df As Variant
Dim SZfCommandBar As CommandBar
Dim SZfCommandBarButton As CommandBarButton
Public n, m
Private Sub Workbook_BeforeClose(CanceI As Boolean)
Application.CommandBars("熵值法").Delete
End Sub
Private SubWorkbook_open()
On Error ResumeNext
Application.CommandBars("熵值法").Delete
Set SZfCommandBar =Application.CommandBars.Add("熵值法")
WithSZfCommandBar.Controls
SetSZfCommandBarButton = .Add(msoControlButton)
With szfCommand.BarButton
.Style =msoButtonlconAndCaption
.Caption = "熵值法"
.OnAction ="S2F"
End With
End With
SZfCommandBar.ViSmle= True
End Sub
Private Sub S2F()
On Error ResumeNext
fw =InputBox("请输入数据在EXCEL中的起始结束位置" & vbCrLf &vbCrLf & " ※一定要正确输入,否则按确定后将会出错! ", "输入范围", ActiveWindow.RangeSelection.AddressLocal(0, 0))
If Len(Trim(fw)) =0 Then
MsgBox "没有输入正确范围,请重新执行程序输入正确的数据范围!",vbOKOnly, "没有输入"
Else
n =Range(fw).Rows.Count
m =Range(fw).Coluruns.Count
ReDim zbdf0(n, m),zbdfl(n, m), min_zb(m), max_zb(m), zbh(m), pO(n, m), pl(n, m), pclogp(n, m),h(m), w(m)
For i = l To n
For J = 1 To m
zbdf0(i, J) =ActiveSheet.Range(fw).Cells(i, J)
Next
Next
For J = 1 To m
min_zb(J) =zbdfO(1, J)
max_zb(J) =zbdfO(1, J)
zbh(J) = 0
For i = l To n
If min_zb(J) >zbdfO(i, J) Then
min_zb(J) =zbdf0(i, J)
End If
If max_zb(J)
max_zb(J) =zbdf0(i, J)
End If
zbh(J) = zbh(J) +zbdf0(i, J)
Next
Next
For J = 1 To m
zbh(J) = 0
For i = 1 To n
zbdfl(i, J) =IIf((min_zb(J)) >= 0, zbdf0(i, J), (zbdm(i, J) - mm_zb(J)) / (max_zb(J) -mim_zb(J)))
zbh(J) = zbh(J) +zbdfl(i, J)
Next
Next
sum_h = 0
For J = 1 To m
h(J) = 0
For i = l To n
p0(i, J) = zbdfl(i,J) / zbh(J)
pl(i, J) = 10000 *pO(i, J) + 1
pclogp(i, J) =pl(i, J) * ApplicaonWorksheetFunction.Logl0(pl(i, J))
h(J) = h(J) +pelogp(i, J)
Next
sum_h = sum_h +h(J)
Next
For J = 1 To m
w(J) = h(J) / sum_h
Next
df =Applicatin.WorksheetFunction.MMun(pclogp,Application.WorksheetFunction.Transpose(w))
Application.Worksheets("熵值法输出").Delete
Worksheets.Addafter:=Sheets(Application.Worksheets.Count)
Appliction.ActiveSheet.Name= "熵值法输出"
Columns("B:B").ColumnWidth= 15
[B1] = "熵值法得分"
For i = 2 To n + 1
Cells(i, 2).Value =df(i - 1, 1)
Next
[C1] = "熵值法排名"
Range("C2:C"& (n + l)).FormulaArray = "=RANK(RC[-1 ]:R[" & (n - 1) &"l]C[-1 ],R2C2:R" & n + l & "C21)"
End If
End Sub