R语言 AHP层次分析法——如何验证矩阵一致性

如何构建AHP层次分析法矩阵可参看知乎这个回答:
https://zhuanlan.zhihu.com/p/38207837

主要解决验证矩阵一致性问题
定义一个函数,读取粘贴板(从复制excel复制表格)

GetMatrix = function()
{
  tmp = read.table("clipboard",sep = "\t",header = F)
  tmp = as.matrix(tmp)
  9+1
  weight(tmp)
  CRtest(tmp)
}

判断代码

##输入:judgeMatrix 判断矩阵;round 结果约分位数
##输出:权重
weight <- function (judgeMatrix, round=3) {
  n = ncol(judgeMatrix)
  cumProd <- vector(length=n)
  cumProd <- apply(judgeMatrix, 1, prod)  ##求每行连乘积
  weight <- cumProd^(1/n)  ##开n次方(特征向量)
  weight <- weight/sum(weight) ##求权重
  round(weight, round)
}


###注:CRtest调用了weight函数
###输入:judgeMatrix
###输出:CI, CR
CRtest <- function (judgeMatrix, round=3){
  RI <- c(0, 0, 0.58, 0.9, 1.12, 1.24, 1.32, 1.41, 1.45, 1.49, 1.51) #随机一致性指标
  Wi <- weight(judgeMatrix)  ##计算权重
  n <- length(Wi)
  if(n > 11){
    cat("判断矩阵过大,请少于11个指标 \n")
  }
  if (n > 2) {
    W <- matrix(Wi, ncol = 1) 
    judgeW <- judgeMatrix %*% W 
    JudgeW <- as.vector(judgeW)
    la_max <- sum(JudgeW/Wi)/n
    CI = (la_max - n)/(n - 1)
    CR = CI/RI[n]
    cat("\n CI=", round(CI, round), "\n")
    cat("\n CR=", round(CR, round), "\n")
    if (CR <= 0.1) {
      cat(" 通过一致性检验 \n")
      cat("\n Wi: ", round(Wi, round), "\n")
    }
    else {
      cat(" 请调整判断矩阵,使CR<0.1 \n")
      Wi = NULL
    }
  }
  else if (n <= 2) {
    return(Wi)
  }
  consequence <- c(round(CI, round), round(CR, round))
  names(consequence) <- c("CI", "CR")
  consequence
}

如何使用

使用该代码时,首先将全部代码在R中运行一次,然后复制excel中的数据(只复制数值部分),然后输入

GetMatrix()

输出为通过一致性检验,说明AHP矩阵没有问题;输出为请调整判断矩阵,说明矩阵还需要调整。
输出结果举例:
在这里插入图片描述

  • 2
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
层次分析法(Analytic Hierarchy Process, AHP)是一种常用的决策分析方法,该方法主要包含构建层次结构模型、建立判断矩阵、计算权重和一致性检验等步骤。其中一致性检验是AHP方法的关键步骤之一,其目的是评估判断矩阵是否存在一致性问题。 矩阵一致性分析是AHP方法中的一项重要内容,主要用于评估判断矩阵一致性程度,以确保矩阵中的数据具有可信度和可用性。常见的一致性检验方法包括特征根法、一致性指标法和随机一致性指数法等。 在R语言中,可以使用“ahp”包来实现AHP方法和一致性检验。具体步骤如下: 1.安装并加载“ahp”包。 ```R install.packages("ahp") library(ahp) ``` 2.构建层次结构模型,并设置判断矩阵。 ```R #构建层次结构模型 ahp_model <- ahp( c("准确性", "可靠性", "易用性", "功能性"), # 四个准则 list( c(1, 1/3, 3, 1/2), # 准确性 c(3, 1, 9, 4), # 可靠性 c(1/3, 1/9, 1, 1/4), # 易用性 c(2, 1/4, 4, 1) # 功能性 ) ) ``` 3.计算权重和一致性指标。 ```R # 计算权重和一致性指标 ahp_weight(ahp_model) ``` 4.进行一致性检验。 ```R # 进行一致性检验 ahp_consistency(ahp_model) ``` 通过以上步骤,即可利用R语言AHP方法中的矩阵一致性分析进行建模和计算。需要注意的是,在实际应用中,需要根据具体情况对模型进行调整和优化,以提高模型的准确性和可用性。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值