当前位置: 首页 > news >正文

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

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

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

1 所遇问题

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

在这里插入图片描述

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

在这里插入图片描述

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

在这里插入图片描述

  还有这一种:

在这里插入图片描述

  接下来,还有这一种:

在这里插入图片描述

  以及这一种:

在这里插入图片描述

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

在这里插入图片描述

2 解决方案

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

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

2.1 增大数据量

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

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包地理探测器分析时报错、得不到结果等情况的解决方案

本文介绍在利用R语言的GD包,实现自变量最优离散化方法选取与执行、地理探测器(Geodetector)操作时,出现各类报错信息、长时间得不到结果等情况的解决方案。 在之前的文章R语言GD包基于栅格图像实现地理探测器与连续参数的自动离散…...

嵌入式开发:你需要知道的5种简单

传达嵌入式软件体系结构设计意图通常伴随着基于嵌入式开发人员经验的假设。你可以从资源受限的基于微控制器的系统的角度来看架构设计。如何设计架构将取决于系统的嵌入式软件分类。有许多不同的方法可以对嵌入式软件进行分类。我发现有五种简单的嵌入式软件分类可以帮助我调整…...

MVC与MVVM

MVC与MVVM举例说明MVCMVVM两者比较MVC <!DOCTYPE html> <html><head><meta charset"utf-8"><meta http-equiv"X-UA-Compatible" content"IEedge"><title>mvc案例</title><link rel"styleshe…...

Cortex-M0异常和中断

目录1.概念2.异常类型3.异常优先级定义4.向量表5.异常流程概述接受异常请求压栈和出栈异常返回指令末尾连锁延迟到达6.EXC_RETURN7.异常入口流程的细节压栈取出向量并更新PC寄存器更新8.异常退出流程的细节1.概念 异常是能够引起程序流偏离正常流程的事件&#xff0c;当异常发…...

数据库(6)--存储过程

一、学习目标 熟悉存储过程的定义和使用&#xff0c;熟练运用 select ,update ,insert ,delete 命令完成对学生信息数据库的查询、更新、添加、删除操作。 二、学习内容 学生&#xff08;学号&#xff0c;年龄&#xff0c;性别&#xff0c;系名&#xff09; 课程&#xff08;…...

c++ 指针、引用和常量

指针、引用和常量的关系_夜悊的博客-CSDN博客 1. ① 指针是对象&#xff0c;引用不是对象&#xff08;在此可以理解为变量&#xff0c;一个变量是一个对象&#xff09; 指针不必须初始化引用只是为一个已经存在的对象所起的另一个名字&#xff08;别名&#xff09;&#xff…...

1、HAL库UART 中断|DMA 自动回显接收数据

1、实现代码&#xff1a; stm32f4xx_hal_conf.h文件开启UART宏定义 #define HAL_UART_MODULE_ENABLED添加stm32f4xx_hal_uart.c和stm32f4xx_hal_dma.c到自己工程&#xff1b; 编写好的代码&#xff1a;usart_Driver.c /***************************************************…...

NPOI - ConditionalFormattingRule

NPOI 给xls(xlsx)创建条件格式 获取 XSSFSheetConditionalFormatting 对象 初始化 IWorkbook _workbook new XSSFWorkbook(); ISheet _dataSheet _workbook.GetSheet("template"); ISheetConditionalFormatting fcs _dataSheet.SheetConditionalFormatting;调用…...

JavaのString类这一篇就够了(包含StringBuffer_Builder)

1.&#x1f957;String类简介 在我们写代码的时候&#xff0c;String总是充斥着前前后后。 但你会不会经常力不从心&#xff0c; “这个*** 字符串怎么** 转换不成功啊” “*** 这个字符串到底是常量还是对象啊” “这*** 字符串内存结构到底* * * 是什么啊” “为啥我的字符串…...

C# dataGridView 导出表格 xls NPOI 2.4.1 版本

using NPOI.HSSF.UserModel; using NPOI.SS.UserModel; try { SaveFileDialog fileDialog new SaveFileDialog(); fileDialog.Filter “Excel(97-2003)|*.xls”; if (fileDialog.ShowDialog() System.Windows.Forms.DialogResult.Cancel) { return; } //不允许dataGridView…...

秒杀项目的消息推送

目录 一、创建消费者 二、创建订单链路配置 1.定义RabbitMQ配置类 2.创建RabbitmqOrderConfig配置类 三、如何实现RabbitMQ重复投递机制 1.开启发送者消息确认模式 2.消息发送确认 ① 创建ConfirmCallBacker确认模式 ② 创建ReturnCallBack退回模式 3.创建生产者 …...

最近开发及 vue3 几个小总结

只是单纯记录一下最近维护了几个项目之后的感触&#xff0c;也只是在自己现在水平上面的一些感觉。发发牢骚&#xff0c;水水文章 是否过度封装 可能水平不够吧&#xff0c;在 axios 封装的时候&#xff0c;只是把响应和拦截还有一些全局的配置封装了一下&#xff0c;并没有加…...

代谢组学分享-花青素通过调节氨基酸代谢改善糖尿病肾病的肾功能

代谢组学文献分享&#xff0c;文章标题&#xff1a;Anthocyanin improves kidney function in diabetic kidney disease by regulating amino acid metabolism 发表期刊&#xff1a;Journal of Translational Medicine 影响因子&#xff1a;8.44 作者单位&#xff1a;中山大…...

超简单!pytorch入门教程:Tensor

超简单&#xff01;pytorch入门教程&#xff1a;Tensor 一、pytorch安装 安装pytorch之前&#xff0c;需要安装好python&#xff08;废话&#xff09;&#xff0c;还没安装过python的宝宝请先移步到廖雪峰的python教程&#xff0c;待安装熟悉完之后&#xff0c;再过来这边。 …...

如何使用COCO数据集,注意事项

COCO数据集可用来训练目标检测&#xff0c;分类&#xff0c;实例分割等。 下面简单说下如何使用这个数据集&#xff0c; 数据集下载可用如下的代码进行&#xff0c;以2017为例。 # Download the image data. cd ./images echo "Downloading MSCOCO train images ...&quo…...

金三银四跳槽季,JAVA面试撸题就来【笑小枫】微信小程序吧~

JAVA面试撸题就来【笑小枫】微信小程序啦~ 疫情已过&#xff0c;金三银四即将到来&#xff0c;小伙伴们是否有跳槽的打算呢&#xff1f;不管有没有&#xff0c;技术不能丢&#xff0c;让我们一起来撸题吧。 博主最近整理了一批面试题&#xff0c;包括JAVA基础、多线程与锁、Red…...

分享115个HTML电子商务模板,总有一款适合您

分享115个HTML电子商务模板&#xff0c;总有一款适合您 115个HTML电子商务模板下载链接&#xff1a;https://pan.baidu.com/s/158y3jP0tv7ZikxNOBMKsSg?pwdt970 提取码&#xff1a;t970 Python采集代码下载链接&#xff1a;采集代码.zip - 蓝奏云 import os import shuti…...

Python 字符串

字符串是 Python 中最常用的数据类型。我们可以使用引号 ( 或 " ) 来创建字符串。创建字符串很简单&#xff0c;只要为变量分配一个值即可。例如&#xff1a;var1 Hello World!var2 "Python Runoob"Python 访问字符串中的值Python 不支持单字符类型&#xff…...

总线定义,车载总线:车载etherNet or CAN

总线的定义总线是连接多个设备或者接入点的数据传输通路。这里面的关键词是多个设备或者接入点&#xff0c;所以不要过于局限的看待总线。根据互联的设备/接入点不同&#xff0c;传输的数据带宽&#xff0c;速率&#xff0c;距离不同和应用场景的不同都可能有不同的总线。不同的…...

Python(for和while)循环嵌套及用法

Python 不仅支持 if 语句相互嵌套&#xff0c;while 和 for 循环结构也支持嵌套。 所谓嵌套&#xff08;Nest&#xff09;&#xff0c;就是一条语句里面还有另一条语句&#xff0c;例如 for 里面还有 for&#xff0c;while 里面还有 while&#xff0c;甚至 while 中有 for 或者…...

网络编程(Modbus进阶)

思维导图 Modbus RTU&#xff08;先学一点理论&#xff09; 概念 Modbus RTU 是工业自动化领域 最广泛应用的串行通信协议&#xff0c;由 Modicon 公司&#xff08;现施耐德电气&#xff09;于 1979 年推出。它以 高效率、强健性、易实现的特点成为工业控制系统的通信标准。 包…...

使用docker在3台服务器上搭建基于redis 6.x的一主两从三台均是哨兵模式

一、环境及版本说明 如果服务器已经安装了docker,则忽略此步骤,如果没有安装,则可以按照一下方式安装: 1. 在线安装(有互联网环境): 请看我这篇文章 传送阵>> 点我查看 2. 离线安装(内网环境):请看我这篇文章 传送阵>> 点我查看 说明&#xff1a;假设每台服务器已…...

[ICLR 2022]How Much Can CLIP Benefit Vision-and-Language Tasks?

论文网址&#xff1a;pdf 英文是纯手打的&#xff01;论文原文的summarizing and paraphrasing。可能会出现难以避免的拼写错误和语法错误&#xff0c;若有发现欢迎评论指正&#xff01;文章偏向于笔记&#xff0c;谨慎食用 目录 1. 心得 2. 论文逐段精读 2.1. Abstract 2…...

srs linux

下载编译运行 git clone https:///ossrs/srs.git ./configure --h265on make 编译完成后即可启动SRS # 启动 ./objs/srs -c conf/srs.conf # 查看日志 tail -n 30 -f ./objs/srs.log 开放端口 默认RTMP接收推流端口是1935&#xff0c;SRS管理页面端口是8080&#xff0c;可…...

DIY|Mac 搭建 ESP-IDF 开发环境及编译小智 AI

前一阵子在百度 AI 开发者大会上&#xff0c;看到基于小智 AI DIY 玩具的演示&#xff0c;感觉有点意思&#xff0c;想着自己也来试试。 如果只是想烧录现成的固件&#xff0c;乐鑫官方除了提供了 Windows 版本的 Flash 下载工具 之外&#xff0c;还提供了基于网页版的 ESP LA…...

土地利用/土地覆盖遥感解译与基于CLUE模型未来变化情景预测;从基础到高级,涵盖ArcGIS数据处理、ENVI遥感解译与CLUE模型情景模拟等

&#x1f50d; 土地利用/土地覆盖数据是生态、环境和气象等诸多领域模型的关键输入参数。通过遥感影像解译技术&#xff0c;可以精准获取历史或当前任何一个区域的土地利用/土地覆盖情况。这些数据不仅能够用于评估区域生态环境的变化趋势&#xff0c;还能有效评价重大生态工程…...

HTML前端开发:JavaScript 常用事件详解

作为前端开发的核心&#xff0c;JavaScript 事件是用户与网页交互的基础。以下是常见事件的详细说明和用法示例&#xff1a; 1. onclick - 点击事件 当元素被单击时触发&#xff08;左键点击&#xff09; button.onclick function() {alert("按钮被点击了&#xff01;&…...

selenium学习实战【Python爬虫】

selenium学习实战【Python爬虫】 文章目录 selenium学习实战【Python爬虫】一、声明二、学习目标三、安装依赖3.1 安装selenium库3.2 安装浏览器驱动3.2.1 查看Edge版本3.2.2 驱动安装 四、代码讲解4.1 配置浏览器4.2 加载更多4.3 寻找内容4.4 完整代码 五、报告文件爬取5.1 提…...

Rapidio门铃消息FIFO溢出机制

关于RapidIO门铃消息FIFO的溢出机制及其与中断抖动的关系&#xff0c;以下是深入解析&#xff1a; 门铃FIFO溢出的本质 在RapidIO系统中&#xff0c;门铃消息FIFO是硬件控制器内部的缓冲区&#xff0c;用于临时存储接收到的门铃消息&#xff08;Doorbell Message&#xff09;。…...

Java + Spring Boot + Mybatis 实现批量插入

在 Java 中使用 Spring Boot 和 MyBatis 实现批量插入可以通过以下步骤完成。这里提供两种常用方法&#xff1a;使用 MyBatis 的 <foreach> 标签和批处理模式&#xff08;ExecutorType.BATCH&#xff09;。 方法一&#xff1a;使用 XML 的 <foreach> 标签&#xff…...