R语言-AHP层次分析法
来源:互联网 发布:如何导出股票数据 编辑:程序博客网 时间:2024/05/16 17:20
常用的一种算法之一,虽说有主观性, 但比主观上直接对指标定权重科学一点。具体原理可以百度查。
文章包括:1.方根法求权重 2.判断矩阵的一致性检验 3.案例
方根法求权重
AHP求权重有两种方法,和积法和方根法,方根法比较好实现所以用方根法求解。
##输入: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)}
判断矩阵一致性检验
判断矩阵的一致性检验用于检验,你的判断矩阵是否科学合理,RI值只查到了位数达到11的值。所以这段代码最多可以检验11个变量的判断矩阵。多于11个变量,可以自己查一下RI和改改代码。
###注:CRtest调用了weight函数###输入:judgeMatrix###输出:CI, CRCRtest <- 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}
案例
随便生成了个判断矩阵,检验了一下。
b <- c(1,3,1/2,1/2,3,1/3,1,1/2,1/3,1/2, 3,2,1,3,2,2,3,1/3,1,2,1/3,2,1/2,1/2,1)(judgeMatix <- matrix(b, ncol=5)) [,1] [,2] [,3] [,4] [,5][1,] 1.0 0.3 3 2.0 0.3[2,] 3.0 1.0 2 3.0 2.0[3,] 0.5 0.5 1 0.3 0.5[4,] 0.5 0.3 3 1.0 0.5[5,] 3.0 0.5 2 2.0 1.0##计算权重weight(judgeMatix)weight(judgeMatix)[1] 0.157 0.364 0.092 0.132 0.254##判断矩阵一致性检验CRtest(judgeMatix) CI= 0.118 CR= 0.105 请调整判断矩阵,使CR<0.1 CI CR 0.118 0.105
0 0
- R语言-AHP层次分析法
- AHP层次分析法
- AHP层次分析法
- AHP层次分析法
- AHP/层次分析法
- 白话AHP层次分析法
- [matlab]AHP层次分析法
- 层次分析法(AHP)
- matlab AHP层次分析法求权重
- 数学建模|AHP层次分析法
- Matlab实现层次分析法(AHP)代码
- 2-3、AHP层次分析法
- 用AHP层次分析法挑选最佳结婚对象
- 层次分析法(AHP)—matlab实现
- 数学建模——层次分析法AHP
- 层次分析法(AHP)的Matlab实现
- 城市规划研究分析常用数学方法之---层次分析法(AHP)
- AHP-层次分析法(C++源码,附详细注释和样例)
- Struts2之ModelDriven用法
- JavaScript “跑马灯”抽奖活动代码解析与优化(二)
- vc编译,丢失mspdb100.DLL解决方法
- Source not found-Android 使用隐藏API(2)
- 【精】色彩三刀流!为新手量身打造的UI界面配色方法
- R语言-AHP层次分析法
- Redis java操作
- 并查集入门简略笔记 附HDU1232
- TreeSet集合介绍
- TokuDB · Cachetable 的工作线程和线程池
- 哈理工OJ 1579 又见线段相交【计算几何】
- MongoDB使用教程系列文章--Driver原理(初始化)
- Hyper-V中的“Network adapter “和“Legacy Network adapter”之间的区别
- HttpClient_4 用法(HC3-->HC4必看)