R语言-熵值法

熵是对不确定性的一种度量。信息量越大,不确定性就越小,熵也就越小;信息量越小,不确定性越大,熵也越大。

可以通过计算熵值来判断一个事件的随机性及无序程度,也可以用熵值来判断某个指标的离散程度,指标的离散程度越大,该指标对综合评价的影响(权重)越大。比如样本数据在某指标下取值都相等,则该指标对总体评价的影响为0,权值为0.

熵值法步骤

第一步:指标的归一化处理(异质指标同质化):

min.max.norm <- function(x){ (x-min(x))/(max(x)-min(x)) } #正向指标

max.min.norm <- function(x){ (max(x)-x)/(max(x)-min(x)) } #负向指标

nub<-apply(ub,2,min.max.norm)

第二步:计算第j项指标下第i个样本值占该指标的比重。

first1 <- function(data) {

x <- c(data)

for(i in 1:length(data))

x[i] = data[i]/sum(data[])

return(x) }

dataframe<-apply(nub,2,first1)

第三步:计算第j项指标的熵值。

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)

第六步:计算各样本的综合得分。

https://blog.csdn.net/yawei_liu1688/article/details/78745612 (作者:bigdata老司机)

https://blog.csdn.net/weixin_42683052/article/details/108048358

おすすめ

転載: blog.csdn.net/weixin_42683052/article/details/109208764