飞道的博客

【实用案例】R语言gdm函数实现地理探测器分析

733人阅读  评论(0)

R语言实现地理探测器分析

碎碎念

最近由于学习需要,接触了地理探测器。地理探测器有Excel版和R语言版,起初我是用Excel试着做,地理探测器分析都需要先将数据离散化,而不同的离散化方法又会产生不同的分析结果,到底哪个才最优不得而知,一个个去调试也太麻烦了,而且Excel版不适合数据量大的情况下分析,会出现卡顿、闪退的情况(也许是我的电脑太垃圾),所以我就摸索了一下R语言实现地理探测器分析的方法。

查看官网例子

地理探测器有4个部分:factor detector、interaction detector、risk detector、ecological detector,官网上有对这四个探测器分别用代码实现的语句,这里不做介绍。
GD包还提供了一个一步到位的函数gdm,实现数据最优离散化选择方案,不用自己一个调试了。

#查询gdm函数使用方法
help("gdm")

输入上述语句就弹出gdm的使用方法页面,有两种:(其实官方给的代码已经非常详细、好懂了)

根据提供的具体案例进行尝试,发现案例中使用的数据集,有一列这样类型的值。

在我自己后续的尝试中,发现如果不添加这一种类型的数据,就会报错:

> aging <- gdm(Y ~ ., continuous_variable = continuous_variable, data = data4, discmethod = discmethod, discitv = discitv)
Error in if (qv12 < min(qv1, qv2)) {
    : 
  需要TRUE/FALSE值的地方不可以用缺少值

所以我也加了一列类似的数据,后面就成功了。要根据自己数据的实际情况哦。我的是统计年鉴数据,所以我添加的那一列就是各省的分区,用字母表示。顺便将代码分享给大家

代码

#安装“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)

拜拜!


转载:https://blog.csdn.net/weixin_41608080/article/details/114048972
查看评论
* 以上用户言论只代表其个人观点,不代表本网站的观点或立场