地理探测器学习
一、為什么選擇了地理探測器
(1)因變量Y和自變量x的兩個空間分布的一致性也僅映了這兩個變量的關聯性,這種關聯既包括線性部分,也包括非線性部分,可以用地理探測器度量這種關聯性。線性回歸模型和地理探測器的目的都是通過建立兩個變量的統計關系,進而提示可能的因果關系。
(2)當線性回歸顯著時,地理探測器必然顯著;當線性回歸不顯著時,地理探測器仍然可能顯著;兩變量只要有關系,地理探測器就能夠探測出。
(3)地理探測器原理保證了其對多自變量共線性免疫。
二、地理探測器原理
地理探測器是分析空間分異性的工具,其核心思想是—如果某個自變量對某個因變量有影響,那么自變量的空間分布和因變量的空間分布應該趨干一致。
地理探測器括四個探測器:
(1)因子探測器:探測自變量多大程度上解釋了因變量的空間分異;
(2)交互探測器:交互探測可以定量表征兩個自變量對于因變量格局的作用關系;
(3)風險探測器:用于判斷兩個子區域間的屬性均值是否有顯著性的差別,揭示了哪些自變量是因變量顯著的高值或低值,以t統計量來檢驗;
(4)生態探測器:用于比較兩個自變量對因變量屬性的空間分布的影響是否有顯著的差異,即比較不同自變量解釋力的相對重要性差異,以F統計量來衡量;
三、地理探測器應用
1、地理探測器(excel)下載地址:http://www.geodetector.cn/
2、地理探測器-R包“GD”使用應用:
(1)安裝Rtool:https://cran.r-project.org/bin/windows/Rtools/
僅在源代碼中使用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') > #設置最優離散化的可選參數 > #可選方法:相等、自然、分位數、幾何、sd和手動 > discmethod <- c("equal","natural","quantile","geometric","sd") > #空間數據離散化分成4~6類 > discitv <- c(4:6) > #定義連續變量 > #進行空間數據離散化處理 > continuous_variable <- colnames(data)[-c(1,17)] > #調用gdm函數 > result <- gdm(GKDM ~ ., continuous_variable = continuous_variable, data = data, discmethod = discmethod, discitv = discitv) > #顯示分析結果 > result > #顯示分析圖表 > 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
> #不想返工一下子將所有變量轉數字 > 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值的地方不可以用缺少值
在檢查的過程中沒有缺失值,也不懂為什么報錯,當我把所有不要的變量刪除后,就可以成功運行了。
【參考資料】
空間數據分析教程-王勁峰-科學出版社
地理探測器:原理與展望-王勁峰-地理學報
基于地理探測器的北京市居民宜居滿意度影響機理-湛東升-地理科學進展
GD-參考手冊
總結
- 上一篇: SQL编程题-----1
- 下一篇: 计算机服务哪些不能关闭,Win7系统下哪