spgwr | R语言与地理加权回归(Ⅰ-1):线性地理加权回归[通俗易懂]

spgwr | R语言与地理加权回归(Ⅰ-1):线性地理加权回归[通俗易懂]地理加权回归(GeographicallyWeightedRegression,GWR)经过多年发展,已经具备了多种形式,在R语言中也对应着多个工具包,其中spgwr是一个开发较早、…

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE稳定放心使用

地理加权回归(Geographically Weighted Regression, GWR)经过多年发展,已经具备了多种形式,在R语言中也对应着多个工具包,其中spgwr是一个开发较早、比较经典的工具包,功能也相对基础。

library(spgwr)

在该包中,运行线性地理加权回归的函数是gwr()。语法结构如下:

gwr(formula, data = list(), coords,
    bandwidth, gweight = gwr.Gauss, 
    adapt = NULL, hatmatrix = FALSE, fit.points,
    longlat = NULL, se.fit = FALSE, weights,
    cl = NULL, predictions = FALSE, 
    fittedGWRobject = NULL, se.fit.CCT = TRUE)

本篇先介绍它的几个主要的参数:

参数 含义及格式
formula 模型表达式;
data 数据源;可以为普通的数据框,也可以为sp格式的矢量对象
coords 坐标信息,当data参数是普通数据框时,需要提供该参数
bandwidth 带宽
gweight 距离加权函数

该包目前的版本号是0.6-34,还不支持sf格式的矢量对象。

数据源

library(rgdal)
NY8 <- readOGR(system.file("shapes/NY8_utm18.shp",
                           package = "spData"))

模型形式

form <- Z ~ PEXPOSURE + PCTAGE65P + PCTOWNHOME

带宽

带宽(bandwidth)确定了局部的范围,该包的gwr.sel()函数提供了两种确定带宽的方法:交叉验证法和AIC信息准则法。语法结构如下:

gwr.sel(formula, data = list(),
        coords, adapt = FALSE, gweight = gwr.Gauss,
        method = "cv", verbose = TRUE,
        longlat = NULL, RMSE = FALSE, weights,
        tol = .Machine$double.eps^0.25,
        show.error.messages = FALSE)
  • method:可选项有cv(交叉验证)、aic(AIC准则)。

bw <- gwr.sel(formula = form, data = NY8,
              gweight = gwr.Gauss, method = "cv")
bw
## [1] 179942.6

formuladatagweight参数需要与gwr()函数的对应参数保持一致。

距离加权函数

距离加权函数是一个随距离增加而逐渐衰减的函数,该包提供了4种地理加权函数:gwr.gaussgwr.Gauss(默认)、gwr.bisquaregwr.tricube

b表示带宽,d表示距离。以d = 100为例:

spgwr | R语言与地理加权回归(Ⅰ-1):线性地理加权回归[通俗易懂]

完整形式

线性回归:

model.lm <- lm(formula = form, data = NY8@data)
summary(model.lm)
## 
## Call:
## lm(formula = form, data = NY8@data)
## 
## Residuals:
##     Min      1Q  Median      3Q     Max 
## -1.7417 -0.3957 -0.0326  0.3353  4.1398 
## 
## Coefficients:
##             Estimate Std. Error t value Pr(>|t|)    
## (Intercept) -0.51728    0.15856  -3.262  0.00124 ** 
## PEXPOSURE    0.04884    0.03506   1.393  0.16480    
## PCTAGE65P    3.95089    0.60550   6.525 3.22e-10 ***
## PCTOWNHOME  -0.56004    0.17031  -3.288  0.00114 ** 
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 0.6571 on 277 degrees of freedom
## Multiple R-squared:  0.1932, Adjusted R-squared:  0.1844 
## F-statistic:  22.1 on 3 and 277 DF,  p-value: 7.306e-13

线性地理加权回归:

library(rgdal)
NY8 <- readOGR(system.file("shapes/NY8_utm18.shp",
                           package = "spData"))
form <- Z ~ PEXPOSURE + PCTAGE65P + PCTOWNHOME
bw <- gwr.sel(formula = form, data = NY8,
              gweight = gwr.Gauss, method = "cv")

model <- gwr(formula = form, data = NY8,
             bandwidth = bw, gweight = gwr.Gauss)
model
## Call:
## gwr(formula = form, data = NY8, bandwidth = bw, gweight = gwr.Gauss)
## Kernel function: gwr.Gauss 
## Fixed bandwidth: 179942.6 
## Summary of GWR coefficient estimates at data points:
##                   Min.   1st Qu.    Median   3rd Qu.      Max.  Global
## X.Intercept. -0.522172 -0.520740 -0.520154 -0.514439 -0.511092 -0.5173
## PEXPOSURE     0.047176  0.048032  0.049527  0.049722  0.050477  0.0488
## PCTAGE65P     3.911526  3.933832  3.959192  3.962334  3.979552  3.9509
## PCTOWNHOME   -0.559358 -0.557968 -0.557682 -0.555498 -0.554563 -0.5600

模型结果的数据结构是list,模型的主要结果在下图红框所示的位置:

spgwr | R语言与地理加权回归(Ⅰ-1):线性地理加权回归[通俗易懂]

以截距为例进行可视化:

library(sf)
NY8_sf <- st_as_sf(NY8)
NY8_sf$Intercept <- model$SDF@data$X.Intercept.

plot(NY8_sf["Intercept"])

spgwr | R语言与地理加权回归(Ⅰ-1):线性地理加权回归[通俗易懂]

参考文献:
https://mirrors.tuna.tsinghua.edu.cn/CRAN/web/packages/spgwr/spgwr.pdf

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/188806.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • shift work什么意思_shift delete什么意思

    shift work什么意思_shift delete什么意思shift后门之管理员的用处『罗斌原创』shift后门,网络/系统管理员如果想用的话,那还是可以的,为什么要用它呢,第一,公司大部分的电脑都没有光驱,有的甚至不支持从U盘启动,当一个员工走了之后,而他的电脑又设置了密码,无从下手激活成功教程密码,除非把它的电脑拆了,把硬盘挂在其他电脑上去激活成功教程。或者重装系统!这样是不是非常麻烦呢?第…

    2022年9月2日
    2
  • c语言学生成绩管理系统_学生成绩管理系统c++代码结构体

    c语言学生成绩管理系统_学生成绩管理系统c++代码结构体c语言管理系统牛~~/*引用库函数*/#include<stdio.h>#include<stdlib.h>#include<string.h>/*定义结构体数组*/typedefstruct{charnum[12];/*学号*/charname[20];/*姓名*/charsex[2];/*性别*/intscore[3];/*成绩*/

    2022年9月14日
    0
  • python可变类型有哪些_python可变数据类型有哪些

    python可变类型有哪些_python可变数据类型有哪些将python3的基本数据类型有六种:Number(int,float,bool,complex),String,List,Tuple,Dictionary,Set可变数据类型:list,dic,set不可变数据类型:Number,String,Tuple什么是可变数据类型和不可变数据类型?1、Python中的不可变数据类型,不允许变量的值发生变化,如果改变了变量的值,相当…

    2022年5月20日
    71
  • Winscp连接不上Kali

    Winscp连接不上Kali解决Winscp无法连接kali的问题

    2022年9月13日
    0
  • test.py是什么文件_exe文件反编译源码工具

    test.py是什么文件_exe文件反编译源码工具"java"]//P6DataSourcep6DSource=newP6DataSource(cpDSource)publicclassP6DataSourceextendsP6BaseimplementsDataSource,Referenceable,Serializable{//source是通过构造传入的数据源c3p0或DruidpublicP6DataSource(DataSourcesource)

    2022年10月5日
    0
  • Service Mesh详解

    Service Mesh详解ServiceMesh简介:这个词最早使用由开发Linkerd的Buoyant公司提出,并在内部使用。2016年9月29日第一次公开使用这个术语。2017年的时候随着Linkerd的传入,ServiceMesh进入国内技术社区的视野。最早翻译为“服务啮合层”,这个词比较拗口。用了几个月之后改成了服务网格。微服务(Microservices)是一种软件架构风格,它是以专注于单一责任与功能的小型功能区块(SmallBuildingBlocks)为基础,利用模块化

    2025年5月31日
    1

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号