Spatial Data Analysis(四):空间自相关示例

Spatial Data Analysis(四):空间自相关示例

空间自相关是地理信息科学(GIS)和空间统计学中的重要概念之一,用于研究地理空间上的数据变异性和相关性。空间自相关分析的目标是探讨地理空间中的现象是否呈现出某种程度的空间模式或趋势。在这个过程中,我们关注地理空间中相邻位置之间的数据值之间是否存在某种关联。

以下是关于空间自相关的详细介绍:

1.基本概念:

  • 空间自相关:空间自相关是指地理空间上相邻位置的数据值之间的相关性。如果相邻位置的数据值彼此相似,则存在正的空间自相关;如果相邻位置的数据值彼此不同,则存在负的空间自相关。
  • 空间权重矩阵:空间自相关的分析通常涉及构建一个空间权重矩阵,该矩阵描述了不同位置之间的空间关系。常见的空间权重矩阵包括邻近矩阵(表示相邻关系)和距离衰减矩阵(表示距离越近,权重越大)。

2.类型:

  • 正的空间自相关:相邻位置的数据值之间存在相似性,即一个位置的高(或低)值周围的位置也有高(或低)值。这表明存在集聚现象。
  • 负的空间自相关:相邻位置的数据值之间存在差异,即一个位置的高(或低)值周围的位置有低(或高)值。这表明存在分散现象。

3.衡量方法:

  • 莫兰指数(Moran’s
    I):是一种常用的测量空间自相关的统计指标。它考察了空间上的数据分布和空间结构之间的关系。当莫兰指数接近1时,表明正的空间自相关;当接近-1时,表明负的空间自相关;接近0时,表明数据分布呈随机分布。
  • 吉特斯指数(Geary’s C):类似于莫兰指数,用于测量全局空间自相关,其值越小表示越强的正的空间自相关。

4.应用领域:

  • 空间自相关广泛应用于地理学、城市规划、环境科学、经济学等领域。
  • 在地理信息系统(GIS)中,空间自相关有助于理解地理现象的分布规律,优化资源分配和规划。

5.空间自相关分析的步骤:

  • 定义研究区域和空间尺度。
  • 构建空间权重矩阵。
  • 计算莫兰指数或其他空间自相关指标。
  • 进行统计显著性检验,判断空间自相关是否显著。
  • 解释结果,理解空间分布的模式。

在本例中,我将使用乔治亚州县级人口普查数据的示例演示如何在 python 中进行空间自相关分析。

具体来说,我们正在绘制县级本科及以上学历人口的百分比,并进行全球/当地莫兰分析。 最后,我们能够识别冷点和热点,帮助我们了解乔治亚州的教育不平等。

Install PySAL packages for SA analysis

pip install -q splot
pip install -q libpysal

Load packages

import numpy as np
import matplotlib.pyplot as plt
import geopandas as gpdfrom libpysal.weights.contiguity import Queen
from splot.esda import moran_scatterplot,plot_moran,lisa_cluster
from esda.moran import Moran, Moran_Local
import splot

Load Georgia dataset

georgia_shp = gpd.read_file("https://raw.githubusercontent.com/Ziqi-Li/GEO4162C/main/data/georgia/G_utm.shp")

First, again check the data we loaded.

georgia_shp.head()
AREAPERIMETERG_UTM_G_UTM_IDAREANAMELatitudeLongitudTotPop90PctRuralPctBachPctEldPctFBPctPovPctBlackXYAreaKeygeometry
09.786480e+08174967.021GA, Rabun County34.88129-83.4014311648100.011.617.181.1313.60.35824645.5386480513241POLYGON ((806227.188 3858275.500, 805577.812 3...
14.461530e+08115140.032GA, Towns County34.91864-83.739086754100.011.422.961.3614.00.00797981.7387264013281POLYGON ((779645.188 3875727.750, 808540.188 3...
28.543330e+08160360.047GA, Union County34.83436-83.9908811993100.010.117.550.8818.30.10777040.1385877913291POLYGON ((762005.000 3875204.000, 773345.688 3...
31.014270e+09179577.054GA, Fannin County34.86415-84.3192815992100.07.817.300.5817.20.03739255.8386660413111POLYGON ((717121.188 3874113.750, 744454.625 3...
48.980900e+08183295.063GA, Murray County34.78193-84.748232614789.05.57.690.5011.30.26707834.3385418813213POLYGON ((699833.188 3873629.500, 703008.812 3...
georgia_shp.plot()

在这里插入图片描述

该数据包含一组社会人口变量。 其中之一是“PctBach”,即拥有学士学位或更高学历的人口百分比。

让我们为这个变量创建一个映射。 显然,我们可以看到亚特兰大和雅典附近的巴赫百分比较高。

georgia_shp.plot(column="PctBach",legend=True)
plt.title("PctBach")
Text(0.5, 1.0, 'PctBach')

在这里插入图片描述

A map of Georgia for reference
(source:https://www.enchantedlearning.com/usa/states/georgia/map.GIF)

全局 Moran’s I 和 p 值

全局 Moran’s I 是一个用于空间自相关性检测的指标,它可以用于检测空间数据集中的空间聚集现象。具体而言,它可以帮助我们确定空间数据集中的观测点是否具有相似的价值,以及这些点是否出现在一起。

p 值是另一个统计指标,用于评估一个检验结果的显著性。它通常用于确定某个统计检验的结果是否具有统计学意义。

在空间分析中,全局 Moran’s I 和 p 值通常一起使用,以确认空间数据集是否呈现出显著的空间自相关性。如果 Moran’s I 的值接近1且 p 值小于0.05,则可以得出结论,空间数据集呈现出显著的空间自相关性,即空间聚集现象。反之,如果 p 值大于0.05,则可以得出结论,空间数据集中观测点的价值没有表现出统计学上显著的空间自相关性。

指定权重矩阵

w = Queen.from_dataframe(georgia_shp) #Generate W matrix using Queen contiguityw.transform = 'r' #Row-standardization of the weight matrix
('WARNING: ', 65, ' is an island (no neighbors)')<ipython-input-8-385596cab5f3>:1: FutureWarning: `use_index` defaults to False but will default to True in future. Set True/False directly to control this behavior and silence this warningw = Queen.from_dataframe(georgia_shp) #Generate W matrix using Queen contiguity
/usr/local/lib/python3.10/dist-packages/libpysal/weights/weights.py:224: UserWarning: The weights matrix is not fully connected: There are 2 disconnected components.There is 1 island with id: 65.warnings.warn(message)

计算 Moran’s I

from esda.moran import Moranbach = georgia_shp['PctBach'].values #Get the data we are interested.ga_global_moran = Moran(bach, w, permutations = 200) #200 permutations
ga_global_moran.I
0.2487731738404628

p-value

ga_global_moran.p_sim # P value based on permutation tests
0.004975124378109453

这表明 Pct Bach 数据中存在统计显着性 (p=0.005<0.05) 聚类。

莫兰散点图

莫兰散点图是一种用于检测空间自相关性的图表。它可以帮助我们确定数据是否在空间上聚集或分散。在莫兰散点图中,每个点代表一个区域,而每个点周围的点代表邻近区域。如果点之间的距离越近,它们之间的空间滞后就越小。如果点之间的距离越远,它们之间的空间滞后就越大。

要分析莫兰散点图,需要计算莫兰指数。莫兰指数是一种用于测量空间自相关性的统计量。它的值介于-1和1之间。如果莫兰指数为正,则表示数据在空间上聚集。如果莫兰指数为负,则表示数据在空间上分散。如果莫兰指数为0,则表示数据在空间上随机分布。

from splot.esda import plot_moranplot_moran(ga_global_moran, zstandard=False, figsize=(10,4))
/usr/local/lib/python3.10/dist-packages/splot/_viz_esda_mpl.py:354: FutureWarning: `shade` is now deprecated in favor of `fill`; setting `fill=True`.
This will become an error in seaborn v0.14.0; please update your code.sbn.kdeplot(moran.sim, shade=shade, color=color, ax=ax, **kwargs)(<Figure size 1000x400 with 2 Axes>,array([<Axes: title={'center': 'Reference Distribution'}, xlabel='Moran I: 0.25', ylabel='Density'>,<Axes: title={'center': 'Moran Scatterplot (0.25)'}, xlabel='Attribute', ylabel='Spatial Lag'>],dtype=object))

在这里插入图片描述

左边是 Moran’s I 的零抽样分布。右边是 Moran 散点图。

生成更好的莫兰散点图,其中包含当地莫兰 Is 的显着性。

对每个县及其所属象限进行颜色编码。

  • 红色:HH(高值接近高值)
  • 浅蓝色:LH
  • 黄色:HL
  • 蓝色:LL
from splot.esda import moran_scatterplot
from esda.moran import Moran_Local# calculate Moran_Local and plot
ga_moran_loc = Moran_Local(bach, w,permutations=200)fig, ax = moran_scatterplot(ga_moran_loc, zstandard=False, p=0.05)#Labelling
ax.set_xlabel('Pct Bach')
ax.set_ylabel('Spatial Lag of Pct Bach')
/usr/local/lib/python3.10/dist-packages/esda/moran.py:1059: RuntimeWarning: invalid value encountered in divideself.z_sim = (self.Is - self.EI_sim) / self.seI_simText(0, 0.5, 'Spatial Lag of Pct Bach')

在这里插入图片描述

创建热点和冷点地图。

  • HH:高 % 巴赫县被高 % 巴赫县包围
  • LL:低-低
    左侧:低-高
  • HL:高-低
  • NS:不显着(p>0.05)
from splot.esda import lisa_clusterlisa_cluster(moran_loc=ga_moran_loc, gdf=georgia_shp, p = 0.05, figsize = (6,6))
(<Figure size 600x600 with 1 Axes>, <Axes: >)

在这里插入图片描述

我们可以看到亚特兰大附近有一个统计显着的热点集群。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/202794.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Dubbo(二)dubbo调用关系

节点角色说明Provider暴漏服务的额提供方&#xff08;洗浴中心&#xff09;Consumer调用远程服务的消费方&#xff08;客人&#xff09;Registry服务注册与发现的注册中心&#xff08;便民服务中心&#xff0c;所有的饭店娱乐场所都在本中心注册&#xff09;Monitor监控统计服务…

仓库管理应该用ERP系统还是WMS仓储管理系统

WMS仓储管理系统和ERP企业管理系统中的仓储管理模块在功能上具有相似性&#xff0c;但在实际应用中却存在着明显的区别。这些区别对于想要全面构建信息化体系的企业来说&#xff0c;尤其是仓库的系统化管理方面&#xff0c;具有重要的影响。 WMS是一种专注于仓库管理的系统&am…

德迅云安全的日常网站安全性措施、以及更多网站安全工具的推荐与使用。

要确保网站的安全性&#xff0c;可以采取以下措施&#xff1a; 更新和维护&#xff1a;定期更新网站的操作系统、应用程序和插件&#xff0c;确保使用的是最新版本&#xff0c;以修复已知的安全漏洞。 强密码策略&#xff1a;使用强密码&#xff0c;包含字母、数字和特殊字符的…

navicat premium 历史版本下载地址

navicat贴心地给大家准备了一致的下载地址&#xff1a; 只是没有把旧版本的链接放出来而已。 链接的格式 &#xff1a; 前缀版本类型语言位数 前缀&#xff1a;http:/download.navicat.com/download/navicat 版本&#xff1a;三位数&#xff0c;前两位是大版本&#xff0c;后…

使用Pytoch实现Opencv warpAffine方法

随着深度学习的不断发展&#xff0c;GPU/NPU的算力也越来越强&#xff0c;对于一些传统CV计算也希望能够直接在GPU/NPU上进行&#xff0c;例如Opencv的warpAffine方法。Opencv的warpAffine的功能主要是做仿射变换&#xff0c;如果不了解仿射变换的请自行了解。由于Pytorch的图像…

MySQL联合查询、最左匹配、范围查询导致失效

服务器版本 客户端&#xff1a;navicat premium16.0.11 联合索引 假设有如下表 联合索引就是同时把多列设成索引&#xff0c;如(empno&#xff0c;ename)在查询的时候就会先按照empno进行查询&#xff0c;再按照ename进行查询其中empno是全局有序&#xff0c;ename是局部有…

flink中处理kafka分区的消息顺序

背景 kafka分区的消息是有序的&#xff0c;那么flink在消费kafka分区的时候消息的顺序是怎么样的呢&#xff1f;还能保持这个有序性吗&#xff0c;本文就来记录下 flink消费kafka分区的顺序性 从上图可知&#xff0c;flink的转换算子比如map&#xff0c;flatMap&#xff0c;f…

IntelliJ IDEA 之初体验

文章目录 第一步&#xff1a;下载与安装 IntelliJ IDEA1&#xff09;官网下载2&#xff09;选择那种安装包3&#xff09;开始下载4&#xff09;解压 第二步&#xff1a;启动 IntelliJ IDEA第三步&#xff1a;创建第一个 Java 项目第四步&#xff1a;运行第一个 Java 程序1&…

代理服务器的IP和端口是什么意思?

代理服务器的地址和端口&#xff1a;基础概念解析 如果我们将其与在互联网发明之前我们的老一辈之间用于交流的经典书信进行类比&#xff0c;那么地址就相当于信封上的寄件人地址&#xff0c;而端口就相当于收信人地址。然而&#xff0c;与传统信件不同&#xff0c;这里需要确切…

设计一算法,对单链表实现就地逆置

对单链表逆置&#xff0c;要联想到单链表的头插性质 举个例子&#xff1a;现在有一个空链表&#xff0c;我们依次对它进行头插123 那么形成的链表是321&#xff0c;这样就形成了逆置 //单链表就地逆置 //思路&#xff1a;把原表接到一个新表上&#xff0c;然后对原表进行头插 …

【Linux】冯诺依曼体系结构(硬件)、操作系统(软件)、系统调用和库函数 --- 概念篇

&#x1f466;个人主页&#xff1a;Weraphael ✍&#x1f3fb;作者简介&#xff1a;目前正在学习c和Linux还有算法 ✈️专栏&#xff1a;Linux &#x1f40b; 希望大家多多支持&#xff0c;咱一起进步&#xff01;&#x1f601; 如果文章有啥瑕疵&#xff0c;希望大佬指点一二 …

java多人聊天

服务端 package 多人聊天;import java.io.BufferedReader; import java.io.InputStream; import java.io.InputStreamReader; import java.io.OutputStream; import java.io.PrintStream; import java.net.ServerSocket; import java.net.Socket; import java.util.ArrayList;…

Nero刻录光盘软件-极好用

目录 一、下载Nero 二、软件安装 三、刻录数据 前言 刻录之前准备一张新的光盘&#xff0c;之前一旦使用过&#xff0c;就无法刻录&#xff0c;一定要新的光盘。 一、下载Nero nero官网下载地址&#xff1a;Nero下载 csdn免费下载地址&#xff1a;https://download.csdn.…

迈向成功:解读新能源汽车企业竞争优势策略

尽管受汽车“缺芯”、疫情等因素的制约&#xff0c; 新能源汽车 的销量表现仍非常亮眼。我国新能源汽车行业从起初的政策驱动&#xff0c;逐步进入“成本技术”驱动阶段&#xff1b;动力电池为核心环节&#xff0c;呈现“一超多强”格局&#xff0c;整车厂行业格局远未形成。新…

TCP实现一对一聊天

一&#xff0c;创建类 二&#xff0c;类 1.ChatSocketServer类 import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.io.PrintWriter; import java.net.ServerSocket; import java.net.Socket; import java.util.Sca…

visionOS空间计算实战开发教程Day 11 标题动画

本文我们要在visionOS内实现一个标题输出的动画效果。主要讲​​ViewModifier​​​协议&#xff0c;修饰符&#xff08;modifier&#xff09;应用于视图或另一个视图修饰符&#xff0c;生成原值的另一个版本。在希望创建一个可应用于不同视图的修饰符时可实现​​ViewModifier…

docker基本管理和docker相关概念

docker是开源的的应用容器引擎&#xff0c;基于go语言开发的&#xff0c;运行在linux系统当中的开源的轻量级的"虚拟机。 docker的容器技术可以在一台主机上轻松的为任何应用创建一个轻量级的&#xff0c;可以移植的&#xff0c;自给自足的容器 docker的宿主机是linux系…

[Unity数据管理]自定义菜单创建Unity内部数据表(ScriptableObject)

Unity 在开发的时候如果数据量比较大&#xff0c;或者一部分数据需要存在云端&#xff0c;那么就需要一些数据库 轻量型到大型的包括&#xff1a; 数组-内存存储读取 列表-内存存储读取 List<T> tList new List<T>(); XML-硬盘存储读取 JSON-硬盘存储读取 …

pycharm使用Anaconda中的虚拟环境【我的入门困惑二】

Anaconda的作用 Anaconda的存在&#xff0c;使得一台电脑上可以存在多个不同版本的python和相应的包&#xff0c;这解决了多个项目运行时&#xff0c;所需要的python和包版本不同的问题。 本文内容 今天就来简单说说如何在pycharm使用Anaconda中的虚拟环境。 详细介绍 首先…