ESDA in PySal (2) localjoincounts

ESDA in PySal (2) localjoincounts

参考:https://blog.csdn.net/angel0929/article/details/128433265
https://blog.csdn.net/allenlu2008/article/details/49895387

PySAL有5种全局自相关检验:Gamma值、Join Count、Moran’s I、Geary’s C、和Getis and Ord’s G
ESDA in PySal (2) localjoincounts_第1张图片

在下面的笔记本中,我们回顾了 Anselin and Li (2019)提出的不同类型的本地连接计数(LJC) 。LJC 关注采用二进制值(例如 0 或 1)的空间现象,例如美国大选的获胜与失败,。 这套探索性统计数据对于想要关注 Anselin 和 Li 所说的“协同定位”不同类型的分析师来说特别有用。 即是否存在特定的 0 或 1 值。

请注意,LJC 有多个版本:

  • 单变量 LJC
  • 双变量 LJC(案例 1)
  • 双变量 LJC(案例 2)
  • 多元LJC

下面提供了每个统计数据的用例及其在 PySAL 中的实现。

Univariate LJC

单变量 LJC 是“black-black”(又名“BB”)统计量的本地版本。 此统计量描述了给定单元 x i x_i xi 的邻居 x j x_j xj 的计数,当该单元也等于 1 时,这些邻居也等于 1。形式上:

Eq 1. B B i = x i ∑ j w i j x j BB_i = x_i \sum_{j} w_{ij} x_j BBi=xijwijxj

需要注意的是,当给定单位 x i x_i xi 等于 0 时,统计量也变为 0。Anselin 和 Li 将这个统计量的应用描述为:

因此,局部连接计数统计数据仅在评估具有“事件”的位置(即 x i = 1 x_i = 1 xi=1 )是否比空间随机性下的情况被更多具有事件的位置包围时才有意义。 Anselin and Li, 2019, Section 2.2 Page 192

我们可以将单变量 LJC 统计量的 PySAL 实现应用到其在 GeoDa 中的原始实现。 我们首先加载 Guerry 数据集并将“Donats”列转换为二进制列。 根据 Natural Breaks 分类方法,这个新的二进制列对于“Donats”的前三组的值为 1(否则为 0)。

import libpysal
import geopandas as gpd
guerry = libpysal.examples.load_example('Guerry')
guerry_ds = gpd.read_file(guerry.get_path('guerry.shp'))
guerry_ds['SELECTED'] = 0
guerry_ds.loc[(guerry_ds['Donatns'] > 10997), 'SELECTED'] = 1
Downloading Guerry to C:\Users\24365\AppData\Local\pysal\pysal\Guerry

我们现在制作一个 Queen-contiguity 权重对象来描述单位之间的关系。

w = libpysal.weights.Queen.from_dataframe(guerry_ds)

我们现在可以在数据集上应用单变量 LJC 函数。

from esda.join_counts_local import Join_Counts_Local
LJC_uni = Join_Counts_Local(connectivity=w).fit(guerry_ds['SELECTED'])

从函数返回的“LJC”属性计算本地连接计数的总数。

LJC_uni.LJC
array([0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 1., 0., 3., 3., 0.,
       1., 0., 0., 0., 0., 0., 0., 1., 0., 1., 0., 0., 0., 0., 0., 0., 1.,
       0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
       0., 0., 1., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
       0., 0., 0., 0., 0., 0., 3., 0., 0., 0., 0., 0., 2., 0., 3., 0., 0.])

“p_sim”属性包含从条件随机化过程获得的 p 值。

LJC_uni.p_sim
array([  nan,   nan,   nan,   nan,   nan,   nan,   nan,   nan,   nan,
         nan,   nan,   nan, 0.422,   nan, 0.026, 0.026,   nan, 0.33 ,
         nan,   nan,   nan,   nan,   nan,   nan, 0.327,   nan, 0.307,
         nan,   nan,   nan,   nan,   nan,   nan, 0.332,   nan,   nan,
         nan,   nan,   nan,   nan,   nan,   nan,   nan,   nan,   nan,
         nan,   nan,   nan,   nan,   nan,   nan,   nan,   nan, 0.499,
         nan,   nan,   nan,   nan,   nan,   nan,   nan,   nan,   nan,
         nan,   nan,   nan,   nan,   nan,   nan,   nan,   nan,   nan,
         nan,   nan, 0.03 ,   nan,   nan,   nan,   nan,   nan, 0.132,
         nan, 0.059,   nan,   nan])

我们可以将这些值放回数据集中后对其进行映射。

guerry_ds['LJC_UNI'] = LJC_uni.LJC
guerry_ds['LJC_UNI_p_sim'] = LJC_uni.p_sim

从这里您可能对绘制 LJC 感兴趣…

import matplotlib.pyplot as plt
fig,ax = plt.subplots(figsize=(12,10), subplot_kw={
   'aspect':'equal'

你可能感兴趣的:(GIS空间分析,数据库)