python计算莫兰指数(Moran's I)并绘制地区热力图——以中国各省pm2.5为例
计算省的pm2.5平均值作为观测矩阵,省会的距离的倒数作为空间权重矩阵,计算全局莫兰指数为0.49,显著性检验p值为3.75>1.96,得出中国地区的pm2.5存在空间正相关
目录
- 程序简介
- 程序/数据集下载
- 代码分析
程序简介
计算省的pm2.5平均值作为观测矩阵,省会的距离的倒数作为空间权重矩阵,计算全局莫兰指数为0.49,显著性检验p值为3.75>1.96,得出中国地区的pm2.5存在空间正相关
输入:中国各地区pm2.5值
输出:莫兰散点图、莫兰指数、莫兰检验数、地区热力图
莫兰指数(Moran’s I)是空间自相关系数的一种,其值分布在[-1,1],用于判别空间是否存在自相关。比如:一个小区内有钱人会集聚住在豪宅别墅区,平民们(比如我- -)则会集聚住在普通的楼房区,这里的个人财富就是一种观测值,呈现高高聚集,低低聚集的现象。
程序/数据集下载
代码分析
导入模块,路径
整理省-pm2.5表格作为观测值矩阵,将省内所有市的pm2.5的算术平均值作为该省的pm2.5,查看前5行
pm2.5 | |
province | |
北京市 | 37.807018 |
天津市 | 45.245614 |
上海市 | 24.228070 |
重庆市 | 26.368421 |
河南省 | 37.522478 |
构建空间权重矩阵,该矩阵反应了地区间空间联系,一般距离越近,权重越大,但是对角线为0 这里要调用calDistance函数计算两地距离, 程序在得到距离后,取其负3次幂作为两地的权重,查看矩阵前5行5列
北京市 | 天津市 | 上海市 | 重庆市 | 河南省 | |
province | |||||
北京市 | 1.000000e-30 | 6.807960e-16 | 8.255561e-19 | 3.228904e-19 | 4.260133e-18 |
天津市 | 6.807960e-16 | 1.000000e-30 | 1.150491e-18 | 3.355669e-19 | 5.412329e-18 |
上海市 | 8.255561e-19 | 1.150491e-18 | 1.000000e-30 | 3.316709e-19 | 1.808123e-18 |
重庆市 | 3.228904e-19 | 3.355669e-19 | 3.316709e-19 | 1.000000e-30 | 1.415375e-18 |
河南省 | 4.260133e-18 | 5.412329e-18 | 1.808123e-18 | 1.415375e-18 | 1.000000e-30 |
现在有了省-PM2.5表格作为观测值矩阵,空间权重矩阵,输入到moranI函数中可以得到输出结论并自动绘制莫兰散点图,其中moranI函数位置和代码在下文给出。
莫兰散点图,横纵坐标一般是进行分析的数据的离差值,莫兰散点图经常用来研究局部空间不稳定性,其四个象限分别对应于区域单元与其邻居之间四种类型的局部空间联系形式。
上文中用到的moranI函数位置:Module/MoranI.py,该代码可以直接运行进行测试
最后根据上文得到的局部莫兰指数,绘制中国各省的热力图