莫兰指数stata命令_用R计算moran's I(莫兰指数)【笨办法学空间计量之一】

假设我们将要研究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

你可能感兴趣的:(莫兰指数stata命令)