假设我们将要研究11个省市区从2010年到2016年的某项经济发展指标,原始数据经过数据预处理和特征加权后(这些步骤假定读者已经熟悉,不再赘述),我们得到如图1所示的数据。
图1.png
接下来的任务是分年度计算莫兰指数,从而检查该经济发展指标的空间相关性。
ARCGIS和Geoda当然是做空间计量的首选,其次stata和R也提供了一些空间计量的包,算个moran's I自然不在话下,不过拿着鼠标点点点怎么能体现Learning the hard way的初衷呢,““你们要进窄门。因为引到灭亡,那门是宽的,路是大的,进去的人也多;引到永生,那门是窄的,路是小的,找着的人也少。”所以我们干脆实实在在地把莫兰指数算出来好啦。
图2.png
回顾一下莫兰指数的定义,其实它是融入了空间拓扑关系的相关系数。要计算莫兰指数,我们只需要经济发展数据 Y 和空间权重矩阵 W 这两个数据,而如果使用Rook权重矩阵的话,W就退化成我们熟知的邻接矩阵。
因此我们先用笨办法,不借助任何其他软件,把空间权重矩阵求出来。假定按照上表的顺序,从1开始对省市区进行编码,则用邻接列表表示的空间邻接关系如下(默认海南与广东、广西接壤):
1 2
2 3 8 1
3 2
4 5 6
5 8 6 4
6 4 5 7
7 6 9
8 2 5
9 7 10 11
10 9 11
11 9 10
其实用邻接列表已经可以代入公式计算莫兰指数了,但清晰起见,我们还是用两个丑陋的for循环,将其转换为邻接矩阵wmx。
wmx:
[,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8] [,9] [,10] [,11]
[1,] 0 1 0 0 0 0 0 0 0 0 0
[2,] 1 0 1 0 0 0 0 1 0 0 0
[3,] 0 1 0 0 0 0 0 0 0 0 0
[4,] 0 0 0 0 1 1 0 0 0 0 0
[5,] 0 0 0 1 0 1 0 1 0 0 0
[6,] 0 0 0 1 1 0 1 0 0 0 0
[7,] 0 0 0 0 0 1 0 0 1 0 0
[8,] 0 1 0 0 1 0 0 0 0 0 0
[9,] 0 0 0 0 0 0 1 0 0 1 1
[10,] 0 0 0 0 0 0 0 0 1 0 1
[11,] 0 0 0 0 0 0 0 0 1 1 0
好了,万事具备,以下这段代码分年度计算莫兰指数
S0=sum(wmx)
mi=rep(0,ncol(sd))
for (t in 1:ncol(sd)) {
y=sd[,t]
yhat=mean(y)
SSR=(sd(y)^2)*10
sum=0
for (i in 1:11) {
for (j in 1:11) {
sum=sum+wmx[i,j]*(y[i]-yhat)*(y[j]-yhat)
}
mi[t]=(sum/SSR)*(11/S0)
}
得到的莫兰指数如下,所有年份均为负数,说明该项经济指标与空间聚集度呈现负相关关系。
图4.png
怎样计算莫兰指数的Z值和P值,未完待续,敬请期待。Q461157910