层次分析法(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 这点非常重要!