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 gpd


from 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 contiguity

w.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 warning
  w = 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 Moran

bach = 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_moran

plot_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 divide
  self.z_sim = (self.Is - self.EI_sim) / self.seI_sim





Text(0, 0.5, 'Spatial Lag of Pct Bach')

在这里插入图片描述

创建热点和冷点地图。

  • HH:高 % 巴赫县被高 % 巴赫县包围
  • LL:低-低
    左侧:低-高
  • HL:高-低
  • NS:不显着(p>0.05)
from splot.esda import lisa_cluster

lisa_cluster(moran_loc=ga_moran_loc, gdf=georgia_shp, p = 0.05, figsize = (6,6))
(<Figure size 600x600 with 1 Axes>, <Axes: >)

在这里插入图片描述

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

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

8路编码器脉冲信号测量或16路DI高速计数器,Modbus RTU模块 YL69

特点&#xff1a; ● 编码器解码转换成标准Modbus RTU协议 ● 可用作编码器计数器或者转速测量 ● 支持8个编码器同时计数&#xff0c;可识别正反转 ● 也可以设置作为16路独立DI高速计数器 ● 编码器计数值支持断电自动保存 ● DI输入和电源之间3000V隔离 ● 通过RS-4…

【Java基础系列】JavaWeb入门

&#x1f49d;&#x1f49d;&#x1f49d;欢迎来到我的博客&#xff0c;很高兴能够在这里和您见面&#xff01;希望您在这里可以感受到一份轻松愉快的氛围&#xff0c;不仅可以获得有趣的内容和知识&#xff0c;也可以畅所欲言、分享您的想法和见解。 推荐:kwan 的首页,持续学…

GUI的简单概述和基本使用

GUI的概念 1&#xff0c;到目前为止&#xff0c;我们编写的都是控制输入的程序&#xff0c;操作使用非常不直观&#xff0c;采取一直方式让效果呈现在窗口上。 2&#xff0c;GUI及图形界面指采用图像方式显示的用户界面&#xff0c;与早期计算机的命令行界面相比&#xff0c;…

【征稿倒计时十天】第三届高性能计算与通信工程国际学术会议(HPCCE 2023)

【有ISSN、ISBN号&#xff01;&#xff01;往届均已完成EI检索】 第三届高性能计算与通信工程国际学术会议(HPCCE 2023) 2023 3rd International Conference on High Performance Computing and Communication Engineering (HPCCE 2023) 2023年12月22-24日 | 中国哈尔滨 第三…

Web组态与传统组态有什么区别?探索云组态的革新

一、Web组态的定义和背景 在深入探讨之前&#xff0c;我们先回顾一下“组态”的定义。在工业自动化领域&#xff0c;组态软件是用于创建监控和数据采集&#xff08;SCADA&#xff09;系统的工具&#xff0c;它允许工程师构建图形界面&#xff0c;实现与各种设备和机器的数据交…

速达软件任意文件上传漏洞复现

简介 速达软件专注中小企业管理软件,产品涵盖进销存软件,财务软件,ERP软件,CRM系统,项目管理软件,OA系统,仓库管理软件等,是中小企业管理市场的佼佼者,提供产品、技术、服务等信息,百万企业共同选择。速达软件全系产品存在任意文件上传漏洞,未经身份认证得攻击者可以通过此漏…

微服务2 Docker学习 P42-P60

Docker学习视频https://www.bilibili.com/video/BV1LQ4y127n4?p42&vd_source8665d6da33d4e2277ca40f03210fe53a 文档资料: 链接&#xff1a;https://pan.baidu.com/s/1P_Ag1BYiPaF52EI19A0YRw?pwdd03r 提取码&#xff1a;d03r Docker 其他笔记 服务器容器化-docker(全…

Python第三次练习

Python 一、如何判断一个字符串是否是另一个字符串的子串二、如何验证一个字符串中的每一个字符均在另一个字符串中出现三、如何判定一个字符串中既有数字又有字母四、做一个注册登录系统 一、如何判断一个字符串是否是另一个字符串的子串 实现代码&#xff1a; string1 inp…

5G - NR物理层解决方案支持6G非地面网络中的高移动性

文章目录 非地面网络场景链路仿真参数实验仿真结果 非地面网络场景 链路仿真参数 实验仿真结果 Figure 5 && Figure 6&#xff1a;不同信噪比下的BER和吞吐量 变量 SISO 2x2MIMO 2x4MIMO 2x8MIMOReyleigh衰落、Rician衰落、多径TDL-A(NLOS) 、TDL-E(LOS)(a)QPSK (b)16…

【React Hooks】useReducer()

useReducer 的三个参数是可选的&#xff0c;默认就是initialState&#xff0c;如果在调用的时候传递第三个参数那么他就会改变为你传递的参数&#xff0c;实际开发不建议这样写。会增加代码的不可读性。 使用方法&#xff1a; 必须将 useReducer 的第一个参数&#xff08;函数…

代码随想录算法训练营 ---第五十七天

今天是两道动态规划的经典题目。 第一题&#xff1a; 简介&#xff1a; 做了今天的题目我有了新的理解&#xff0c;我觉得过去我过于注重对于二维数组的理解&#xff0c;忽略了对dp数组i 和 j 的含义的理解。 动态规划五部曲&#xff1a; 1.确定dp数组的含义 本题我们将i …

【Flutter】vs2022上开发flutter

在vs上开发flutter&#xff0c;结果扩展仓库上没办法找到Dart&#xff0c;Flutter。 在 这 搜索Dart时也无法找到插件。 最后发现是安装工具出错了 安装了 开发需要的是

Cython批量编译py文件并打包python项目为whl

1、Cython批量编译py文件 Cython是一个编程语言&#xff0c;它通过类似Python的语法来编写C扩展并可以被Python调用。能够将PythonC混合编码的.pyx脚本转换为C代码&#xff0c;主要用于优化Python脚本性能或Python调用C函数库。基于它的原理&#xff0c;可以得到一种代码加密的…

C++——红黑树

作者&#xff1a;几冬雪来 时间&#xff1a;2023年12月7日 内容&#xff1a;C——红黑树讲解 目录 前言&#xff1a; 红黑树的概念&#xff1a; 红黑树的性质&#xff1a; 红黑树的路径计算&#xff1a; 最长路径和最短路径&#xff1a; AVL树与红黑树的区别&#xff…

测试新手百科:Postman简介、安装、入门使用方法详细攻略!

一、Postman背景介绍 用户在开发或者调试网络程序或者是网页B/S模式的程序的时候是需要一些方法来跟踪网页请求的&#xff0c;用户可以使用一些网络的监视工具比如著名的Firebug等网页调试工具。今天给大家介绍的这款网页调试工具不仅可以调试简单的css、html、脚本等简单的网…

zabbix(2)

zabbix的自动发现机制 zabbx客户端主动和服务端联系&#xff0c;将自己的地址和端口发送服务端&#xff0c;实现自动添加监控主机 客户端是主动的一方 缺点&#xff1a;自定义网段中主机数量太多&#xff0c;登记耗时会很久&#xff0c;而且这个自动发现机制不是很稳定 zabb…

Python---面向对象的综合案例

案例1&#xff1a;定义学员信息类&#xff0c;包含姓名、成绩属性&#xff0c;定义成绩打印方法&#xff08;90分及以上显示优秀&#xff0c;80分及以上显示良好&#xff0c;70分及以上显示中等&#xff0c;60分及以上显示合格&#xff0c;60分以下显示不及格&#xff09; 学员…

easyexcel导出报错 java.lang.NoClassDefFoundError: org/apache/poi/POIXMLTypeLoader

报错&#xff1a; org.springframework.web.util.NestedServletException: Handler processing failed; nested exception is java.lang.NoClassDefFoundError: org/apache/poi/POIXMLTypeLoaderorg.springframework.web.servlet.DispatcherServlet.triggerAfterCompletionWit…

微信小程序-发消息

一、引言 作者开发《目的地到了》的时候需要给用户发消息&#xff0c;一开始用了消息模板&#xff0c;后面上真机才发现微信把这个给取消掉了。后面通知用户都是通过订阅消息 二、前端 调用wx的api&#xff0c;要把模板id传进去&#xff0c;如果用户没有点击过同意会弹出弹窗提…

多人群聊代码

服务端 import java.io.*; import java.net.*; import java.util.ArrayList; public class Server{public static ServerSocket server_socket;public static ArrayList<Socket> socketListnew ArrayList<Socket>(); public static void main(String []args){try{…