使用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(残差平方和, ),但是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模型的相关运算相关推荐
- R语言中的igraph包绘制网络图
本文转自网络. R语言中的igraph包可以很方便地画出网络图,在社交关系分析等领域发挥重要作用,下面介绍包中一个重要的函数graph_from_data_frame(). graph_from_da ...
- 1071svm函数 r语言_如何利用R语言中的rpart函数建立决策树模型
决策树是根据若干输入变量的值构造出一个适合的模型,以此来预测输出变量的值,并用树形结构展示出来.决策树主要有两个类别:分类树和回归树.分类树主要针对离散的目标变量,回归树则针对连续的目标变量.R语言中 ...
- R语言中quantmod金融分析包的实践
本文是自己在学习R中的学习笔记: 该文主要包括如下几各方面: 一 .获取国内股市的综合指数:二.获取个股股票交易数据yahoo:三.获取汇率信息oanda:四.获取财务报表google:五.获取股息数 ...
- R语言中的Rwordseg包详细使用教材
中文分词一直是一个不大容易解决的问题,Rwordseg包是一个很不错的包,之前的tm包效果实际不是很理想,当然还出现了一个jiebaR的包,这个跟python中的jieba有点像,不说了,具体上代码看 ...
- R语言中GCC编译的问题(续)
这篇文章承接R语言中GCC编译的问题,这篇文章主要解决我在Linux系统上安装"expm"出现的问题. 出现的问题 这个问题非常的有趣,因为我在两台服务器分别安装同一个包,其中一台 ...
- R语言中的apply函数族
原文出处:http://blog.fens.me/r-apply/ 前言 刚开始接触R语言时,会听到各种的R语言使用技巧,其中最重要的一条就是不要用循环,效率特别低,要用向量计算代替循环计算. 那么, ...
- 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包 ...
- r语言for循环的c(),R语言中for循环的并行处理方式
前言 本文用于记录笔者在将R语言中的for语句并行化处理中的一些问题. 实验 这里使用foreach和doParallel包提供的函数实现for语句的并行处理. for语句脚本 func return ...
- r语言中c函数错误,R语言中c()函数与paste()函数的区别说明
c()函数:将括号中的元素连接起来,并不创建向量 paste()函数:连接括号中的元素 例如 c(1, 2:4),结果为1 2 3 4 paste(1, 2:4),结果为"1 2" ...
- r语言中的shiny教程_如何使用Shiny在R中编写Web应用程序
r语言中的shiny教程 新年快乐! 这个月我忙于撰写一些较大的文章,因此请在接下来的几周内查找这些文章. 对于本月的Nooks和Crannies,我想简要指出一个我一直在用它进行自我教育的出色R库. ...
最新文章
- 程序物语(六):探寻你的与众不同之处
- 简单的串口助手程序开发
- 安装oracle 12c 还用装11g_oracle12c-RAC安装部署之GRID安装
- 电子设计基础——电源的各项指标及测量方法
- 排序算法——归并排序
- GitHub Actions使用学习最全文档
- mysql 报错1042_mysql安装中 starting sever报错1042怎么破啊??求助大佬
- LeetCode-260 Single Number III
- java接口自动化(一) - 接口自动化测试整体认知 - 开山篇(超详解)
- 日历获取当前月份的月数与当前月份第一天离第一个格子的位置。
- 中南天坑专业到武大计算机的考研分享~
- 【WEB服务器】什么是WEB服务器
- 电商app用户行为分析(含全过程python代码)
- 对于gabor变换和gabor小波变换理解与总结
- C语言深度剖析——关键字sizeof、整型数据存储深入、数据类型取值范围深入
- help efun matlab,Matlab优化工具箱在函数最值求解中的应用.pdf
- 五年磨一剑:滴滴顺风车服务端之稳定性规范
- Qt蓝牙:QBluetoothDeviceInfo、QBluetoothAddress
- 【STM32】PWM输出原理
- H5DU1262GTR-E3C特征
热门文章
- MySQL的show global variables like “%timeout%“;
- 2021年中国直播电商投融资情况及行业发展中存在的问题、发展趋势和对策分析[图]
- 数学建模5 代码论文降重 Excel表处理数据
- c语言九九乘法表倒三角问题,c语言问题九九乘法表
- SANGFOR SCSA——网络基础
- 通达OA 太牛了!工作流表单设计中级联菜单原来可以这样实现(图文)
- 冰点文库下载器,文库免费下载(唯一可用的版)
- golang db事务的统一封装
- xp大容量u盘补丁_老电脑上大硬盘补丁
- 模拟美萍加密狗--Rockey2虚拟狗(一)