我是靠谱客的博主 成就早晨,这篇文章主要介绍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

最后

以上就是成就早晨最近收集整理的关于R语言-熵值法的全部内容,更多相关R语言-熵值法内容请搜索靠谱客的其他文章。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(80)

评论列表共有 0 条评论

立即
投稿
返回
顶部