【实用案例】R语言gdm函数实现地理探测器分析
R语言实现地理探测器分析
碎碎念
查看官网例子
代码
碎碎念
近由于学习需要,接触了地理探测器。地理探测器有Excel版和R语言版,起初我是用Excel试着做,地理探测器分析都需要先将数据离散化,而不同的离散化方法又会产生不同的分析结果,到底哪个才优不得而知,一个个去调试也太麻烦了,而且Excel版不适合数据量大的情况下分析,会出现卡顿、闪退的情况(也许是我的电脑太垃圾),所以我就摸索了一下R语言实现地理探测器分析的方法。
查看官网例子
地理探测器有4个部分:factor detector、interaction detector、risk detector、ecological detector,官网上有对这四个探测器分别用代码实现的语句,这里不做介绍。
GD包还提供了一个一步到位的函数gdm,实现数据优离散化选择方案,不用自己一个调试了。
#查询gdm函数使用方法
help("gdm")
1
2
输入上述语句就弹出gdm的使用方法页面,有两种:(其实官方给的代码已经非常详细、好懂了)
根据提供的具体案例进行尝试,发现案例中使用的数据集,有一列这样类型的值。
在我自己后续的尝试中,发现如果不添加这一种类型的数据,就会报错:
> aging <- gdm(Y ~ ., continuous_variable = continuous_variable, data = data4, discmethod = discmethod, discitv = discitv)
Error in if (qv12 < min(qv1, qv2)) { :
需要TRUE/FALSE值的地方不可以用缺少值
1
2
3
所以我也加了一列类似的数据,后面就成功了。要根据自己数据的实际情况哦。我的是统计年鉴数据,所以我添加的那一列就是各省的分区,用字母表示。顺便将代码分享给大家
代码
#安装“GD”包
#Load GD package
install.packages("GD")
library(GD)
#读取文件
testdata <- read.csv("E:/geodetector/data.csv", header = TRUE, sep = ",")
#GD包里有提供五种监督离散化方法,这行代码对空间数据进行离散化处理
discmethod <- c("equal","natural","quantile","geometric","sd")
#空间数据离散化分成3~7类,当然可以自己根据实际情况修改
discitv <- c(3:7)
#定义连续变量
#因为我的testdata都是统计年鉴上的数据,所以都都需要进行空间数据离散化处理
continuous_variable <- colnames(testdata)[-c(1,17)]
#调用gdm函数
testgdm <- gdm(Y ~ ., continuous_variable = continuous_variable, data = testdata, discmethod = discmethod, discitv = discitv)
#显示分析结果
testgdm
#显示分析图表
plot(testgdm)
————————————————
版权声明:本文为CSDN博主「_超快的闪电」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/weixin_41608080/article/details/114048972
相关文章