【R语言】熵权法确定权重

2020-06-17 00:00:00 函数 样本 指标 计算 权重

张敬信:【评价算法】01. 熵权法确定权重zhuanlan.zhihu.com

之前写过用 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
  }
}

相关文章