R语言GD包地理探测器报错运行后无结果情况的解决方法
本文介绍在利用 R 语言的 GD 包,实现自变量最优离散化方法选取与执行、地理探测器(Geodetector)操作时,出现各类报错信息、长时间得不到结果等情况的解决方案。
在之前的文章R语言GD包对栅格图像加以地理探测器、参数自动离散化的操作中,我们介绍了基于 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) ,就可以正常运行不报错了。
当然,这种问题多是我们自身数据导致的。如下图所示,可以看到我这里某一列连续变量的值,很多都是完全一样的;那么在此时,如果我们的样本数过少,就可能导致这一个连续变量最多也只有2 到3 个不一样的数值;此时,我们在对其加以离散化的时候,肯定也就只能分为2 类或者3 类了;如果我们设置的discitv 参数的最小值大于这个变量可以分出的最大类别数,那么这里自然就会报错。此外,发现有的时候运行很久但是都得不到结果,似乎也和这个类别的数量设置的太大有关系。
因此,大家可以通过适当减少分类的类别数量的方法,尝试解决报错、长时间得不到结果问题。2.3 修改可选离散化方法
同时,也发现有些离散化方法在执行过程中,会出现某种类型的报错。如下图所示,我在运行地理探测器时出现报错,随后不断调整discmethod 参数;经过不断尝试,发现只要将自然间断点法"natural" 这个选项去掉,那么就可以正常运行了。
因此,大家可以通过不断修改待选择的离散化方法的手段,尝试解决报错问题。2.4 用单步骤函数
此外,如果大家只需要执行地理探测器中的某一项单独分析(例如只需要进行分异及因子探测),那么如果遇到报错的情况,可以尝试不要用GD 包一步就实现地理探测器的那个gdm() 函数,改用单步骤函数,例如先用optidisc() 函数执行连续变量的自动离散化,随后执行gd() 函数获得q 值。通过这种方法,我们可以缩小报错的范围,知道具体是哪一句代码或者哪一个部分的分析出现了错误,方便我们更好地开展错误排除工作。
以上,就是我总结出利用R语言的GD 包实现地理探测器操作时,不同的报错、运行很久得不到结果的解决方案;大家在遇到类似的问题时,可以参考这里提到的方法逐一加以尝试。如果实在是不行,大家可以考虑更换其他方式实现地理探测器分析,例如基于Excel实现地理探测器,大家可以参考地理探测器Geodetector软件下载、分析应用与结果解读;还可以基于R语言中的geodetector 包,大家可以参考R语言geodetector包实现栅格图像的地理探测器。
欢迎关注:疯狂学习GIS
45岁靳东打网球被偶遇!几缕白发尤为明显,穿红裤子洗到发白近日,有网友在网球场偶遇靳东,并在社交平台配文立冬,和法网大使打红土,也是引起了网友们的注意。照片中,靳东还是一如既往的帅气,尽管黑发中掺杂了几缕白发,范儿显得他更加具备成熟男性的
亨德森作为上赛季联赛杯冠军,本赛季首场比赛意味深长直播吧11月9日讯利物浦将在联赛杯第3轮和德比郡展开一场较量。亨德森在他的赛前笔记中谈到了联赛杯,并表示作为上赛季该赛事的冠军,接下来这场比赛有特殊的意义。亨德森写道我毫不怀疑今晚
中德英等多国院士学者齐聚!又一国际会议召开,阵容强大近日,由中国人工智能学会国际信息研究学会中国分会共同主办,西安电子科技大学承办的第五届智能科学国际会议(TheFifthInternationalConferenceonIntel
双11暗战成都为何抢得先机?每经记者杨弃非每经编辑刘艳美图片来源摄图网501236263双11进入第13个年头,相比以前的当日达次日达体验,今年快递公司们似乎更卷了,首单被统一刷新到分钟级别。快递提速背后,是
奇瑞鲍思语正确的发展方向才有良好的销售业绩在疫情的冲击下,百业萧条,各行各业的业绩大都显示出下滑迹象,有的甚至濒临绝境。奇瑞控股集团却在惨淡的市场里堪称一枝独秀,给出了一份令人眼前一亮的销售成绩单。根据奇瑞集团最近公布的销
人类祖先的往事你知多少?演化,是生物的必然属性。在自然环境中,生物通过基因突变产生新的品种,又在自然选择中留存下优良的品种,成为新的生物。人类进化起源于森林古猿,从灵长类经过漫长的进化过程一步一步发展而来
世界互联网领先科技成果发布活动9日举办光明日报讯(光明网记者王焕君)2022年世界互联网大会领先科技成果发布活动,将于11月9日17时在乌镇互联网国际会展中心举办。据了解,该活动呈现三大亮点国际范十足。世界互联网大会前
互联网科技赋能乌镇峰会助力牢握网络空间脉搏中国日报网11月9日电2022年世界互联网大会乌镇峰会于今日至11日举行。今年峰会以共建网络世界共创数字未来携手构建网络空间命运共同体为主题,以人工智能前沿技术大数据等方式为其赋能
未来办公将更灵活多元!科技应用可优化空间增强员工幸福感摘要未来办公的空间将更加复合多元。今年进博会服务贸易展区,许多参展商纷纷提及一个议题关于未来办公与未来人才。未来办公的空间将更加复合多元,而通过科技应用的加持,可优化办公内外部空间
自动驾驶上路试点加快商业化进程本报记者夏金彪自动驾驶是汽车产业未来转型升级的重要方向之一,已进入落地的关键期。目前,我国自动驾驶技术已并跑乃至领跑全球,自动驾驶上路运行和商业化运用成为行业关注的重点。近日,工信
币圈最凶险的战斗华人首富击落币圈马斯克,企业家战胜了交易员持续了三天的币圈惊天一战终于落幕,华人首富赵长鹏(CZ)精准击落币圈马斯克SBF,将FTX加密货币交易所收入囊中,而SBF近160亿的身家一夜之间灰飞烟灭。而早在三年前,CZ和SB