地理加权回归(GWR)相比于普通的回归模型能够考虑到回归系数的空间异质性。但实际上,地理加权并非GWR模型所独有,其他数据分析方法同样也能通过加入地理权重进行改进。本篇介绍的就是地理加权主成分分析(GWPCA)。

本部分使用的工具包主要是GWmodel工具包,开发者是武汉大学的卢宾宾。它相比于spgrw工具包,功能更加丰富,除了GWR外,还能用来运行GWPCA等多种地理加权模型。

本篇包含以下内容:

  • 使用GWmodel工具包中的函数运行GWR模型;

  • GWPCA模型的理论基础;

  • 使用GWmodel工具包中的函数运行GWPCA模型。

1 GWR模型

在第Ⅰ部分已经介绍了GWR模型的主要构成部分以及spgwr工具包中的相关函数,这里再介绍下GWmodel工具包中的相关函数。

函数 线性GWR 广义线性GWR
带宽函数 bw.gwr bw.ggwr
模型函数 gwr.basic ggwr.basic

以下仅以线性GWR模型为例。

工具包和原始的示例数据加载如下:

library(GWmodel)
data(Georgia)
data(GeorgiaCounties)

上述代码运行后可以得到Gedu.countiesGedu.df两个数据,数据结构分别为SpatialPolygonsDataFramedata.frame。通过以下代码将二者合并:

library(sf)
library(sp)
library(tidyverse)
Gedu.df$AreaKey <- factor(Gedu.df$AreaKey)
dta <- Gedu.counties %>%st_as_sf() %>%left_join(Gedu.df, by = c("AREAKEY" = "AreaKey")) %>%as("Spatial")

得到的dta是一个含属性的sp格式面状矢量数据。至此,示例数据的准备工作已经完成。

下面看下主要函数的语法结构。

带宽函数的语法结构:

bw.gwr(formula, data,approach = "CV",kernel = "bisquare",adaptive = FALSE,p = 2, theta = 0,longlat = F, dMat,parallel.method = F, parallel.arg = NULL)

GWmodel::bw.gwr()函数和spgwr::gwr.sel()函数中的参数基本上是对应的:

  • approach——method:确定“最优”带宽的方法;可选项有交叉验证(CV)和赤池信息准则(AIC);

  • kernel——gweight:距离加权函数。GWmodel工具包提供了5种选择:gaussian、exponential、bisquare、tricube、boxcar,具体见函数说明文档;

  • adaptive——adapt:FALSE表示带宽为固定的距离;TRUE表示权重不为0的邻近单元的个数固定(k-邻近法),此时带宽是变化的;

  • longlat——longlat:当空间数据的坐标为经纬度格式时,需将改参数设置为TRUE;

  • dMat:距离矩阵;可忽略。

模型函数的语法结构:

gwr.basic(formula, data,regression.points,bw, kernel = "bisquare",adaptive = FALSE,p = 2, theta = 0,longlat = F, dMat,F123.test = F,cv = F, W.vect = NULL,parallel.method = FALSE, parallel.arg = NULL)

以下为示例代码。

定义模型表达式和带宽:

formula <- PctPov ~ PctBlack + PctBach
bw.1 <- bw.gwr(formula, data = dta,approach = "aic",adaptive = T,kernel = "gaussian")# “最优”带宽寻找过程
## Adaptive bandwidth (number of nearest neighbours): 105 AICc value: 910.8443
## Adaptive bandwidth (number of nearest neighbours): 73 AICc value: 902.3318
## Adaptive bandwidth (number of nearest neighbours): 51 AICc value: 891.5931
## Adaptive bandwidth (number of nearest neighbours): 40 AICc value: 884.2077
## Adaptive bandwidth (number of nearest neighbours): 30 AICc value: 875.4572
## Adaptive bandwidth (number of nearest neighbours): 27 AICc value: 873.3422
## Adaptive bandwidth (number of nearest neighbours): 22 AICc value: 867.0877
## Adaptive bandwidth (number of nearest neighbours): 22 AICc value: 867.0877

运行GWR模型:

model.1 <- gwr.basic(formula, data = dta,bw = bw.1,adaptive = T,kernel = "gaussian")

GWmodelspgwr这两个工具包运行GWR模型的方法是类似的,有兴趣的读者可以尝试使用GWmodel工具包中的函数运行广义线性GWR模型。

2 GWPCA模型

2.1 理论基础

关于主成分分析(PCA)详见推文:数据降维之主成分分析(PCA)

地理加权主成分分析(GWPCA)与普通主成分分析的区别在于计算协方差矩阵时加入了地理权重矩阵。

记为行、列的矩阵,其中行表示样本,列表示变量,再将进行列中心化得到矩阵。

PCA计算协方差矩阵:

GWPCA计算协方差矩阵:

其余步骤相同。

2.2 相关函数

带宽函数为bw.gwpca(),模型函数为gwpca()

gwpca()函数的语法结构如下:

gwpca(data, elocat,vars, k = 2,robust = FALSE,kernel = "bisquare",adaptive = FALSE,bw, p = 2, theta = 0,longlat = F, cv = T,scores=F, dMat)
  • vars:参与主成分分析的变量名;

  • k:保留的主成分个数。

# 变量名
varnames <- colnames(select(dta@data, starts_with("Pct")))
varnames
## [1] "PctRural" "PctBach"  "PctEld"   "PctFB"    "PctPov"   "PctBlack"# 带宽
bw.2 <- bw.gwpca(data = dta, vars = varnames, k = 3)
bw.2
## [1] 24450.79# 模型
model.2 <- gwpca(data = dta, vars = varnames,bw = bw.2, k = 3)

参考资料:

[1] Harris P, Clarke A, Juggins S, Brunsdon C, Charlton M (2015). Enhancements to a geographically weighted principal components analysis in the context of an application to an environmental data set. Geographical Analysis 47: 146-172

GWmodel | 地理加权模型(Ⅱ-1):地理加权主成分分析(GWPCA)相关推荐

  1. python线性加权模型_局部加权之线性回归(1) - Python实现

    1 #局部加权线性回归 2 #交叉验证计算泛化误差最小点 3 4 5 importnumpy6 from matplotlib importpyplot as plt7 8 9 #待拟合不含噪声之目标 ...

  2. R统计绘图-多元线性回归(平均加权模型/最优子集筛选,MuMIn)

    此文介绍如何使用MuMIn包使用最优子集法进行多重线性回归的模型筛选以及模型平均.多重线性回归需要进行的数据检验过程都写在R统计绘图-多重线性回归(最优子集法特征筛选,leaps)中了.大家可以自行查 ...

  3. 使用Python进行地理编码和反向地理编码

    Geocoding is the process of taking input text, such as an address or the name of a place, and return ...

  4. 时间序列预测方法的使用(简单、加权时序,简单加权移动,一次二次三次指数平滑法)

    先简要介绍 1. 简单序时平均数法 也称算术平均法.即把若干历史时期的统计数值作为观察值,求出算术平均数作为下期预测值.这种方法基于下列假设:"过去这样,今后也将这样",把近期和远 ...

  5. matlab 动态加权综合评价_动态加权综合评价、灰色关联度分析、BP神经网络模型汇总...

    大气污染预报问题 摘要 本文针对大气污染问题, 采用动态加权综合评价方法建立了合理的空气质量评价模 型,同时,采用灰色关联度分析方法和 BP 神经网络模型较好地研究了空气质量和气象 参数之间的关系. ...

  6. 调用高德逆地理接口_地理编码与逆地理编码

    本章主要介绍如何将地址描述信息和地理坐标做相互转化,主要包括以内容:正向地理编码 逆向地理编码 地理编码服务 地理编码包含正向地理编码和逆向地理编码两种:正向地理编码: 将地址描述信息转换成地理坐标( ...

  7. IOS 地理编码以及反地理编码

    2019独角兽企业重金招聘Python工程师标准>>> // //  ViewController.m //  地理编码以及反地理编码 // //  Created by dc008 ...

  8. 谷歌地图开发:地理编码和反地理编码

    谷歌地图Geocoding说明:内容主要来自谷歌官网的文档,谷歌地图android api地理和反地理编码反应迟钝内容有时不准确,这里使用的googlemap的webapi接口.嗯,需要vpn这个不多 ...

  9. 高德地图地理编码和逆地理编码,以及逆地理编码的时候如何去掉省、市、镇

    地理编码和逆地理编码 首先说说,何为地理编码, 地理编码就是 给你一个地名,得到对应的经纬度(纬经度,高德地图实际是纬经度) 知道地理编码,那么逆地理编码就不难理解了. 逆地理编码就是给出经纬度,得到 ...

最新文章

  1. C:/WINDOWS/system32/x 病毒分析和解决建议
  2. 计算机中丢失qt5svg,无法找到“Qt5Svg”提供了一个程序包配置文件
  3. 爬虫python需要什么软件-python大神们!都在用什么爬虫工具呢?
  4. [Eclipse] - 解决导入flask模块出现的Unresolved Import flask问题
  5. 进度条控制(Windows 公共进度栏控件的功能)
  6. 用python为喜欢的人写一个程序,每天发送贴心的消息
  7. windows 下使用github
  8. 如何免费下载网易云收费音乐?不需会员也能做到
  9. visio2019怎么对图片加箭头标注,Visio设置图片作为背景
  10. html复制粘贴的文字自动换行,word中复制的文字出现自动换行怎么办
  11. u-boot源码个别分析
  12. 浏览器显示域名解析错误怎么办
  13. 通过vdi备份linux,centos/ubuntu挂载vmdk、 vdi为块设备的方法(非vdfuse)
  14. 别混淆区别很大 LED网格屏和格栅屏区别对比及分析
  15. 【feature_column处理】- numeric_column数值列
  16. PRD-产品需求说明文档
  17. 用C语言验证“6174数学黑洞之谜
  18. 「译」一起探讨 JavaScript 的对象
  19. Angular 入门(二)
  20. DenseNet论文解读

热门文章

  1. NSX控制平面和静态路由更新流程2
  2. VMware vSphere Client下增加虚拟机磁盘空间的方法
  3. 成为java架构师需要具备那些技能?
  4. Mysql学习总结(31)——MySql使用建议,尽量避免这些问题
  5. linux添加了一条静态路由,为Linux新增静态路由的方法
  6. mysql 代码结构_MySQL代码执行结构
  7. Portal-Basic Java Web应用开发框架V3.0正式发布(源码、实例及文档)
  8. Swift中viewWeb执行JS
  9. Action+Service +Dao三层的功能划分
  10. Linux 用户线程数与文件句柄树调整(nproc与nofile的问题)