Python空间分析| 03 利用Python进行地理加权回归(GWR)
地理加权回归(GWR)
GWR本质上是一种局部加权回归模型,GWR根据每个空间对象的周围信息,逐个对象建立起回归方程,即每个对象都有自己的回归方程,可用于归因或者对未来的预测。GWR最大的优势是考虑了空间对象的局部效应
本实验基于GWR官网提供的Georgia数据,美国佐治亚州受教育程度及各因素的空间差异性进行分析
数据下载地址: https://sgsup.asu.edu/sparc/mgwr
author:jiangroubao
date:2021-5-21
导入包
import numpy as np
import libpysal as ps
from mgwr.gwr import GWR, MGWR
from mgwr.sel_bw import Sel_BW
import geopandas as gp
import matplotlib.pyplot as plt
import matplotlib as mpl
import pandas as pddata_dir="/home/lighthouse/Learning/pysal/data/"
导入数据
georgia_data = pd.read_csv(data_dir+"GData_utm.csv")
georgia_shp = gp.read_file(data_dir+'G_utm.shp')
查看数据概况
数据共有13个字段,其含义分别是:
- AreaKey:地区代码
- TotPop90:1990年人口数量
- PctRural:乡村人口占比
- PctBach:本科以上人口占比
- PctEld:老龄人口占比
- PctFB:外国出生人口占比
- PctPov:贫困人口占比
- PctBlack:非洲裔美国人占比
- ID:地区ID
- Latitude:纬度(地理坐标系)
- Longitud:经度(地理坐标系)
- X:投影坐标系X坐标
- Y:投影坐标系Y坐标
georgia_data.head()
绘制分布概况
ax = georgia_shp.plot(edgecolor='white',column="AreaKey",cmap='GnBu',figsize=(6,6))
georgia_shp.centroid.plot(ax=ax, color='r',marker='o')
ax.set_axis_off()
准备输入GWR中的变量
- 因变量:PctBach(本科以上人口占比)作为
- 自变量:TotPop90(1990年总人口)、PctRural(农村人口占比)、PctEld(老年人口占比)、PctFB(外国人口出生占比)、PctPov(生活在贫困线以下居民占比)、PctBlack(非裔美国人占比)
# 因变量
g_y = georgia_data['PctBach'].values.reshape((-1,1))# 自变量
g_X = georgia_data[['TotPop90','PctRural','PctEld','PctFB','PctPov','PctBlack']].values# 坐标信息Latitude Longitud
u = georgia_data['Longitud']
v = georgia_data['Latitude']
g_coords = list(zip(u,v))# z标准化
# g_X = (g_X - g_X.mean(axis=0)) / g_X.std(axis=0)
# g_y = g_y.reshape((-1,1))
# g_y = (g_y - g_y.mean(axis=0)) / g_y.std(axis=0)
GWR模型拟合
# 带宽选择函数
gwr_selector = Sel_BW(g_coords, g_y, g_X)
gwr_bw = gwr_selector.search(search_method='golden_section',criterion='AICc')
print('最佳带宽大小为:',gwr_bw)
最佳带宽大小为: 151.0
# GWR拟合
gwr_results = GWR(g_coords, g_y, g_X, gwr_bw, fixed=False, kernel='bisquare', constant=True, spherical=True).fit()
输出GWR拟合结果
gwr_results.summary()
===========================================================================
Model type Gaussian
Number of observations: 159
Number of covariates: 7Global Regression Results
---------------------------------------------------------------------------
Residual sum of squares: 1816.164
Log-likelihood: -419.240
AIC: 852.479
AICc: 855.439
BIC: 1045.690
R2: 0.646
Adj. R2: 0.632Variable Est. SE t(Est/SE) p-value
------------------------------- ---------- ---------- ---------- ----------
X0 14.777 1.706 8.663 0.000
X1 0.000 0.000 4.964 0.000
X2 -0.044 0.014 -3.197 0.001
X3 -0.062 0.121 -0.510 0.610
X4 1.256 0.310 4.055 0.000
X5 -0.155 0.070 -2.208 0.027
X6 0.022 0.025 0.867 0.386Geographically Weighted Regression (GWR) Results
---------------------------------------------------------------------------
Spatial kernel: Adaptive bisquare
Bandwidth used: 151.000Diagnostic information
---------------------------------------------------------------------------
Residual sum of squares: 1499.592
Effective number of parameters (trace(S)): 13.483
Degree of freedom (n - trace(S)): 145.517
Sigma estimate: 3.210
Log-likelihood: -404.013
AIC: 836.992
AICc: 840.117
BIC: 881.440
R2: 0.708
Adjusted R2: 0.680
Adj. alpha (95%): 0.026
Adj. critical t value (95%): 2.248Summary Statistics For GWR Parameter Estimates
---------------------------------------------------------------------------
Variable Mean STD Min Median Max
-------------------- ---------- ---------- ---------- ---------- ----------
X0 15.043 1.455 12.234 15.907 16.532
X1 0.000 0.000 0.000 0.000 0.000
X2 -0.041 0.011 -0.062 -0.039 -0.025
X3 -0.174 0.046 -0.275 -0.171 -0.082
X4 1.466 0.703 0.489 1.495 2.445
X5 -0.095 0.069 -0.206 -0.094 0.001
X6 0.010 0.033 -0.039 0.002 0.076
===========================================================================
拟合参数空间化
# 回归参数
var_names=['cof_Intercept','cof_TotPop90','cof_PctRural','cof_PctEld','cof_PctFB','cof_PctPov','cof_PctBlack']
gwr_coefficent=pd.DataFrame(gwr_results.params,columns=var_names)# 回归参数显著性
gwr_flter_t=pd.DataFrame(gwr_results.filter_tvals())# 将点数据回归结果放到面上展示
# 主要是由于两个文件中的记录数不同,矢量面中的记录比csv中多几条,因此需要将没有参加gwr的区域去掉
georgia_data_geo=gp.GeoDataFrame(georgia_data,geometry=gp.points_from_xy(georgia_data.X, georgia_data.Y))
georgia_data_geo=georgia_data_geo.join(gwr_coefficent)# 将回归参数与面数据结合
georgia_shp_geo=gp.sjoin(georgia_shp,georgia_data_geo, how="inner", op='intersects').reset_index()
绘制回归系数分布图
fig,ax = plt.subplots(nrows=2, ncols=4,figsize=(20,10))
axes = ax.flatten()for i in range(0,len(axes)-1):ax=axes[i]ax.set_title(var_names[i])georgia_shp_geo.plot(ax=ax,column=var_names[i],edgecolor='white',cmap='Blues',legend=True)if (gwr_flter_t[i] == 0).any():georgia_shp_geo[gwr_flter_t[i] == 0].plot(color='lightgrey', ax=ax, edgecolor='white') # 灰色部分表示该系数不显著ax.set_axis_off()if i+1==7:axes[7].axis('off')plt.show()
因此,从系数的分布就可以看出各个因素在每个州对于受教育程度的影响大小是不同的,并且有的因素的影响可能并不显著
参考链接
- https://pysal.org/notebooks/model/mgwr/GWR_Georgia_example.html
- https://github.com/pysal/mgwr/blob/master/notebooks/GWR_Georgia_example.ipynb
- https://pysal.org/notebooks/model/mgwr/MGWR_Georgia_example.html
- https://geopandas.org/docs/user_guide/mergingdata.html
- https://www.codenong.com/10035446/
- https://www.jianshu.com/p/834246169e20
Python空间分析| 03 利用Python进行地理加权回归(GWR)相关推荐
- 白话空间统计二十四:地理加权回归(八)结果解读(一)
地理加权回归分析完成之后,与OLS不同的是会默认生成一张可视化图,像下面这张一样的: 这种图里面数值和颜色,主要是系数的标准误差.主要用来衡量每个系数估计值的可靠性.标准误差与实际系数值相比较小时,这 ...
- 白话空间统计二十四:地理加权回归(九)结果解读(二)
实际上,除了辅助表以外,GWR还会生成一份全要素的表.对回归的每一个样本都给出相应的信息,今天就来看看这些信息代表了什么内容. 生成的新的要素类字段信息如下: 实际上,Coeffcient(系数)和S ...
- R语言地理加权回归数据分析
在自然和社会科学领域有大量与地理或空间有关的数据,这一类数据一般具有严重的空间异质性,而通常的统计学方法并不能处理空间异质性,因而对此类型的数据无能为力.以地理加权回归为基础的一系列方法:经典地理加权 ...
- ArcGIS与地理加权回归【三】
开 工 大 急 原址链接: ArcGIS与地理加权回归[三]https://mp.weixin.qq.com/s/x85EXKImSHio1IZovW9qdA 接着5个月之前..... ...
- 用python做数据分析pdf_利用python进行数据分析pdf
利用python进行数据分析pdf微盘下载!<利用python进行数据分析>利用Python实现数据密集型应用由浅入深帮助读者解决数据分析问题~适合刚刚接触Python的分析人员以及刚刚接 ...
- Python语言学习:利用python获取当前/上级/上上级目录路径(获取路径下的最后叶目录的文件名、合并两个不同路径下图片文件名等目录/路径案例、正确加载图片路径)之详细攻略
Python语言学习:利用python获取当前/上级/上上级目录路径(获取路径下的最后叶目录的文件名.合并两个不同路径下图片文件名等目录/路径案例.正确加载图片路径)之详细攻略 目录 利用python ...
- Python语言学习:利用python语言实现调用内部命令(python调用Shell脚本)—命令提示符cmd的几种方法
Python语言学习:利用python语言实现调用内部命令(python调用Shell脚本)-命令提示符cmd的几种方法 目录 利用python语言实现调用内部命令-命令提示符cmd的几种方法 T1. ...
- Python之ffmpeg:利用python编程基于ffmpeg将m4a格式音频文件转为mp3格式文件
Python之ffmpeg:利用python编程基于ffmpeg将m4a格式音频文件转为mp3格式文件 目录 利用python编程基于ffmpeg将m4a格式音频文件转为mp3格式文件 1.先下载ff ...
- 空间地理加权回归stata_xy妙妙屋丨地理加权回归和空间自相关
关于地理加权回归和空间自相关 菜鸡的我只是大神文章的搬运工orz,本意是想搞清楚双变量局部空间自相关和地理加权回归的区别,虽然依旧一知半解,但是,害.(下面网址我不会搞超链接,我发现有点麻烦,所以我懒 ...
- gis中的加权求和工具在哪里_干货分享 | 地理加权回归介绍及其arcgis软件操作
一.地理加权回归模型概述 橘生淮南则为橘,生于淮北则为枳,叶徒相似,其实味不同.所以然者何?水土异也.--<晏子春秋·内篇杂下>这段文字很好的描述了空间异质性.从地理空间的角度,经济发展尤 ...
最新文章
- kettle预览点两下才出数_BBG代王 | 7.16直播预览
- 直播 | AAAI 2021最佳论文:比Transformer更有效的长时间序列预测
- springboot通过Intellij指定端口
- 不是keys,记一次因 redis 使用不当导致应用卡死 的过程
- 【开学季限时免费】下载19880元大数据开发全链路教程(视频+源码)
- 绿网天下:上云解决系统安全和安全合规
- Spring循环依赖源码剖析
- mysql 大量close wait_线上大量CLOSE_WAIT原因排查
- pyQT实现自动找茬游戏
- layedit-jfinal后台获取
- oracle 11g PL/SQL Programming学习三
- convertTO函数 简介
- VBA从工作表另存为工作簿
- 如何将CHM转换为PDF文件?
- 利用pygame实现大鱼吃小鱼游戏
- 本土猎头调整“战术”谋发展
- H5移动端如何推送消息
- 用 Androidx + 蓝牙HC05 点灯(2): Handler 掌舵人 和 Thread 线人,逮着蓝牙老大说黑话:此灯为我开,101011...
- Android图片轮播第三弹,给你想不到的惊喜
- 随笔小记-广告拦截,卸载猎豹后,仍然弹出广告
热门文章
- Pycharm安装与汉化教程
- usb扩展坞同时接键盘鼠标_iPadOS 13.1连接鼠标键盘扩展坞用法说明
- 【离散数学】集合论 第四章 函数与集合(2) 特殊函数类(单射、满射、双射及其性质、常/恒等函数、置换/排列)
- SCSA---信息安全概述
- ibm服务器怎么装win7系统安装系统,教你thinkpad电脑重装win7系统
- 服务器装系统蓝屏怎么办,重装系统蓝屏怎么办
- 邮政储蓄计算机笔试题,邮储总行计算机类笔试题
- 用java进行安卓开发的步骤_如何在windows下Android开发IDE搭建步骤
- 四个简单的步骤告别烦人的flash广告
- mybatisPlus代码自动生成