熵值法是一种基于信息熵理论的客观赋值方法。即数据越离散,所含信息量越多,对综合评价影响越大。
传统的熵值法有个弊端,只能针对于截面数据,即根据某一年 k k k个地区 j j j项指标进行综合评价。而在实际处理经济型数据过程中,经常会遇到面板数据。即根据 m m m个年份, k k k个区县, j j j项指标对其进行综合评价。其具体过程如下(与传统的熵值法过程非常相似,主要是第二步和第三步有区别):
(1) 指标标准化处理
正向指标 Z α i j = x α i j − x m i n x m a x − x m i n \text{正向指标}Z_{\alpha ij}=\frac{x_{\alpha ij}-x_{min}}{x_{max}-x_{min}} 正向指标Zαij=xmax−xminxαij−xmin 负向指标 Z α i j = x m a x − x α i j x m a x − x m i n \text{负向指标}Z_{\alpha ij}=\frac{x_{max}-x_{\alpha ij}}{x_{max}-x_{min}} 负向指标Zαij=xmax−xminxmax−xαij 式中, x m a x \mathit{x_{max}} xmax, x m i n \mathit{x_{min}} xmin分别代表第 j \mathit{j} j项指标的最大值和最小值; x α i j x_{\alpha ij} xαij, z α i j z_{\alpha ij} zαij分别代表第 j \mathit{\:j\:} j项指标标准化处理前和处理后的值。
(2) 指标归一化
P α i j = Z α i j ∑ α = 1 m ∑ i = 1 k Z α i j P_{\alpha ij}=\frac{Z_{\alpha ij}}{\sum\limits_{\alpha=1}^{m}\sum\limits_{i=1}^{k}Z_{\alpha ij}} Pαij=α=1∑mi=1∑kZαijZαij
(3) 计算熵值
E j = − k 1 ∑ α = 1 m ∑ i = 1 k P α i j l n P α i j E_{j}=-k_{1}\sum\limits_{\alpha=1}^{m}\sum\limits_{i=1}^{k}P_{\alpha ij}ln{P_{\alpha ij}} Ej=−k1α=1∑mi=1∑kPαijlnPαij
其中, k 1 = 1 l n ( m × k ) k_{1}=\displaystyle\frac{1}{ln(m \times k)} k1=ln(m×k)1
(4) 计算各项指标的冗余度
D j = 1 − E j D_{\mathit{j}}=1-E_{\mathit{j}} Dj=1−Ej
(5) 计算各项指标权重
W j = D j ∑ j = 1 n D j W_{\mathit{j}}=\frac{D_{\mathit{j}}}{\sum\limits_{\mathit{j=1}}^{n}D_{\mathit{j}}} Wj=j=1∑nDjDj
(6) 得到各区县的综合经济指数
I α i = P α i j × W j I_{\alpha i}=P_{\mathit{\alpha ij}} \times W_{\mathit{j}} Iαi=Pαij×Wj
以重庆市各区县为例,选取如下九项指标数据构建综合经济指数,数据来源《重庆统计年鉴》,时间范围为2009-2018年。
一级指标 | 二级指标 |
经济实力 | GDP(国民生产总值) |
全社会固定资产投资 | |
社会消费品总额 | |
经济质量 | 第三产业/GDP |
人均GDP | |
区县一般公共收入/GDP | |
社会生活 | 农村居民人均纯收入 |
人均一般公共服务支出 | |
城镇居民人均可支配收入 |
代码如下(数据文件df.xlsx与上图内容稍有区别):
setwd('C:/Users/dell/Desktop')
data.list=list()
library(xlsx)
for(i in seq(9))
data.list[[i]]=read.xlsx('df.xlsx',sheetIndex = i,encoding='UTF-8')
id=seq(38)
data=as.data.frame(id)
k=38
m=10
d=c() #用来存放Dj
w=c()
P=list()
for(i in seq(9))
{
z=(data.list[[i]]-min(data.list[[i]]))/(max(data.list[[i]])-min(data.list[[i]]))
p=z/(sum(z))
P[[i]]=p
a=p*log(p)
a[is.na(a)]=0
d[i]=(1-(-sum(a)/log(k*m)))
}
#输出权重
for(i in seq(length(d)))
w[i]=d[i]/sum(d)
#得到每年九个指标的Pij
rank=list()
for(j in seq(10))
{
for(i in seq(9))
{
data[paste("指标",i,sep='')]=as.vector(P[[i]][,j])
rank[[j]]=data
}
}
#写出各年rank
for(i in seq(length(rank)))
{
write.xlsx(as.matrix(rank[[i]][-1]) %*% w,file='rank.xlsx',sheetName=paste("sheet",i,sep=''),append=TRUE)
}
写出的文件则是2009-2018年各区县的综合经济指数。
注意:
1.需要把原数据文件(df.xlsx)放置桌面才能运行成功
2.rank.xlsx中Sheet1是2018年各区县的综合经济指数,Sheet10才是2009年各区县的综合经济指数
3.Sheet1-Shee10中A列的数据顺序依旧是原数据文件中区县的排列顺序
由于原指数太小,对其乘以 1 0 4 10^{4} 104,绘制2009年和2018年各区县的综合经济指数柱形图:
从上图不难看出:
1、2018年各区县的综合经济发展指数明显要大于2009年各区县的综合经济发展指数,说明10年来重庆市各区县经济得到了较大的发展。
2、渝中区、江北区、九龙波区、渝北区综合经济发展水平较高,而城口县、巫溪县、巫山县、酉阳县经济发展水平较低
[1]冯兴华,钟业喜,李峥荣,傅钰.长江经济带城市体系空间格局演变[J].长江流域资源与环境,2017,26(11):1721-1733.
后续将会将熵值法应用到空间相关分析中,敬请期待~