查看原文
其他

地理探测器学习与应用(二)

走天涯徐小洋 走天涯徐小洋地理数据科学 2022-05-17

地理探测器学习与应用(二)

上一次推文中我们讲了地理探测器的一些基本原理,这次我们来尝试按照王老师论文中给的方法和数据进行一些应用。由于我对R比较熟悉,所以这次以R语言为例进行实验。

地理探测器学习与应用(一)

地理探测器R包

地理探测器已由徐成东老师主导,做好了一个R包(geodetector)发布在了CRAN,大家可以通过文末阅读原文跳转CRAN地理探测器包所在页面。

地理探测器R包安装

可以直接使用RStudio安装R包,具体的R语言安装可以参考下面的图片,跳转对应推文阅读。

地理探测器R包安装

地理探测器包所需的包

R语言中,一个包的功能往往还需要其它包来支撑,地理探测器包也不例外。地理探测器需要以下包的支持:

sp (≥ 1.2-7), rgeos (≥ 0.3-26), rgdal (≥ 1.2-16), maptools

正常情况下,R语言安装geodetector的时候会自动将所需的其它包安装上,但是有时候可能会因为一些错误无法完成安装,这个时候就需要我们手动先将上面的四个包安装完后,再安装geodetector

应用案例:新生儿神经管畸形空间变异的环境因子识别

这个案例是王老师论文中的第一个案例,同时对应的数据也打包到了R包里面,作为实例案例。接下来我们根据这个案例来看一看detector包是如何工作的。

加载包并查看数据

使用下面语句加载geodetector包,加载练习数据CollectData

library(geodetector)
data("CollectData")

加载数据后,我们发现,这是一个185行,4列的数据框

我截取了两行数据,进行了一下解释:

Y因变量X1自变量X2自变量X3自变量
incidencewatershedsoiltypeelevation
数值量类型量类型量类型量
7.20236
7.01236

接下来我们一个一个看地理探测器的四个探测功能,为了和地理探测器学习与应用(一)文中介绍的顺序保持一致,我就不按R包帮助顺序讲了。好,我们一个一个看。

1. 分异及因子探测

下面的语句是单因子探测,针对CollectData数据框中的土壤类型(soiltype)自变量,探测对发病率(incidence)的解释力。

factor_detector("incidence","soiltype",CollectData)

运行完后,输出如下结果,可以看出,土壤类型的q值为0.3857168,p值较大,由此可知,土壤类型对发病率的解释力较低,土壤类型和新生儿神经管畸形发病率的关系不大。

运行结果

地理探测器同时可以探测多个因子对于因变量的解释力,代码示例如下:

factor_detector (1,c(2,3,4),CollectData)

由下图可以看出,地理探测器给出了三个因子分别对于发病率的q值和p值,流域(watershed)的q值最大,p值最小,其次是高程(elevation)因素,由此我们可以推断,新生儿神经管畸形发病可能和水有关。

多因子探测运行结果

2. 交互作用探测

下面的代码可以计算三个因子和因变量之间的交互作用关系:

interaction_detector("incidence",c("soiltype","watershed","elevation"),CollectData)

计算结果如下:

9种相互作用关系计算结果

最后一列为q(X1∩X2)的结果,但是没有比较,先以第一行为例说明一下吧,后续我再慢慢改进代码。

"soiltype"  "watershed" "0.735680548139531"

这个是土壤和流域两个因子的相互作用,那么我们先对应找这俩因子各自的q值

qpid
0.6380.000117watershed
0.3860.363soiltype

结合上一篇文章中交互作用探测结果,我们发现,q(X1∩X2)大于q(X1)、q(X2)中最大的一个,满足第3个双因子增强关系

3. 风险区探测

风险区探测同样可以由如下一条代码完成:

risk_detector(1,c(2,3,4),CollectData)

风险区探测计算结果如下图:

  • TRUE,通过零假设,两个子区域间属性均值不存在明显差异
  • FALSE,拒绝零假设,两个子区域间属性均值存在明显差异
风险区探测计算结果

4. 生态探测

实例代码如下:

ecological_detector("incidence",c("soiltype","watershed","elevation"),CollectData)

用于比较两因子X1、X2对属性Y空间分布的影响是否有显著差异。生态探测结果如下:

生态探测结果
  • TRUE,通过零假设,两因子X1、X2对属性Y空间分布无显著差异
  • FALSE,拒绝零假设,两因子X1、X2对属性Y空间分布有显著差异

以上是R语言中运行地理探测器的实例和讲解,欢迎大家留言讨论

参考文献

  1. 王劲峰, 徐成东. 地理探测器:原理与展望[J]. 地理学报, 2017, 72(001):116-134.
  2. https://cran.r-project.org/web/packages/geodetector/index.html

点击上一篇,下一篇即可阅读更多相关文章


您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存