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

  首先,在R语言中进行地理探测器操作,可通过geodetector包、GD包等2个包实现。其中,geodetector包是地理探测器模型的原作者团队开发的,其需要保证输入的自变量数据已经全部为类别数据;其具体操作方法大家可以参考地理探测器R语言实现:geodetector。而GD包则是另一位学者开发的,其可自动实现自变量数据最优离散化方法选取与执行;本文介绍的就是基于GD包实现地理探测器的具体操作。此外,如果希望基于Excel实现地理探测器,大家可以参考地理探测器Geodetector下载、使用、结果分析方法

1 包的安装与导入

  首先,我们可以先到GD包在R语言中的官方网站,大致了解一下该包的简要介绍、开发团队等基本信息。

  随后,我们开始GD包的下载与安装。输入如下所示的代码,即可开始包的下载与安装过程。

install.packages("GD")

  输入代码后,按下回车键,运行代码;如下图所示。在安装GD包时,会自动将其所需依赖的其他包(如果在此之前没有配置过)都一并配置好,非常方便。

  接下来,输入如下的代码,将GD包导入。

library("GD")

  输入代码后,按下回车键,运行代码;如下图所示。

2 数据读取与预处理

  接下来,我们需要读取栅格图像数据,并将其转为GD包可以识别的数据框Data Frames)格式。

  其中,读取栅格数据的方法,大家参考基于R语言的raster包读取遥感影像即可;关于数据格式的转换,大家参考地理探测器R语言实现:geodetector即可。这一部分的内容本文就不再赘述。

3 地理探测器执行

  接下来,我们就可以开始地理探测器的具体分析;强烈建议大家基于GD包中的gdm()函数,实现一步到位的地理探测器分析操作。

  首先,如果大家输入数据中的自变量数据具有连续变量,需要将其转换为类别变量gdm()函数可以实现连续变量离散化方式寻优自动执行。其中,我们可以选择的离散化方式包括相等间隔法自然间断点法分位数分类法几何间隔法标准差法5种不同的方法,分别对应以下第一句代码中的"equal""natural""quantile""geometric""sd"5个选项。此外,我们还可以依据数据的特征,对自变量离散化的类别数量加以限定,具体代码如下所示。

discmethod <- c("equal", "natural", "quantile", "geometric", "sd")
discitv <- c(4:10)

  其中,上述第一句代码表示,我们后续将从相等间隔法自然间断点法分位数分类法几何间隔法标准差法5种不同的方法中,找到每一个连续变量对应的最优离散化方法;第二句代码则表示,在后续寻找最优离散化方法的同时,还需要对每一个变量的分类数量加以寻优——c(4:10)就表示我们分别将每一个连续变量分为4类、5类、6类,以此类推,一直到10类,从其中找到最优结果对应的类别数量

  接下来,我们即可调用gdm()函数,执行地理探测器分析的具体操作;其中,my_gd为保存地理探测器结果的变量;函数的第一个参数,表示因变量与自变量的关系,~前的变量即为因变量~后的变量即为自变量,多个自变量之间通过+相连接;第二个参数表示自变量中的连续变量,程序将自动对这些连续变量加以离散化方法寻优与执行;第三个参数表示存储自变量与因变量数据的数据框Data Frames)格式的变量;最后两个变量,即为前面我们选择的离散化方法类别数量

my_gd <- gdm(A_LCCS0 ~ C_SlopeS0 + D_AspectS0 + DEM_Reclass + F_LCS0,
continuous_variable = c("C_SlopeS0", "D_AspectS0"),
data = tif_frame,
discmethod = discmethod,
discitv = discitv)

  这里需要注意,如果大家不是通过脚本运行的R语言,而是每次写一句代码然后按下回车键运行一下,那么上述代码中的换行就需要通过同时按下Shift键与回车键实现。输入上述代码后,如下图所示。

  随后,即可运行代码。稍等片刻(具体时长与数据量有关),即可得到地理探测器的结果my_gd。这一变量的具体结构、内容如下图所示。

  我们可以输入如下的代码,将变量my_gd打印出来。

my_gd

  所得结果如下图所示。

  可以看到,my_gd变量包含了每一个连续变量在离散化后,对应的最优离散化方法类别数量,以及地理探测器的各个分析结果。具体结果的含义与研读方法,大家参考地理探测器Geodetector下载、使用、结果分析方法,以及地理探测器R语言实现:geodetector这两篇文章即可,这里就不再赘述。

  此外,我们可以通过如下的代码,将上述结果加以可视化。

plot(my_gd)

  运行上述代码,结果如下图所示。

  此时,在RStudio软件的右下方“Plots”中,即可看到可视化结果,如下图所示。其中,我们可以通过下图中红色方框内的箭头,实现不同图片的切换显示。

  上述结果包含7张图像,其分别与上上图中的7项输出内容对应——第一张图是最优离散化方法的选取过程,第二张图则是所选出的最优离散化方法对应的分类情况;后5张图就是地理探测器的分析结果图,即上上图中最后5plot分别对应的结果。

  至此,我们就完成了基于R语言中的GD包,依据多张栅格图像数据,实现类别变量的自动离散化,并进行地理探测器Geodetector)操作的完整流程。

基于R语言的GD库实现地理探测器并自动将连续变量转为类别变量的更多相关文章

  1. 概率图模型 基于R语言 这本书中的第一个R语言程序

    概率图模型 基于R语言 这本书中的第一个R语言程序 prior <- c(working =0.99,broken =0.01) likelihood <- rbind(working = ...

  2. 基于R语言的时间序列指数模型

    时间序列: (或称动态数列)是指将同一统计指标的数值按其发生的时间先后顺序排列而成的数列.时间序列分析的主要目的是根据已有的历史数据对未来进行预测.(百度百科) 主要考虑的因素: 1.长期趋势(Lon ...

  3. 基于R语言的ARIMA模型

    A IMA模型是一种著名的时间序列预测方法,主要是指将非平稳时间序列转化为平稳时间序列,然后将因变量仅对它的滞后值以及随机误差项的现值和滞后值进行回归所建立的模型.ARIMA模型根据原序列是否平稳以及 ...

  4. Twitter基于R语言的时序数据突变检测(BreakoutDetection)

    Twitter开源的时序数据突变检测(BreakoutDetection),基于无参的E-Divisive with Medians (EDM)算法,比传统的E-Divisive算法快3.5倍以上,并 ...

  5. [R语言] 基于R语言实现环状条形图的绘制

    环状条形图(Circular barplot)是条形图的变体,图如其名,环状条形图在视觉上很吸引人,但也必须小心使用,因为环状条形图使用的是极坐标系而不是笛卡尔坐标系,每一个类别不共享相同的Y轴.环状 ...

  6. 中文分词实践(基于R语言)

    背景:分析用户在世界杯期间讨论最多的话题. 思路:把用户关于世界杯的帖子拉下来.然后做中文分词+词频统计,最后将统计结果简单做个标签云.效果例如以下: 兴许:中文分词是中文信息处理的基础.分词之后.事 ...

  7. [R语言] 基于R语言实现树形图的绘制

    树状图(或树形图)是一种网络结构.它由一个根节点组成,根节点产生由边或分支连接的多个节点.层次结构的最后一个节点称为叶.本文主要基于R语言实现树形图的绘制.关于python实现树形图的绘制见:基于ma ...

  8. 基于R语言的结构方程:lavaan简明教程 [中文翻译版]

    lavaan简明教程 [中文翻译版] 译者注:此文档原作者为比利时Ghent大学的Yves Rosseel博士,lavaan亦为其开发,完全开源.免费.我在学习的时候顺手翻译了一下,向Yves的开源精 ...

  9. 【转】基于R语言构建的电影评分预测模型

    一,前提准备         1.R语言包:ggplot2包(绘图),recommenderlab包,reshape包(数据处理)         2.获取数据:大家可以在明尼苏达州大学的社会化计算研 ...

  10. 机器学习-线性回归(基于R语言)

    基本概念 利用线性的方法,模拟因变量与一个或多个自变量之间的关系.自变量是模型输入值,因变量是模型基于自变量的输出值. 因变量是自变量线性叠加和的结果. 线性回归模型背后的逻辑——最小二乘法计算线性系 ...

随机推荐

  1. NC223888 红色和紫色.md

    题目链接 题目 题目描述 漫长的生命总是无聊的.这天,小红和紫准备玩一个染色游戏. 她们拿出了一个有 \(n*m\) 个格子的网格,每个格子只能被染成红色或紫色.每个人可以任意选择一个格子染成红色和紫 ...

  2. 48.DRF版本控制

    版本控制 版本控制是前后端分离开发一个非常重要的内容,比如说我们重要服务修改.升级等发生版本变化v1.v2.v3等,但是版本发生了变化比如 v1升级到了v2版本,v1版本还有业务在继续使用,相当于同时 ...

  3. Oracle Linux6下安装Oracle 12c实战

    经过N次安装尝试吐血总结,希望对大家有所帮助,同时做下记录备忘: 总结:安装前的准备工作是关键!!!Check and recheck! 参考:http://docs.oracle.com/cd/E1 ...

  4. [BUUCTF][WEB][ACTF2020 新生赛]Upload 1

    打开靶机url,右键查看网页源代码 其中有一段代码 <div class="light"><span class="glow"> < ...

  5. 掌握C语言指针,轻松解锁代码高效性与灵活性

    欢迎大家来到贝蒂大讲堂 养成好习惯,先赞后看哦~ 所属专栏:C语言学习 贝蒂的主页:Betty's blog 1. 指针与地址 1.1 概念 我们都知道计算机的数据必须存储在内存里,为了正确地访问这些 ...

  6. Gin框架使用jwt-go配合中间件认证

    参考文档 // 文档 https://github.com/golang-jwt/jwt https://pkg.go.dev/github.com/golang-jwt/jwt@v3.2.2+inc ...

  7. django中一些快捷函数

    1.get_object_or_404() 接收两个参数,参数1为模型类,参数2为查询参数 查询到对象则返回对象,查询不到则返回http404,但是不会返回模型的DoesNotExist异常 示例: ...

  8. iOS的Runtime知识点繁杂难啃,真的理解它的思想,你就豁然开朗了

    一.Runtime 1.概念: 概念:Runtime是Objective-c语言动态的核心,即运行时.在面向对象的基础上增加了动态运行,达到很多在编译时确定方法推迟到了运行时,从而达到动态修改.确定. ...

  9. 记一次酣畅淋漓的 K8s Ingress 排错过程(302,404,503,...)

    故事开始 第 1 关:[流量重定向到 /] 第 2 关:[应用返回 302,重定向到 /,引入 503 错误] 第 3 关:[静态资源访问遇到 503 问题] 第 4 关:[静态资源访问遇到 403 ...

  10. 【Azure Developer】在Azure Storage Account的两个Blob可以同步吗?可以跨订阅拷贝吗?

    问题描述 不同订阅下的Azure Storage Account中Blob资源可以同步吗? 解决方案 可以.通过Azure 官方推荐的Storage Account工具来完成 Copy/Paste 操 ...