地理探测器学习

一、为什么选择了地理探测器

(1)因变量Y和自变量x的两个空间分布的一致性也仅映了这两个变量的关联性,这种关联既包括线性部分,也包括非线性部分,可以用地理探测器度量这种关联性。线性回归模型和地理探测器的目的都是通过建立两个变量的统计关系,进而提示可能的因果关系。
(2)当线性回归显著时,地理探测器必然显著;当线性回归不显著时,地理探测器仍然可能显著;两变量只要有关系,地理探测器就能够探测出。
(3)地理探测器原理保证了其对多自变量共线性免疫。

二、地理探测器原理

地理探测器是分析空间分异性的工具,其核心思想是—如果某个自变量对某个因变量有影响,那么自变量的空间分布和因变量的空间分布应该趋干一致。
地理探测器括四个探测器:
(1)因子探测器:探测自变量多大程度上解释了因变量的空间分异;
(2)交互探测器:交互探测可以定量表征两个自变量对于因变量格局的作用关系;
(3)风险探测器:用于判断两个子区域间的属性均值是否有显著性的差别,揭示了哪些自变量是因变量显著的高值或低值,以t统计量来检验;
(4)生态探测器:用于比较两个自变量对因变量属性的空间分布的影响是否有显著的差异,即比较不同自变量解释力的相对重要性差异,以F统计量来衡量;

三、地理探测器应用

2、地理探测器-R包”GD”使用应用:

仅在源代码中使用C / C ++ / Fortran代码构建R软件包时才需要rtools。

(2)安装地理探测器-R包”GD”

> #安装GD包
> install.packages("GD")
> #引用GD包
> library(GD)

(3)地理探测器-R包”GD”应用代码

csv表格内只留了需要的自变量和因变量,且自变量均为数字类型,而其他多于的属性都删掉了,gdm才能运行gdm,不知道为什么。

> #读取文件
> data <- read.csv("e: geodetector data.csv", header="TRUE," sep="," , fileencoding="GBK" )> #&#x8BBE;&#x7F6E;&#x6700;&#x4F18;&#x79BB;&#x6563;&#x5316;&#x7684;&#x53EF;&#x9009;&#x53C2;&#x6570;
> #&#x53EF;&#x9009;&#x65B9;&#x6CD5;&#xFF1A;&#x76F8;&#x7B49;&#x3001;&#x81EA;&#x7136;&#x3001;&#x5206;&#x4F4D;&#x6570;&#x3001;&#x51E0;&#x4F55;&#x3001;sd&#x548C;&#x624B;&#x52A8;
> discmethod <- c("equal","natural","quantile","geometric","sd")> #&#x7A7A;&#x95F4;&#x6570;&#x636E;&#x79BB;&#x6563;&#x5316;&#x5206;&#x6210;4~6&#x7C7B;
> discitv <- c(4:6)> #&#x5B9A;&#x4E49;&#x8FDE;&#x7EED;&#x53D8;&#x91CF;
> #&#x8FDB;&#x884C;&#x7A7A;&#x95F4;&#x6570;&#x636E;&#x79BB;&#x6563;&#x5316;&#x5904;&#x7406;
> continuous_variable <- colnames(data)[-c(1,17)]> #&#x8C03;&#x7528;gdm&#x51FD;&#x6570;
> result <- gdm(gkdm ~ ., continuous_variable="continuous_variable," data="data," discmethod="discmethod," discitv="discitv)"> #&#x663E;&#x793A;&#x5206;&#x6790;&#x7ED3;&#x679C;
> result
> #&#x663E;&#x793A;&#x5206;&#x6790;&#x56FE;&#x8868;
> plot(result)
</-></-></-></-></->

遇到的错误

(1)生成R包需要Rtools,但当前未安装,下载Rtools并重新启动RStudio。

Warning in install.packages :unable to access index for repository
https://cran.rstudio.com/src/contrib:无法打开URL’https://cran.rstudio.com/src/contrib/PACKAGES’
WARNING: Rtools is required to build R packages but is not currently installed. Please download and install the appropriate version of Rtools before proceeding:

(2) 变量不是数字

Error in disc(x, f.itv, method = f.method) : var is not numeric

> #&#x4E0D;&#x60F3;&#x8FD4;&#x5DE5;&#x4E00;&#x4E0B;&#x5B50;&#x5C06;&#x6240;&#x6709;&#x53D8;&#x91CF;&#x8F6C;&#x6570;&#x5B57;
> data$GKDM=as.numeric(data$GKDM)
> data$POPU=as.numeric(data$POPU)
> data$GDP=as.numeric(data$GDP)
> data$ONE=as.numeric(data$ONE)
> data$TWO=as.numeric(data$TWO)
> data$THREE=as.numeric(data$THREE)
> data$GDZCTZ=as.numeric(data$GDZCTZ)

(3)需要TRUE/FALSE值的地方不可以用缺少值

Error in if (formula.vars[2] == “.”) { :
需要TRUE/FALSE值的地方不可以用缺少值

> #&#x8BA1;&#x7B97;&#x6570;&#x636E;&#x96C6;&#x4E2D;&#x7684;&#x7F3A;&#x5931;&#x503C;&#x603B;&#x6570;
> sum(is.na(data))
> #&#x5F53;&#x4E00;&#x7B14;&#x6570;&#x636E;&#x662F;&#x5B8C;&#x6574;&#x7684;&#xFF0C;&#x56DE;&#x4F20;TRUE&#xFF1B;&#x5F53;&#x4E00;&#x7B14;&#x6570;&#x636E;&#x6709;&#x9057;&#x6F0F;&#x503C;&#xFF0C;&#x56DE;&#x4F20;FALSE
> complete.cases(data)
> #&#x8FD4;&#x56DE;&#x7F3A;&#x5931;&#x503C;&#x7684;&#x4F4D;&#x7F6E;
> which(is.na(data))

在检查的过程中没有缺失值,也不懂为什么报错,当我把所有不要的变量删除后,就可以成功运行了。

【参考资料】
空间数据分析教程-王劲峰-科学出版社
地理探测器:原理与展望-王劲峰-地理学报
基于地理探测器的北京市居民宜居满意度影响机理-湛东升-地理科学进展
GD-参考手册

Original: https://blog.csdn.net/zongmuyang/article/details/115529575
Author: mmidge
Title: 地理探测器学习

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/697366/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球