基于PySAL的空间统计分析--冷热点分析

1  引言

受研究需要,需要对几十份空间数据批量进行冷热点分析,Geoda与ArcGIS等软件不能满足需求,看到Python有PySAL这个空间统计分析的第三方库,看了一下API文档觉得功能挺全面的,像Local Moran’s I、Local G Statistics等常用的空间自相关分析的功能都有,决定尝试一下。

Pysal是一个面向地理空间数据科学的开源跨平台库(详情可见官方网站),重点是用python编写的地理空间矢量数据。它支持空间分析高级应用程序的开发,例如

  • 空间簇、热点和异常点的检测
  • 从空间数据构建图形
  • 地理嵌入网络的空间回归与统计建模
  • 空间计量经济学
  • 探索性时空数据分析

 

2  实验步骤

2.1  安装

需要安装pysal、libpysal两个包,可直接通过conda安装

conda install pysal
conda install libpysal

另外本实验还用到了geopandas包

2.2  包的导入

import libpysal
from pysal.esda.getisord import G_Local

2.4  距离权重生成

libpysal是用来生成距离权重矩阵的,PySAL中提供了shapefile读取的接口,可直接读取实验数据生成距离权重矩阵,使用起来非常方便

w = libpysal.weights.Queen.from_shapefile(
        '/Users/xxx/data/fishnet_all_new/fishnet_all_new.shp',
        idVariable=‘Id’
    )

由于本实验的数据是规则渔网,因此使用Queen邻域生成01型的距离权重矩阵比较合适。

2.3  数据读取

通过geopandas包读取实验所需数据

sh = gpd.read_file('/Users/xxx/data/fishnet_all_new')

2.5  计算G_Local

使用esda.getisord中的G_Local函数用以计算Local G

lg = G_Local(sh[‘8-25-05_su'],w,transform='B')

2.6  保存结果

需要保存的计算结果有两个,一个是标准化为Z-score的G值,还有一个是p值,p值按照官方的说法需要除以2

sh_init['Z'] = lg.Zs
sh_init['P'] = lg.p_norm/2
sh_init.to_file('/users/xxx/data/shapefile/sh_GetisOrd_Zs')

2.7  提取冷热点

在显著性水平为0.05下提取冷热点

热点:Z>0 and p<0.05

冷点:Z<0 and p<0.05

不显著:p>0.05

将实验结果使用QGIS打开设定设定条件样式

 

3  实验结果

最后在QGIS中出图,其中蓝色区域为人口分布冷点,红色区域为人口分布热点。

基于PySAL的空间统计分析--冷热点分析_第1张图片

 

References

杨喜平, 方志祥, 赵志远, et al. 城市人群聚集消散时空模式探索分析——以深圳市为例[J]. 地球信息科学学报, 2016, 18(4):486-492.

Getis A , Ord J K . The Analysis of Spatial Association by Use of Distance Statistics[J]. Geographical analysis, 1992, 24(3):189-206.

你可能感兴趣的:(PySAL)