系统评价——理想点TOPSIS法的R语言实现(五)
TOPSIS 法是一种常用的综合评价方法,能充分利用原始数据的信息,其结果能精确地反映各评价方案之间的差距。TOPSIS全称Technique for Order Preference by Similarity to an Ideal Solution ,TOPSIS法是C.L.Hwang和K.Yoon于1981年首次提出的,它根据有限个评价对象与理想化目标的接近程度进行排序的方法,是在现有的对象中进行相对优劣的评价。作为一种逼近于理想解的排序法,该方法只要求各效用函数具有单调递增(或递减)性就行,它是多目标决策分析中一种常用的有效方法,国内常简称为优劣解距离法或理想点法。
一、TOPSIS法的原理
设多属性决策方案集为\(D=\{d_1,d_2,\cdots,d_m\}\),衡量方案优劣的属性变量为\(\{x_1,\cdots,x_n\}\),这时方案集D中的每个方案\(d_i(i=1,\cdots,m)\)的\(n\)个属性值构成的向量是\([a_{i1},\cdots,a_{in}]\),它作为\(n\)维空间中的一个点,能唯一地表征方案\(d_i\)。
正理想解\(C^*\)是一个方案集\(D\)中并不存在的虚拟的最佳方案,它的每个属性值都是决策矩阵中该属性的最好值;而负理想解\(C^0\)则是虚拟的最差方案,它的每个属性值都是决策矩阵中该属性的最差值。在\(n\)维空间中,将方案集\(D\)中的各备选方案\(d_i\)与正理想解\(C^*\)和负理想解\(C^0\)的距离进行比较,既靠近正理想解又远离负理想解的方案就是方案集\(D\)中的最佳方案;并可以据此排定方案集\(D\)中各备选方案的优先序。
为什么既用正理想解,又用负理想解?
考虑到只有一个正理想解时可能会出现两个方案离正理想解距离相同的情况。 基本过程为先将原始数据矩阵统一指标类型(一般正向化处理) 得到正向化的矩阵,再对正向化的矩阵进行标准化处理以消除各指 标量纲的影响,并找到有限方案中的最优方案和最劣方案,然后分 别计算各评价对象与最优方案和最劣方案间的距离,获得各评价对 象与最优方案的相对接近程度,以此作为评价优劣的依据。该方法对数据分布及样本含量没有严格限制,数据计算简单易行。
用理想解法求解多属性决策问题的概念简单,只要在属性空间定义适当的距离测度就能计算备选方案与理想解的距离。TOPSIS法所用的是欧氏距离。至于既用正理想解又用负理想解是因为在仅仅使用正理想解时有时会出现某两个备选方案与正理想解的距离相同的情况,为了区分这两个方案的优劣,引入负理想解并计算这两个方案与负理想解的距离,与正理想解的距离相同的方案离负理想解远者为优。
二、TOPSIS的算法步骤
TOPSIS法的具体算法如下:
用向量规划化的方法求得规范决策矩阵
设多属性决策问题的决策矩阵\(A=(a_{ij})_{m×n}\),规范化决策矩阵\(B=(b_{ij})_{m×n}\),其中
构造加权规范阵\(\mathbf{C}=(c_{ij})_{m\times n}\)
设由决策人给定各属性的权重向量为$ \mathbf{w}=[w_1,w_2,\cdots,w_n]^T$,则
确定正理想解 和负理想解
设正理想解 \(C^*\)的第 \(j\)个属性值为\(c_j^*\),负理想解\(C^0\)第\(j\)个属性值为\(c_j^0\),则
正理想解:
负理想解:
计算各方案到正理想解与负理想解的距离
备选方案\(d_i\)到正理想解的距离为
备选方案\(d_i\)到负理想解的距离为
计算各方案的排序指标值(即综合评价指数)
按\(f_i^*\)由大到小排列方案的优劣次序。
三、R语言计算示例
研究生院试评估: 为了客观地评价我国研究生教育的实际状况和各研究生院的教学质量,国务院学位委员会办公室组织过一次研究生院的评估。为了取得经验,先选5所研究生院,评价五所研究生院教学质量,收集有关数据资料进行了试评估。下表给出所用数据:
人均专著\(x_1\)(本/人) | 生师比\(x_2\) | 科研经费\(x_3\) (万元、年) | 逾期毕业率\(x_4\) (%) | |
---|---|---|---|---|
1 | 0.1 | 5 | 5000 | 4.7 |
2 | 0.2 | 6 | 6000 | 5.6 |
3 | 0.4 | 7 | 7000 | 6.7 |
4 | 0.9 | 10 | 10000 | 2.3 |
5 | 1.2 | 2 | 400 | 1.8 |
3.1 构造初始决策矩阵
\(D=(d_{ij})_{m \times n}\)。据题意可以判断\(x_1,x_3\)是效益型属性,$x_2,x_4 $为消费型属性.
D <- matrix(c(0.1, 0.2, 0.4, 0.9, 1.2,
1/5, 1/6, 1/7, 1/10, 1/2,
5000, 6000, 7000, 10000, 400,
1/4.7, 1/5.6, 1/6.7, 1/2.3, 1/1.8), nrow = 5)
3.2 数据预处理
按列(属性)对决策矩阵\(D\)归一化
col_sum <- apply(D, 2, sum) # 2代表列
ColSum <- matrix(c(col_sum, col_sum, col_sum, col_sum, col_sum ), nrow = 5, byrow = T) # 按行填入
R <- D/ColSum
R
[,1] [,2] [,3] [,4]
[1,] 0.03571429 0.18025751 0.17605634 0.13897831
[2,] 0.07142857 0.15021459 0.21126761 0.11664251
[3,] 0.14285714 0.12875536 0.24647887 0.09749224
[4,] 0.32142857 0.09012876 0.35211268 0.28399915
[5,] 0.42857143 0.45064378 0.01408451 0.36288780
3.3 信息熵法计算权重
Entropy <- function(x) -sum(x*log(x))/log(5)
E <- apply(R, 2, Entropy)
F <- 1 - E
w <- F/sum(F)
w
[1] 0.3670204 0.2179919 0.2510037 0.1639840
3.4 正理想和负理想解
#赋权
W <- diag(w)
V <- R %*% W
#计算正理想解和负理想解
v_max <- apply(V, 2, max)
v_min <- apply(V, 2, min)
3.5 与正理想解的相对接近度计算
#计算正负理想距离
V_MAX <- matrix(c(v_max, v_max, v_max, v_max, v_max), nr = 5, byrow = TRUE)
V_MIN <- matrix(c(v_min, v_min, v_min, v_min, v_min), nr = 5, byrow = TRUE)
fun <- function(x) sqrt(sum(x^2))
s_max <- apply(V-V_MAX, 1, fun)
s_min <- apply(V-V_MIN, 1, fun)
C <- s_min/(s_max + s_min)
C
[1] 0.2157095 0.2533230 0.3423939 0.6089369 0.6669153
因此五所研究院的得分为0.2157095, 0.2533230, 0.3423939, 0.6089369, 0.6669153,故五所研究院的排名顺序5 > 4 > 3 > 2 > 1。
总结
Topsis 法是理解解的排序方法,它借助于评价问题的正理想解和负理想解,对各评价对象进行排序。所谓正理想解是一个虚拟的最佳对象,其每个指标值都是对所有评价对象中的该指标的最好值;而负理想解是另一个虚拟的最差对象,其每个指标值都是所有评价对象中该指标的最差值。求出各评价对象与正理想解和负理想解的距离,并依次对各评价对象进行优劣排序。