使用R语言中的spgwr包进行GWR模型的相关运算

前言

GWR4其实是一个非常专业的软件,功能非常强大,无奈bug实在是太多了,通常是在数据量大(大于1w条记录)的时候会出现。所以我不得不求助于R语言。

准备工作

1. 安装R Studio

2. 安装spgwr的包

install.packages("spgwr")

3. 引入spgwr包

library(spgwr)

读取CSV数据

这里我使用的就是之前在GWR4软件中运行的数据

guangzhousufang<-read.table(file="/Users/xxx/xxx/xxx/xxx.csv", header = TRUE, sep=',')

read.table其实是读取csv最好的函数。第一个参数为文件路径,header参数是数据的第一行(列名),sep参数是数据的分隔符。函数的返回结果是data.frame。

还有一个函数read.csv也可以读取csv,但是它其实是封装了read.table。

如果csv文件巨大,想要提升读取速度,可使用read_delim

ps.如果需要读取shp格式的数据并运算,可移步这一教程: https://www.zhihu.com/question/304853593/answer/551289317

计算带宽

bw<-gwr.sel(rent~area+subway+pSchool+mSchool+university+hospital, data=guangzhousufang, coords=cbind(x=guangzhousufang$lon, y=guangzhousufang$lat), gweight = gwr.Gauss, verbose = TRUE, method = "aic")

调用gwr.sel函数来计算带宽。

第一个参数中指定了因变量(rent)与自变量(area subway pSchool mSchool university hospital)

第二个参数指定了数据(上一步中读入的数据)

第三个参数指定了坐标(lon和lat为数据中自定义的列名):注意⚠️ x对应经度,y对应纬度

第四个参数(gweight)指定了空间权重函数(代码中使用的gauss函数)

第五个参数(verbose)控制是否汇打印计算带宽的过程

第六个参数(method)指定带宽的计算方法(代码中使用的aic)

ps. 如果搞不懂GWR模型的原理,不知道参数值之前的区别,推荐大虾卢的博客与苏世亮老师编写的《空间数据分析》

计算GWR模型

gwr_result <- gwr(rent~area+subway+pSchool+mSchool+university+hospital,coords=cbind(x=guangzhousufang$lon, y=guangzhousufang$lat), data = guangzhousufang, bandwidth = bw, gweight = gwr.Gauss, hatmatrix = TRUE)

函数运行完之后,输入变量名(在我的程序中是gwr_result)查看结果:

此时我发现了一个很严重的问题:在spgwr包中,衡量模型拟合度的参数名为“Quasi-global R2",中文直译过来是“近似全局R2”。我查看了一下源码,在源码中Quasi-global R2的计算方法是:1 - rss/gTSS。rss是residual sum of squares(残差平方和, \small \sum( \hat{yi}-yi)^{^{2}}),但是gTSS是指什么我并没有在源码中找到,或许就是\small \sum( \bar{yi}-yi)^{^{2}}吧。

除了上图之外,还有一些计算出的参数可以通过“变量名”+“$”+"参数名"的方法查看,例如:

更多关于参数的信息可参考官方文档https://rdrr.io/cran/spgwr/man/gwr.html

总结

spgwr总体上使用起来比较简单,运算时比较稳定,结果也没什么bug(不像GWR4有时算出来的结果中R2比Adjusted R2还小零点几,呕),但是比起GWR4,它缺少了与全局回归进行比较的部分(还要自己重新跑一遍多元线性回归),并且衡量模型拟合度的时候用了一个非主流的参数“Quasi-global R2”(至少我没有在网上查到关于这个参数的定义,如果有人了解这个参数欢迎交流),所以也不是十分完美。

如果你不是十分享受写代码的过程,那我其实我更建议对数据进行随机抽样,在减小了数据量之后用GWR4进行运算。

如果你热爱coding,那么可以把目光转向另一个包:GWmodel。GWmodel比起spgwr更加稳定,并且构建GWR模型时运算速度要更快。我先放上运算出来的结果:

预知详细操作,且听下回分解。

  • 11
    点赞
  • 72
    收藏
    觉得还不错? 一键收藏
  • 42
    评论
GWR是地理加权回归(Geographically Weighted Regression)的缩写,是一种用于分析空间数据的地理统计模型。它考虑了数据在空间上的非平稳性和异质性,能够更准确地揭示变量之间的空间关系。 在R语言,我们可以使用gwr来实现GWR模型的随机模拟。首先,我们需要安装gwr并加载它。然后,我们可以准备我们的空间数据,并选择适当的解释变量和响应变量。 接下来,我们可以使用gwr函数来进行GWR模型的拟合。该函数需要输入解释变量、响应变量和空间坐标数据。我们可以选择一些参数,如核函数类型和带宽选择方法,来完善我们的模型。然后,我们可以运行该函数并得到估计的模型。 在我们得到模型之后,我们可以使用summary函数来查看模型的摘要信息,例如每个变量的估计系数、标准误差和显著性水平。此外,我们还可以通过绘制GWR估计的地图来可视化模型的结果,观察变量在空间上的变化和影响。 需要注意的是,GWR模型的拟合和解释比传统的全局回归模型更复杂,因为它考虑了空间的影响。因此,在使用GWR模型进行分析时,我们需要谨慎地选择参数和解释结果,以获得合理和可靠的结论。 总之,GWR地理加权模型是一种有效的地理统计方法,可以通过R语言gwr进行随机模拟。通过合理选择参数和解释结果,我们可以利用GWR模型更好地理解变量之间的空间关系。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 42
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值