R语言可以实现层次分析法内容吗

Python012

R语言可以实现层次分析法内容吗,第1张

在深入分析实际问题的基础上,将有关的各个因素按照不同属性自上而下地分解成若干层次,同一层的诸因素从属于上一层的因素或对上层因素有影响,同时又支配下一层的因素或受到下层因素的作用。

最上层为目标层,通常只有1个因素,最下层通常为方案或对象层,中间可以有一个或几个层次,通常为准则或指标层。当准则过多时(譬如多于9个)应进一步分解出子准则层。

原帖地址( http://blog.sina.com.cn/s/blog_c9d4e1380102xiof.html ),作者也是本人。

在对多个层次指标对重要性进行主观判断时,往往会面临跨层不可比的问题,层次分析正是为了解决这问题而诞生的方法。随着计算工具的完善,层次分析的实现变得越来越简单,但是层次分析为什么会生效?如果已经有一个理论上的权重,能否根据该权重逆向生成判断矩阵?本文将围绕上述两个基本问题展开介绍。

层次分析的一般流程如下:在单层权重计算的过程中,对于一个待决策层(假设有n个指标),需要先构建判断矩阵,构建判断矩阵的方法可以参考这一篇博文( https://www.cnblogs.com/BlueMountain-HaggenDazs/p/4278049.html );之后需要检验该判断矩阵是否可以通过一致性检验。

在很多实操的时候,一致性检验在某些时候会很难通过。实际上,一致性检验是层次分析生效的保证。换句话说,一致性检验是判断矩阵的一个质量控制手段,一个逻辑无法自洽的判断矩阵,是无法通过一致性检验的。有一定线性代数基础的人都知道,方阵的秩是的极大无关组的向量个数。在判断矩阵中,每一行都代表着当前指标与其余指标的相对重要性,当该判断矩阵完全自洽的时候,所有的行应该是成比例的,换言之,判断矩阵的秩应该为1。此时,对称方阵秩为1,非零特征值只有1个,因此为矩阵的迹(也就是对角线的和),为n。所以在一致性检验无法通过的时候,只需要检查是不是出现了相对重要性矛盾的地方,进行调整即可。

那么,如果给定一个权重,是否可以逆向生成判断矩阵呢?当然是可以的。层次分析中输出到权向量,实际上就是特征向量。将特征向量作为权向量的依据是,每一个特征向量都是矩阵空间中的一个向量,而由于判断矩阵的空间理论上只有一个维度,因此只能有一个线性无关的特征向量,那么则个特征向量自然也就等价于判断矩阵的每一行,也就自然是我们要求的权向量。所以说,给定一个权向量,返回判断矩阵,相当于将该权向量重复n列,形成一个方阵,之后按照同乘或者同除的方法,将这个方阵变成对角线为1,其余元素均近似为1-9整数或者整数分之一的数值即可。以下是我常用来逆向生成判断矩阵的R语言code: