【R语言】熵权法确定权重
张敬信:【评价算法】01. 熵权法确定权重
之前写过用 Matlab 实现熵权法确定权重,再补充一个 R 语言实现(代码更加的简洁),算法原理步骤看上面这篇文章就行,不再赘述。
顺便说一句,R语言我用的越来越顺手,它的灵活和强大让我都不大愿意用 Matlab了。
1. 先定义归一化函数
因为熵权法归一化值不能出现 0 或 1,多往内收缩一下到 [0.002, 0.996], 需要的话可自行修改。
## 定义归一化函数
Rescale = function(x, type=1) {
# type=1正向指标, type=2负向指标
rng = range(x, na.rm = TRUE)
if (type == 1) {
(0.996 - 0.002) * (x - rng[1]) / (rng[2] - rng[1]) + 0.002
} else {
(0.996 - 0.002) * (rng[2] - x) / (rng[2] - rng[1]) + 0.002
}
}
相关文章