前言

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(残差平方和, ),但是gTSS是指什么我并没有在源码中找到,或许就是吧。

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

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

总结

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

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

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

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

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

  1. R语言中的igraph包绘制网络图

    本文转自网络. R语言中的igraph包可以很方便地画出网络图,在社交关系分析等领域发挥重要作用,下面介绍包中一个重要的函数graph_from_data_frame(). graph_from_da ...

  2. 1071svm函数 r语言_如何利用R语言中的rpart函数建立决策树模型

    决策树是根据若干输入变量的值构造出一个适合的模型,以此来预测输出变量的值,并用树形结构展示出来.决策树主要有两个类别:分类树和回归树.分类树主要针对离散的目标变量,回归树则针对连续的目标变量.R语言中 ...

  3. R语言中quantmod金融分析包的实践

    本文是自己在学习R中的学习笔记: 该文主要包括如下几各方面: 一 .获取国内股市的综合指数:二.获取个股股票交易数据yahoo:三.获取汇率信息oanda:四.获取财务报表google:五.获取股息数 ...

  4. R语言中的Rwordseg包详细使用教材

    中文分词一直是一个不大容易解决的问题,Rwordseg包是一个很不错的包,之前的tm包效果实际不是很理想,当然还出现了一个jiebaR的包,这个跟python中的jieba有点像,不说了,具体上代码看 ...

  5. R语言中GCC编译的问题(续)

    这篇文章承接R语言中GCC编译的问题,这篇文章主要解决我在Linux系统上安装"expm"出现的问题. 出现的问题 这个问题非常的有趣,因为我在两台服务器分别安装同一个包,其中一台 ...

  6. R语言中的apply函数族

    原文出处:http://blog.fens.me/r-apply/ 前言 刚开始接触R语言时,会听到各种的R语言使用技巧,其中最重要的一条就是不要用循环,效率特别低,要用向量计算代替循环计算. 那么, ...

  7. R语言中package ‘xxxx’ is not available (for R version xxx)的解决办法以及R如何在线升级版本?

    R语言中package 'xxxx' is not available (for R version xxx)的解决办法以及R如何在线升级版本? 第一步:在R或者Rstudio中安装installr包 ...

  8. r语言for循环的c(),R语言中for循环的并行处理方式

    前言 本文用于记录笔者在将R语言中的for语句并行化处理中的一些问题. 实验 这里使用foreach和doParallel包提供的函数实现for语句的并行处理. for语句脚本 func return ...

  9. r语言中c函数错误,R语言中c()函数与paste()函数的区别说明

    c()函数:将括号中的元素连接起来,并不创建向量 paste()函数:连接括号中的元素 例如 c(1, 2:4),结果为1 2 3 4 paste(1, 2:4),结果为"1 2" ...

  10. r语言中的shiny教程_如何使用Shiny在R中编写Web应用程序

    r语言中的shiny教程 新年快乐! 这个月我忙于撰写一些较大的文章,因此请在接下来的几周内查找这些文章. 对于本月的Nooks和Crannies,我想简要指出一个我一直在用它进行自我教育的出色R库. ...

最新文章

  1. 程序物语(六):探寻你的与众不同之处
  2. 简单的串口助手程序开发
  3. 安装oracle 12c 还用装11g_oracle12c-RAC安装部署之GRID安装
  4. 电子设计基础——电源的各项指标及测量方法
  5. 排序算法——归并排序
  6. GitHub Actions使用学习最全文档
  7. mysql 报错1042_mysql安装中 starting sever报错1042怎么破啊??求助大佬
  8. LeetCode-260 Single Number III
  9. java接口自动化(一) - 接口自动化测试整体认知 - 开山篇(超详解)
  10. 日历获取当前月份的月数与当前月份第一天离第一个格子的位置。
  11. 中南天坑专业到武大计算机的考研分享~
  12. 【WEB服务器】什么是WEB服务器
  13. 电商app用户行为分析(含全过程python代码)
  14. 对于gabor变换和gabor小波变换理解与总结
  15. C语言深度剖析——关键字sizeof、整型数据存储深入、数据类型取值范围深入
  16. help efun matlab,Matlab优化工具箱在函数最值求解中的应用.pdf
  17. 五年磨一剑:滴滴顺风车服务端之稳定性规范
  18. Qt蓝牙:QBluetoothDeviceInfo、QBluetoothAddress
  19. 【STM32】PWM输出原理
  20. H5DU1262GTR-E3C特征

热门文章

  1. MySQL的show global variables like “%timeout%“;
  2. 2021年中国直播电商投融资情况及行业发展中存在的问题、发展趋势和对策分析[图]
  3. 数学建模5 代码论文降重 Excel表处理数据
  4. c语言九九乘法表倒三角问题,c语言问题九九乘法表
  5. SANGFOR SCSA——网络基础
  6. 通达OA 太牛了!工作流表单设计中级联菜单原来可以这样实现(图文)
  7. 冰点文库下载器,文库免费下载(唯一可用的版)
  8. golang db事务的统一封装
  9. xp大容量u盘补丁_老电脑上大硬盘补丁
  10. 模拟美萍加密狗--Rockey2虚拟狗(一)