熵值法解析-附R代码

19 篇文章 9 订阅
16 篇文章 1 订阅

 熵的概念源于热力学,是对系统状态不确定性的一种度量。在信息论中,信息是系统有序程度的一种度量,而熵是系统无序程度的一种度量,两者绝对值相等,但符号相反。根据此性质可利用评价中各方案的固有信息,通过熵值法得到各个指标信息熵,熵值越小-无序程度越低-指标权重越小

熵是不确定性的度量(可用于判断一个事件的随机性+无序程度),如果用表示第j个信息的不确定性程度,则整个信息(设有n个)的不确定性度量可以用下式表示

 

#归一化之最大最小化处理
min.max.norm<-function(x){
  (x-min(x))/(max(x)-min(x))
}
max.min.norm<-function(x){
  (max(x)-x)/(max(x)-min(x))
}
sourui_1<-apply(sourui[,-c(7,11)],2,min.max.norm)	#正向指标
sourui_2<-apply(sourui[,c(7,11)],2,max.min.norm)	#负向指标
sourui_t<-cbind(sourui_1,sourui_2)

#所有方案对指标Xi的贡献度
first1 <- function(data)
{
  x <- c(data)
  for(i in 1:length(data))
    x[i] = data[i]/sum(data)
  return(x)
}
dataframe <- apply(sourui_t,2,first1)

#计算信息熵
first2 <- function(data)
{
	x <- c(data)
	for(i in 1:length(data)){
		if(data[i] == 0){
			x[i] = 0
		}else{
			x[i] = data[i] * log(data[i])
    }
  }
  return(x)
}
dataframe1<-apply(dataframe,2,first2)
k<-1/log(length(dataframe1[,1]))
d<--k * colSums(dataframe1)

#计算冗余度
d=1-d

#计算各指标权重
w=d/sum(d)

 

  • 7
    点赞
  • 82
    收藏
    觉得还不错? 一键收藏
  • 7
    评论
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值