层次分析法(AnalytioHieacrrhyProcess,AHP),是一种定性与定量相结合的多目标决策方法,在许多工程领域都有应用。利用层次分析法进行风险识别的基本思路是:把复杂的风险问题分解为各个组成因素,将这些因素按支配关系分组形成有序的递阶层次结构,通过两两比较判断的方式确定每一层次中各因素相对于上一层或最高层总目标的相对重要性,并加以排序,从而判断出系统主要风险模式和风险因素。AHP体现了人们的决策思维的基本特征,即分解、判断、综合。
对于AHP的进一步定义、优缺点就不多说了,网上有很多的介绍。今天主要探讨一下如何用Excel来进行层次分析法的核心步骤——判断矩阵特征值与特征向量的计算。
首先,来看一下计算方法。这种计算方法来自同济大学巩春领博士的学位论文《大跨度斜拉桥施工风险分析与对策研究》。
数据分析你最喜欢的软件是哪个?可以说我最喜欢的是是Excel么~好多事情都可以用这个随处可以找到的方便快捷的工具完成,还可以与更多的人分享源文件,简直是人生一大快事。
AHP有很多计算工具,比如matlab(这个我也做了,稍后完善一下也分享出来),还有其他各种小软件。不喜欢黑箱软件,不能调整算法,还是先研究一下excel的实现吧。上面的系列公式,正好适合用excel做。
第一步,输入判断矩阵,拉出列和
继续地,根据上面的公式,先后按次序作出归一化后的矩阵、求行和、求归一化后的权重、计算矩阵乘积、矩阵对应元素与权重向量元素求商,最后得到最大特征值——话说这也是普通矩阵得到最大特征值的一种方式。
这里要介绍一个Excel命令:MMULT:求矩阵相乘
矩阵相乘,矩阵A乘以矩阵B=矩阵C,需要用命令指定两个矩阵,和一个结果矩阵的位置。
MMULT(array1,array2)函数介绍:
返回两个数组的矩阵乘积。结果矩阵的行数与数组array1 的行数相同,矩阵的列数与数组array2 的列数相同。
语法
MMULT(array1,array2)
Array1, array2
说明
- Array1 的列数必须与 array2 的行数相同,而且两个数组中都只能包含数值。
- Array1 和 array2 可以是单元格区域、数组常量或引用。
- 在以下情况下,MMULT 返回错误值 #VALUE!:
- 任意单元格为空或包含文字。
- array1 的列数与 array2 的行数不相等。
为什么说还要指定结果矩阵的位置呢?
很多人在使用这个命令的时候,有个误区,在一个单元格内,输入=MMULT(array1,array2),回车,发现两个矩阵相乘,怎么只有一个数字呢?没错,因为你只是指定了一个单元格,自然就会返回结果矩阵的第一个元素了。
正确的做法是:
- 选择一个符合结果矩阵维数的单元格区域,比如A是3X3,B是3X1,那么就选中一个3X1的范围;
- 输入MMULT公式
- Shift+Ctrl+Enter 这点非常重要!
本例做完,下面是相应的Excel文件:实例下载
---Update 2018.4.19---
链接:https://pan.baidu.com/s/13vT7Q7LXfmaeyfNdTm2uoA 密码:rkd1
牛郎:亲爱的,今天不是七夕,你怎么过河来了?感谢你.这篇文章对我有用
这个对我帮助很大谢谢你们.也许鸟儿背地里都是小机器人,它们坐在电线上是为了充电。
这个对我帮助很大感谢您。by 搜答案网http://www.sodaan.net
博主加油感谢你。by 公需科目题库https://www.gongxukemu.cn
归一化权重W 是怎么算的?
@gogo 这个。。。由于已经过去好几年了,建议查查文献;或者待我忙完这段的,再写篇更新详细的教程
请问,为什么AW会有很多五个值呢?两个矩阵相乘不是应该只有一个值吗?
想知道AW是怎么来的,不是太懂,谢谢
@可可 表格里有公式吧
求发一份实例文件,邮箱2407691124@qq.com.谢谢博主了❤️
求一份excel实例文件,邮箱:2407691124@qq.com,谢谢
博主可否发一个实例的excel到我的邮箱?点击你的留的,显示不存在 :cry:
@bright 已发送
@长河 求一份excel实例文件,邮箱:269775022@qq.com,谢谢
模糊综合法也可以这样算是不是?
@xqiushi 是的,没问题。
AHP体现了人们的决策思维的基本特征,即分解、判断、综合
自然就会返回结果矩阵的第一个元素了
优缺点就不多说了,网上有很多的介绍
SAGA拜帖 求关注
@逆袭者