本文介绍在利用R语言的GD包,实现自变量最优离散化方法选取与执行、地理探测器Geodetector)操作时,出现各类报错信息、长时间得不到结果等情况的解决方案。

  在之前的文章R语言GD包基于栅格图像实现地理探测器与连续参数的自动离散化(https://blog.csdn.net/zhebushibiaoshifu/article/details/128538199)中,我们介绍了基于R语言的GD包,实现地理探测器的详细方法——当时在进行前面这一篇文章所述操作的过程中,我暂时没有遇到莫名运行报错、失败的问题;而在后来,依据同样的方法对另一批数据加以地理探测器处理时,就遇见了各种各样的报错。

1 所遇问题

  其中,最为常见的一种报错信息如下图所示。

  此外,还有一种在网上也有很多用户遇到的报错信息。

  除此之外,我还先后遇到了其他类型的报错,如下图所示。

  还有这一种:

  接下来,还有这一种:

  以及这一种:

  此外,有时候在运行时,还会出现很久都得不到结果的情况。如下图所示,我当时需要对多个文件夹内的栅格图像文件分别加以地理探测器操作,为了方便了解程序运行进度,就添加了一些输出语句;而此时发现,对于某些文件夹的数据,在进行地理探测器代码的运行时,其会在一个地方一直卡住,也不报错,但是也不会继续往下进行。

2 解决方案

  经过无数次的重复、尝试,终于找到了在利用R语言GD包进行地理探测器分析时,出现各类报错、卡顿问题的大致解决方案——当然,这里也提到了是“大致”的解决方案,因为这里具体出错的原因我也不是很清楚,并且每一种报错信息的问题所在也是不一致的,因此不能保证大家在实践过程中按照这里给出的解决方法一定可以成功解决问题;但是本文所给出的解决方案的思路,大家还是可以适当参考、加以尝试的。

  首先,通过逐步骤运行代码,发现几乎全部的问题,都出在连续变量的最优离散化方法选取与执行这一步上,而并不是后期的地理探测器具体分析步骤上。其次,结合这无数次的重复,总结出一些经验如下。

2.1 增大数据量

  首先,针对出现红色字体的报错问题,发现只要数据量足够大,几乎可以解决一切问题。在一开始第一次用GD包进行地理探测器分析时,我当时的分析数据共有十几列,行数高达几十万行;而后来开始遇到这些报错问题的时候,我的分析数据列数没有变,但是样本数量变少了,大概只有几千行,少数甚至只有几百行。这个是行数,也就是样本数量;而对于列数同样是如此——在网上看到有用户增添了分析数据的变量数列数)后,同样可以消除报错情况。因此,看来在数据量足够大时,很多报错信息都不会出现;而在数据量比较小的时候,才有可能出现各类报错问题。因此,如果条件允许,建议大家先提升数据量试一下。

  不过这里还有一点,就是如果大家的数据量已经很大了,但是却又出现一直运行不报错但是也得不到结果的情况;此时需要将类别数量discitv参数)的区间设置的小一些——比如原本是c(3:12),这个范围太大了,运行起来确实很慢;可以改成比如c(7:8),就可以快很多。

2.2 减少类别数量

  其次,同时发现有的时候将连续变量离散化参数中的discitv,也就是类别的数量适当调小,也会解决一些报错。如下图所示,原本我的discitv参数设置的是c(7:8),而后运行代码出现红色的报错提示;随后尝试将discitv参数设置为c(3:8),就可以正常运行不报错了。

  当然,这种问题多是我们自身数据导致的。如下图所示,可以看到我这里某一列连续变量的值,很多都是完全一样的;那么在此时,如果我们的样本数过少,就可能导致这一个连续变量最多也只有23个不一样的数值;此时,我们在对其加以离散化的时候,肯定也就只能分为2类或者3类了;如果我们设置的discitv参数的最小值大于这个变量可以分出的最大类别数,那么这里自然就会报错。此外,发现有的时候运行很久但是都得不到结果,似乎也和这个类别的数量设置的太大有关系。

  因此,大家可以通过适当减少分类的类别数量的方法,尝试解决报错、长时间得不到结果问题。

2.3 修改可选离散化方法

  同时,也发现有些离散化方法在执行过程中,会出现某种类型的报错。如下图所示,我在运行地理探测器时出现报错,随后不断调整discmethod参数;经过不断尝试,发现只要将自然间断点法"natural"这个选项去掉,那么就可以正常运行了。

  因此,大家可以通过不断修改待选择的离散化方法的手段,尝试解决报错问题。

2.4 用单步骤函数

  此外,如果大家只需要执行地理探测器中的某一项单独分析(例如只需要进行分异及因子探测),那么如果遇到报错的情况,可以尝试不要用GD包一步就实现地理探测器的那个gdm()函数,改用单步骤函数,例如先用optidisc()函数执行连续变量的自动离散化,随后执行gd()函数获得q值。通过这种方法,我们可以缩小报错的范围,知道具体是哪一句代码或者哪一个部分的分析出现了错误,方便我们更好地开展错误排除工作。

  以上,就是我总结出利用R语言的GD包实现地理探测器操作时,不同的报错、运行很久得不到结果的解决方案;大家在遇到类似的问题时,可以参考这里提到的方法逐一加以尝试。如果实在是不行,大家可以考虑更换其他方式实现地理探测器分析,例如基于Excel实现地理探测器,大家可以参考Geodetector软件下载、地理探测器的应用实践与结果解读(https://blog.csdn.net/zhebushibiaoshifu/article/details/124526189);还可以基于R语言中的geodetector包,大家可以参考R语言geodetector包基于栅格图像实现地理探测器操作(https://blog.csdn.net/zhebushibiaoshifu/article/details/128484786)。

欢迎关注:疯狂学习GIS

R语言GD包地理探测器分析时报错、得不到结果等情况的解决方案相关推荐

  1. R语言GD包基于栅格图像实现地理探测器与连续参数的自动离散化

      本文介绍基于R语言中的GD包,依据栅格影像数据,实现自变量最优离散化方法选取与执行,并进行地理探测器(Geodetector)操作的方法.   首先,在R语言中进行地理探测器操作,可通过geode ...

  2. R-GIS: 如何用R语言实现GIS地理空间分析及模型预测

    前言:随着地理信息系统(GIS)和大尺度研究的发展,空间数据的管理.统计与制图变得越来越重要.R语言在数据分析.挖掘和可视化中发挥着重要的作用,其中在空间分析方面扮演着重要角色,与空间相关的包的数量也 ...

  3. r语言 bsda包_使用R语言creditmodel包进行Vintage分析或留存率分析

    1 什么是vintage分析? Vintage分析(账龄分析法)被广泛应用于信用卡及信贷行业,这个概念起源于葡萄酒,即不同年份出产的葡萄酒的品质有差异,那么不同时期开户或者放款的资产质量也有差异,其核 ...

  4. 细思极恐——R语言forestplot包画meta分析群体药动学常用森林图

    细思极恐--R语言forestplot包画meta分析群体药动学常用森林图 今天,笔者想分享一下最近科研作图的经历,最主要的就是用于群体药动学模型建立的森林图,其百度百科定义为: 森林图是以统计指标和 ...

  5. 使用R语言creditmodel包进行Vintage分析或留存率分析

    1 什么是vintage分析? Vintage分析(账龄分析法)被广泛应用于信用卡及信贷行业,这个概念起源于葡萄酒,即不同年份出产的葡萄酒的品质有差异,那么不同时期开户或者放款的资产质量也有差异,其核 ...

  6. R语言DEDeq2包进行RNA-seq分析总结

    最近在学习DESeq2包进行RNA-seq分析,并画火山图,分析代码总结如下: rm(list = ls()) options(stringsAsFactors = F)## 读入counts数据 e ...

  7. R语言geodetector包基于栅格图像实现地理探测器操作

      本文介绍基于R语言中的geodetector包,依据多张栅格图像数据,实现地理探测器(Geodetector)操作的详细方法.   需要说明的是,在R语言中进行地理探测器操作,可以分别通过geod ...

  8. [置顶]R语言 ggplot2包

    R语言  ggplot2包的学习 分析数据要做的第一件事情,就是观察它.对于每个变量,哪些值是最常见的?值域是大是小?是否有异常观测? ggplot2图形之基本语法: ggplot2的核心理念是将绘图 ...

  9. c语言 r语言 java,R语言rJava包安装载入及JAVA环境配置

    rJava 包的安装与载入 一般文本分词的教程都会贴出: install.packages("rJava") library(rJava) 来引导我们装载rJava包,运行inst ...

最新文章

  1. (30)导入时如何定制spring-boot依赖项的版本【转载】【从零开始学Spring Boot】...
  2. 网站建设需要抠好每一个细节
  3. ResNeXt——与 ResNet 相比,相同的参数个数,结果更好:一个 101 层的 ResNeXt 网络,和 200 层的 ResNet 准确度差不多,但是计算量只有后者的一半...
  4. 云服务器搭建代挂,服务器上搭建个人博客
  5. C#互操作性平台调用基础知识
  6. 新建子窗体 1124
  7. python爬虫开发环境中几个爬虫库的主要用途_分分钟了解Python爬虫
  8. PHP特级课视频教程_第二集 网站大数据存储_李强强
  9. Python实现主成分分析(PCA)降维:原理及实例分析
  10. CentOS 6.9修改网卡名eth1为eth0
  11. Redis学习与实战之列表
  12. 初中数学最全几何模型_初中数学几何模型大全+经典题型(含答案)
  13. 02web前端笔试题
  14. 人类记忆系统之谜,或许是这样一回事
  15. 快播宣称将转型关闭QVOD服务器
  16. 使用memcpy函数的耗时测试(拷贝不同大小数据量耗时不同)
  17. Deepin20安装和配置NVIDIA显卡驱动
  18. 结对编程-四则运算-题目去重
  19. Novell云计算大会在京开幕
  20. ANTLR4 入门学习(一):下载和测试

热门文章

  1. 深入浅出通信原理连载1-21(Python代码版)
  2. VS2017 winform开发知识点汇总
  3. linux降级安装补丁,Adobe Shockwave Player降级安装漏洞
  4. 计算机组成原理求地址范围,计算机组成原理,寻址范围是什么意思?
  5. java程序员从笨鸟到菜鸟之(十五)StringBuffer类练习题
  6. TROPOMI(哨兵5P)数据介绍及下载方法
  7. 遗传算法(GA)的原理简介与应用【python实现】
  8. C#游戏编程之创建一个简单的卷轴射击游戏
  9. VS2008 MFC类库精讲:使用MFC V9.0类库及新版Office Fluent UI实现CAD系统
  10. ubuntu 单网卡 安装lede作旁路由