Applied Spatial Statistics(九)GWR示例

Applied Spatial Statistics(九)GWR 示例


这是一个基本的示例笔记本,演示了如何使用开源“mgwr”包在 Python 中校准 GWR(Fotheringham 等人,2002)模型。mgwr 包由 Oshan 等人(2019 年)开发,托管在 https://github.com/pysal/mgwr。

Installation

pip install mgwr

我们将使用佐治亚州的一个示例数据集,以下是数据中的一些变量。

TotPop90 1990 年县的人口

PctRural 县内定义为农村的人口百分比

PctBach 县内拥有学士学位的人口百分比

PctEld 县内 65 岁或以上的人口百分比

PctFB 县内出生在美国以外的人口百分比

PctPov 县内生活在贫困线以下的人口百分比

PctBlack 县内黑人人口百分比


我们将使用几个社会人口统计变量对县级教育程度进行建模。


模型为:

PctBach = b0 + b1 * PctFB + b2 * PctBlack + b3 * PctRural


Load packages

import numpy as np
import matplotlib.pyplot as plt
import geopandas as gpd
import pandas as pd
import libpysal as ps 
from libpysal.weights import Queen
from esda.moran import Moran#MGWR functions
from mgwr.gwr import GWR
from mgwr.sel_bw import Sel_BW

从 pysal 加载 Georgia 数据集

georgia_shp = gpd.read_file("https://raw.github.com/Ziqi-Li/gis5122/master/data/georgia.geojson")

佐治亚州地图和每个县的质心。

fig, ax = plt.subplots(figsize=(5,5))
georgia_shp.boundary.plot(ax=ax,aspect=1)georgia_shp.centroid.plot(ax=ax, c='black',markersize = 10,aspect=1)
/var/folders/mp/9px298sd6vs8xccb_3sql0dr0000gp/T/ipykernel_55115/3938808638.py:4: UserWarning: Geometry is in a geographic CRS. Results from 'centroid' are likely incorrect. Use 'GeoSeries.to_crs()' to re-project geometries to a projected CRS before this operation.georgia_shp.centroid.plot(ax=ax, c='black',markersize = 10,aspect=1)<Axes: >

在这里插入图片描述

我们可以映射因变量“PctBach”。

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

在这里插入图片描述

模型规范:

PctBach = b0 + b1 * PctFB + b2 * PctBlack + b3 * PctRural


准备要输入到 mgwr 的 Georgia 数据集

y = georgia_shp['PctBach'].valuesX = georgia_shp[['PctFB', 'PctBlack', 'PctRural']].valuesu = georgia_shp['X']
v = georgia_shp['Y']coords = list(zip(u,v))

标准化变量(可选)

  • 将数据标准化,使平均值为 0,方差为 1。
  • 参数估计的幅度是可比的。系数越大 -> 关系越强。
#Standardize variables
X = (X - X.mean(axis=0)) / X.std(axis=0)
y = (y - y.mean(axis=0)) / y.std(axis=0)y = y.reshape(-1,1)
两步拟合 GWR 模型
  • 选择最佳带宽
  • 使用最佳带宽拟合 GWR 模型

默认内核是自适应(最近邻居数)双平方。

gwr_selector = Sel_BW(coords, y, X)gwr_bw = gwr_selector.search(verbose=True)print("Selected optimal bandwidth is:", gwr_bw)
Bandwidth:  90.0 , score:  301.83
Bandwidth:  117.0 , score:  299.05
Bandwidth:  133.0 , score:  300.58
Bandwidth:  106.0 , score:  299.75
Bandwidth:  123.0 , score:  299.85
Bandwidth:  112.0 , score:  299.29
Bandwidth:  119.0 , score:  299.43
Bandwidth:  115.0 , score:  299.08
Selected optimal bandwidth is: 117.0

使用最佳 bw 拟合模型

gwr_results = GWR(coords, y, X, bw=gwr_bw).fit()

GWR 输出摘要

gwr_results.summary()
===========================================================================
Model type                                                         Gaussian
Number of observations:                                                 159
Number of covariates:                                                     4Global Regression Results
---------------------------------------------------------------------------
Residual sum of squares:                                             71.793
Log-likelihood:                                                    -162.399
AIC:                                                                332.798
AICc:                                                               335.191
BIC:                                                               -713.887
R2:                                                                   0.548
Adj. R2:                                                              0.540Variable                              Est.         SE  t(Est/SE)    p-value
------------------------------- ---------- ---------- ---------- ----------
X0                                  -0.000      0.054     -0.000      1.000
X1                                   0.458      0.066      6.988      0.000
X2                                  -0.084      0.055     -1.525      0.127
X3                                  -0.374      0.065     -5.734      0.000Geographically Weighted Regression (GWR) Results
---------------------------------------------------------------------------
Spatial kernel:                                           Adaptive bisquare
Bandwidth used:                                                     117.000Diagnostic information
---------------------------------------------------------------------------
Residual sum of squares:                                             51.186
Effective number of parameters (trace(S)):                           11.805
Degree of freedom (n - trace(S)):                                   147.195
Sigma estimate:                                                       0.590
Log-likelihood:                                                    -135.503
AIC:                                                                296.616
AICc:                                                               299.051
BIC:                                                                335.913
R2:                                                                   0.678
Adjusted R2:                                                          0.652
Adj. alpha (95%):                                                     0.017
Adj. critical t value (95%):                                          2.414Summary Statistics For GWR Parameter Estimates
---------------------------------------------------------------------------
Variable                   Mean        STD        Min     Median        Max
-------------------- ---------- ---------- ---------- ---------- ----------
X0                       -0.004      0.180     -0.296      0.111      0.208
X1                        0.477      0.234      0.123      0.556      0.741
X2                       -0.043      0.083     -0.170     -0.053      0.100
X3                       -0.328      0.060     -0.464     -0.308     -0.241
===========================================================================

局部估计值可以从“gwr_results.params”中获得,它返回一个 n x p 数组,其中 p 是模型中的预测变量的数量(包括截距)。

from matplotlib import colorsax = georgia_shp.plot(column=gwr_results.params[:,3],figsize=(10,5),legend=True, linewidth=0.0,aspect=1)plt.title("Coefficients of Pct PctRural",fontsize=12)
Text(0.5, 1.0, 'Coefficients of Pct PctRural')

在这里插入图片描述

编写一些绘图代码,将参数估计表面全部可视化。我们需要将 GWR 结果与县 GeoDataFrame 连接起来。

from mpl_toolkits.axes_grid1 import make_axes_locatable
from mgwr.utils import shift_colormap,truncate_colormap
from matplotlib import cm,colorsdef param_plots(result, gdf, names=[], filter_t=False):#Size of the plot. Here we have a 2 by 2 layout.fig, axs = plt.subplots(2, 2, figsize=(10, 10))axs = axs.ravel()k = gwr_results.k#The max and min values of the color bar.vmin = -0.8vmax = 0.8cmap = cm.get_cmap("coolwarm")norm = colors.BoundaryNorm(np.arange(-0.8,0.9,0.1),ncolors=256)for j in range(k):pd.concat([gdf,pd.DataFrame(np.hstack([result.params,result.bse]))],axis=1).plot(ax=axs[j],column=j,vmin=vmin,vmax=vmax,cmap="bwr",norm=norm,linewidth=0.1,edgecolor='white',aspect=1)axs[j].set_title("Parameter estimates of \n" + names[j],fontsize=10)if filter_t:rslt_filtered_t = result.filter_tvals()if (rslt_filtered_t[:,j] == 0).any():gdf[rslt_filtered_t[:,j] == 0].plot(color='grey', ax=axs[j],linewidth=0.1,edgecolor='white',aspect=1)#plt.axis('off')fig = axs[j].get_figure()cax = fig.add_axes([0.99, 0.2, 0.025, 0.6])sm = plt.cm.ScalarMappable(cmap=cmap,norm=norm)# fake up the array of the scalar mappable. Urgh...sm._A = []fig.colorbar(sm, cax=cax)
以下是从 GWR 获得的参数估计图。每个图代表每个预测因子与 PctBach 之间的空间关系。
  • 正(负)关系以红色(蓝色)显示。
  • 较强(较弱)的关系颜色较深(较浅)。
param_plots(gwr_results, georgia_shp, names=['intercept','PctFB', 'PctBlack', 'PctRural'])
/var/folders/mp/9px298sd6vs8xccb_3sql0dr0000gp/T/ipykernel_55115/1271372694.py:17: MatplotlibDeprecationWarning: The get_cmap function was deprecated in Matplotlib 3.7 and will be removed two minor releases later. Use ``matplotlib.colormaps[name]`` or ``matplotlib.colormaps.get_cmap(obj)`` instead.cmap = cm.get_cmap("coolwarm")

在这里插入图片描述

现在让我们检查一下 GWR 模型的残差。

#Here we use the Queen contiguity
w = Queen.from_dataframe(georgia_shp)#row standardization
w.transform = 'R'
/var/folders/mp/9px298sd6vs8xccb_3sql0dr0000gp/T/ipykernel_55115/876426650.py:2: 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)
georgia_moran = Moran(gwr_results.resid_response.reshape(-1), w, permutations = 199) #199 permutations
georgia_moran.I
0.040101374209262214

我们经常看到 GWR 模型的残差具有随机模式,这表明空间异质性和自相关性都被考虑在内。局部截距在解释空间自相关性方面发挥着作用,其作用类似于空间误差模型中的自回归误差分量。


GWR 推断

局部系数显著性

以下是**显著性(p<0.05)**参数估计值的图。显著性检验已调整以解决多重检验问题。

不显著的参数用灰色遮盖。例如,您可以发现,尽管我们在回归系数中看到了这种模式,但 PctBlack 和 PctBach 之间的关联实际上并不显著。

param_plots(gwr_results, georgia_shp,names=['intercept','PctFB', 'PctBlack', 'PctRural'],filter_t=True)
/var/folders/mp/9px298sd6vs8xccb_3sql0dr0000gp/T/ipykernel_55115/1271372694.py:17: MatplotlibDeprecationWarning: The get_cmap function was deprecated in Matplotlib 3.7 and will be removed two minor releases later. Use ``matplotlib.colormaps[name]`` or ``matplotlib.colormaps.get_cmap(obj)`` instead.cmap = cm.get_cmap("coolwarm")

在这里插入图片描述

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

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

相关文章

塞班和诺基亚(中古手机图,你见过哪个?)

诺基亚的塞班系统&#xff0c;是比较早和强大的移动操作系统了。当时还有Palm&#xff0c;微软的平台&#xff0c;但市占率都很低。 安卓从被谷歌收购那天&#xff0c;每个特性都预示着&#xff0c;未来一定会超越塞班。而塞班后来取消了生态&#xff0c;自己来使用&#xff0c…

element-ui点击文字查看图片预览功能

今天做一个点击文字查看图片的功能&#xff0c;大体页面长这样子&#xff0c;点击查看显示对应的图片 引入el-image-viewer&#xff0c;点击的文字时候设置图片预览组件显示并传入图片的地址 关键代码 <el-link v-if"scope.row.fileList.length > 0" type&…

Python基础:18、Python文件操作

1&#xff09;文件的编码 什么是编码&#xff1f; 编码就是一种规则集合&#xff0c;记录了内容和二进制间进行相互转换的逻辑。 编码有许多中&#xff0c;我们最常用的是UTF-8编码 为什么需要使用编码&#xff1f; 计算机只认识0和1&#xff0c;所以需要将内容翻译成0和1才能…

Ubuntu20.04卸载ros2 foxy版本安装ros1 noetic版本

前言 如果你ubuntu中没有ros&#xff0c;可以试着直接从鱼香ros一键安装包指令处开始。 卸载ros2 sudo apt-get remove ros-*接下来如果你直接使用鱼香ros的一键安装命令&#xff0c;会出错。 设置源 设置源&#xff0c;这里使用的是中科大的。 sudo sh -c . /etc/lsb-r…

基于SpringBoot+Vue+Uniapp家具购物小程序的设计与实现

详细视频演示 请联系我获取更详细的演示视频 项目运行截图 技术框架 后端采用SpringBoot框架 Spring Boot 是一个用于快速开发基于 Spring 框架的应用程序的开源框架。它采用约定大于配置的理念&#xff0c;提供了一套默认的配置&#xff0c;让开发者可以更专注于业务逻辑而…

3个方法快速恢复微信已过期或被清理图片

微信作为现在国内用户数量最多的社交软件&#xff0c;已经成为了许多人日常生活和工作中必不可少的一部分。但微信中的图片有时会因为多种原因而消失&#xff0c;如过期、被清理或者误删。遇到这种情况&#xff0c;那么已过期或被清理的图片还能恢复吗&#xff1f;下面小编就来…

论文速读:通过目标感知双分支蒸馏进行跨域目标检测(CVPR2022)

原文标题&#xff1a;Cross Domain Object Detection by Target-Perceived Dual Branch Distillation 中文标题&#xff1a;通过目标感知双分支蒸馏进行跨域目标检测 论文地址&#xff1a; https://arxiv.org/abs/2205.01291 代码地址&#xff1a; GitHub - Feobi1999/TDD 这篇…

在IDEA中配置Selenium和WebDriver

前言&#xff1a; 在当今自动化测试和网络爬虫的领域&#xff0c;Selenium是一个被广泛使用的工具。它不仅能够模拟用户与浏览器的交互&#xff0c;还能进行网页测试和数据抓取。而为了使用Selenium与谷歌/Edge浏览器进行自动化测试&#xff0c;配置合适的WebDriver至关重要。本…

Java--练习--DVD管理系统

一、详细代码 package demo2.Test;import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.Date; import java.util.Scanner;public class DVD2 {//DVD管理系统//声明三个数组 用来存储 名称 状态 借出日期 借出次数String[] names new St…

游戏引擎哪家强?选哪一个更有钱途

游戏引擎乃是构筑及开发视频游戏的软件架构。其供应一整套工具与库&#xff0c;以处置常见的游戏开发事务&#xff0c;诸如渲染图形、模拟物理、管控音频等等。凭借对游戏引擎的运用&#xff0c;开发人员能够将精力倾注于构建其游戏的独特之处&#xff0c;而非再度发明此类基础…

【游戏模组】极品飞车12无间风云冬季mod,冬天版本的无间风云你体验过吗

各位好&#xff0c;今天小编给大家带来一款新的高清重置魔改MOD&#xff0c;本次高清重置的游戏叫《极品飞车12无间风云》。 《极品飞车12&#xff1a;无间风云》是由Black Box游戏制作室开发的竞速类游戏&#xff0c;于2008年11月18日在北美首发、2008年11月21日在欧洲先后推…

【深入学习Redis丨第八篇】详解Redis数据持久化机制

前言 Redis支持两种数据持久化方式&#xff1a;RDB方式和AOF方式。前者会根据配置的规则定时将内存中的数据持久化到硬盘上&#xff0c;后者则是在每次执行写命令之后将命令记录下来。两种持久化方式可以单独使用&#xff0c;但是通常会将两者结合使用。 一、持久化 1.1、什么…

MySQL【知识改变命运】04

复习&#xff1a; 1&#xff1a;CURD 1.1Create &#xff08;创建&#xff09; 语法&#xff1a; insert [into] 表名 [column[,column]] valuse(value_list)[,vaule_list]... value_list:value,[value]...创建一个实例表&#xff1a; 1.1.1单⾏数据全列插⼊ values_l…

Python爬虫之正则表达式于xpath的使用教学及案例

正则表达式 常用的匹配模式 \d # 匹配任意一个数字 \D # 匹配任意一个非数字 \w # 匹配任意一个单词字符&#xff08;数字、字母、下划线&#xff09; \W # 匹配任意一个非单词字符 . # 匹配任意一个字符&#xff08;除了换行符&#xff09; [a-z] # 匹配任意一个小写字母 […

CSS之一

目录 简介 CSS 语法规范 CSS 代码风格 1.样式格式书写 2.样式大小写 CSS 基础选择器 选择器分类 标签选择器 类选择器 案例之画盒子 多类型使用 id选择器 通配符选择器 font-family设置字体 字体系列 字体大小 字体粗细 文字样式 字体复合属性 示例 CSS 文…

解决关于HTML+JS + Servlet 实现前后端请求Session不一致的问题

1、前后端不分离情况 在处理session过程中&#xff0c;如果前后端项目在一个容器中&#xff0c;session是可以被获取的。例如如下项目结构&#xff1a; 结构 后端的代码是基本的设置值、获取值、销毁值的内容&#xff1a; 运行结果 由此可见&#xff0c;在前后统一的项目中&a…

《Linux从小白到高手》综合应用篇:详解Linux系统调优之服务器硬件优化

List item 本篇介绍Linux服务器硬件调优。硬件调优主要包括CPU、内存、磁盘、网络等关键硬件组。 1. CPU优化 选择适合的CPU&#xff1a; –根据应用需求选择多核、高频的CPU&#xff0c;以满足高并发和计算密集型任务的需求。CPU缓存优化&#xff1a; –确保CPU缓存&#x…

SAP导出excel报错:发现“EXPORT.XLSX“中的部分内容有问题。是否让我们尽量尝试恢复?如果您信任此工作簿的源,请单击“是”。

1.问题描述&#xff1a;SAP报表程序导出excel的时报错 2.问题原因 文本信息中包含了非法符号&#xff08;SAP不认识的符号&#xff09; 比如&#xff1a;NLSY10 3.解决方式&#xff0c;把这个文本信息特殊符号去掉&#xff0c;就可以恢复正常了。 怎么找这个特殊符号&#…

2019年计算机网络408真题解析

第一题&#xff1a; 解析&#xff1a;OSI参考模型第5层完成的功能 首先&#xff0c;我们需要对OSI参考模型很熟悉&#xff1a;从下到上依次是&#xff1a;物理层-数据链路层-网络层- 运输层-会话层-表示层-应用层&#xff0c;由此可知&#xff0c;题目要问的是会话层的主要功能…

第十五章 RabbitMQ延迟消息之延迟插件

目录 一、引言 二、延迟插件安装 2.1. 下载插件 2.2. 安装插件 2.3. 确认插件是否生效 三、核心代码 四、运行效果 五、总结 一、引言 上一章我们讲到通过死信队列组合消息过期时间来实现延迟消息&#xff0c;但相对而言这并不是比较好的方式。它的代码实现相对来说比…