地理探測器
1. 地理探測器原理
空間分異性是地理現象的基本特點之一。地理探測器是探測和利用空間分異性的工具。地理探測器包括4個探測器。
分異及因子探測:探測Y的空間分異性;以及探測某因子X多大程度上解釋了屬性Y的空間分異(圖1)。用q值度量
,表達式為:

式中:h = 1, …, L為變量Y或因子X的分層 (Strata),即分類或分區;Nh和N分別為層h和全區的單元數; $ \sigma_h^2$ 和 $ \sigma^2$ 分別是層h和全區的Y值的方差。SSW和SST分別為層內方差之和 (Within Sum of Squares) 和全區總方差 (Total Sum of Squares)。q的值域為[0,1],值越大說明Y的空間分異性越明顯;如果分層是由自變量X生成的,則q值越大表示自變量X對屬性Y的解釋力越強,反之則越弱。極端情況下,q值為1表明因子X完全控制了Y的空間分布,q值為0則表明因子X與Y沒有任何關系,q值表示X解釋了100×q%的Y。
q值的一個簡單變換滿足非中心F分布:
式中:\(\lambda\)為非中心參數;\(\overline Y_h\) 為層h的均值。根據式(3),可以查表或者使用地理探測器軟件來檢驗q值是否顯著。
交互作用探測:識別不同風險因子Xs之間的交互作用,即評估因子X1和X2共同作用時是否會增加或減弱對因變量 Y 的解釋力,或這些因子對Y的影響是相互獨立的。評估的方法是首先分別計算兩種因子 X1 和 X2 對 Y 的q 值 : q(X1) 和 q(X2),並且計算它們交互(疊加變量 X1 和 X2 兩個圖層相切所形成的新的多邊形分布,圖2)時的q值: q(X1 ∩ X2) ,並對q(X1)、q(X2)與q(X1 ∩ X2)進行比較。兩個因子之間的關系可分為以下幾類(圖3);


風險區探測:用於判斷兩個子區域間的屬性均值是否有顯著的差別,用t統計量來檢驗:
式中: \(\overline Y _{h=1}\) 表示子區域 h內的屬性均值,如發病率或流行率;\(n_h\)為子區域h內樣本數量,Var表示方差。統計量t近似地服從Student's t分布,其中自由度的計算方法為:
零假設\(H_0\):\(\overline Y_{h=1} = \overline Y_{h=2}\) ,如果在置信水平α下拒絕\(H_0\),則認為兩個子區域間的屬性均值存在着明顯的差異。
生態探測:用於比較兩因子X1和X2對屬性Y的空間分布的影響是否有顯著的差異,以F統計量來衡量:
式中:\(N_{X1}\)及\(N_{X2}\)分別表示兩個因子X1和X2的樣本量;\(SSW_{X1}\)和\(SSW_{X2}\)分別表示由X1和X2形成的分層的層內方差之和;L1和L2分別表示變量X1和X2分層數目。其中零假設\(H_0\):\(SSW_{X1}=SSW_{X2}\)。如果在α的顯著性水平上拒絕\(H_0\),這表明兩因子X1和X2對屬性Y的空間分布的影響存在着顯著的差異。
2. 地理探測器(R)
GeoDetector包包括五個功能:
- factor_detector,
- interaction_detector,
- risk_detector,ecological_detector
- geodetector
前四個功能實現因子檢測器,交互檢測器,風險檢測器和生態檢測器的算法,可以使用表數據計算,例如,可以計算 CSV格式(表1)。最后一個函數GeoDetector是一種輔助功能,可用於實現Shapefile格式映射數據的計算(圖2)。
| incidence | watershed | soiltype | elevation |
|---|---|---|---|
| 7.20 | 2 | 3 | 6 |
| 7.01 | 2 | 3 | 6 |
| 6.79 | 2 | 3 | 6 |
| 6.73 | 4 | 3 | 6 |
| 6.77 | 4 | 3 | 1 |
| 6.74 | 4 | 3 | 6 |

GeoDetector包依賴於以下包:RGEO,SP,MapTools和RGDAL,應提前安裝。
作為一個演示,提供了神經管畸形出生缺陷(NTDs)的發生Y和疑似村庄的環境風險因子或其代理變量Xs,包括健康效果GIS層和環境因子GIS圖層,“海拔”,“土壤類型”的數據,以及 “流域”。
下載geodetector包:
install.packages("geodetector")
加載包:
library(geodetector)
讀取數據:
data(CollectData)
class(CollectData)
'data.frame'
names(CollectData)
- 'incidence'
- 'watershed'
- 'soiltype'
- 'elevation'
2.1 分異及因子探測
因子檢測器q-statistic測量變量Y的空間分異性(SSH),或者決定了某因子X多大程度上解釋了屬性Y的空間分異。
Factor_Detector實現因子檢測器的功能。 在以下演示中,第一個參數“incidence”表示解釋的變量,第二個參數“elevation”表示解釋變量,第三個參數“CollectData”表示數據集。
該函數的輸出包括Q統計和相應的P值。
factor_detector("incidence","elevation",CollectData)
-
A data.frame: 1 × 2 q-statistic p-value <dbl> <dbl> elevation 0.6067087 0.04080407
另一種方式也可用於實現函數,其中輸入參數可以是每個字段的索引。 例如,在以下演示中,第一個參數“1”表示數據集的第一列中的解釋變量,第二個參數“3”表示數據集的第三列中的解釋變量。
factor_detector(1,3, CollectData)
-
A data.frame: 1 × 2 q-statistic p-value <dbl> <dbl> soiltype 0.3857168 0.3632363
如果有多個變量,則該函數可以用作以下內容。 其中, c(“soiltype”,“watershed”,“elevation”)或c(2,3,4)是用於列2,3,4中的解釋變量的場名和索引。
factor_detector ("incidence",c("soiltype","watershed","elevation"),CollectData)
-
A data.frame: 1 × 2 q-statistic p-value <dbl> <dbl> soiltype 0.3857168 0.3632363 -
A data.frame: 1 × 2 q-statistic p-value <dbl> <dbl> watershed 0.6377737 0.0001169914 -
A data.frame: 1 × 2 q-statistic p-value <dbl> <dbl> elevation 0.6067087 0.04080407
factor_detector (1,c(2,3,4), CollectData)
-
A data.frame: 1 × 2 q-statistic p-value <dbl> <dbl> watershed 0.6377737 0.0001169914 -
A data.frame: 1 × 2 q-statistic p-value <dbl> <dbl> soiltype 0.3857168 0.3632363 -
A data.frame: 1 × 2 q-statistic p-value <dbl> <dbl> elevation 0.6067087 0.04080407
2.2 交互探測
相互作用檢測器顯示風險因素X1和X2(或其他X)是否對疾病Y具有交互影響。
函數Interaction_Detector實現交互探測器。 在下面的演示中,第一個參數“incidence”表示解釋的變量,第二個參數c(“soiltype”,“watershed”,“elevation”) 表示解釋變量,第三個參數“CollectData”表示數據集。
interaction_detector("incidence",c("soiltype","watershed","elevation"),CollectData)
| soiltype | watershed | 0.735680548139531 |
| soiltype | soiltype | 0.385716842809428 |
| watershed | watershed | 0.637773670070423 |
| soiltype | elevation | 0.663523698335635 |
| soiltype | soiltype | 0.385716842809428 |
| elevation | elevation | 0.606708709727727 |
| watershed | elevation | 0.71359677853471 |
| watershed | watershed | 0.637773670070423 |
| elevation | elevation | 0.606708709727727 |
2.3 風險探測
風險檢測器計算每個解釋變量(x)的每個層中的平均值,並且如果兩個地層之間存在差異,則會呈體現出來。
函數Risk_Detector實現風險探測器。 在下面的演示中,第一個參數 “incidence”表示解釋的變量,第二個參數 “soiltype”表示解釋變量,第三參數“collectData”表示數據集。
在該函數中,每個變量的結果信息以兩部分呈現。
第一部分給出了解釋變量的每個層中解釋變量的平均值。
第二部分測試兩個地層的裝置之間是否存在顯着差異; 如果存在顯着差異(T測試具有0.05的顯着水平),相應的值是“TRUE”,否則它是“FALSE”。
risk_detector("incidence","soiltype",CollectData)
-
- $`Risk Detector`
-
A data.frame: 5 × 2 soiltype Mean of explained variable <int> <dbl> 1 6.340000 2 6.687500 3 6.583279 4 5.843810 5 6.347073 - $`Significance t-test:0.05`
-
A data.frame: 5 × 5 1 2 3 4 5 <chr> <chr> <chr> <chr> <chr> 1 FALSE TRUE TRUE TRUE FALSE 2 TRUE FALSE FALSE TRUE TRUE 3 TRUE FALSE FALSE TRUE TRUE 4 TRUE TRUE TRUE FALSE TRUE 5 FALSE TRUE TRUE TRUE FALSE
另一種方式也可用於實現函數,其中輸入參數可以是每個字段的索引。 例如,在以下演示中,第一個參數“1”表示數據集的第一列中的解釋變量,第二個參數“2”表示數據集的第二列中的解釋變量。
risk_detector(1,2, CollectData)
-
- $`Risk Detector`
-
A data.frame: 9 × 2 watershed Mean of explained variable <int> <dbl> 1 6.167813 2 6.813103 3 6.474231 4 6.728000 5 5.910000 6 5.845714 7 6.494167 8 6.360769 9 6.579231 - $`Significance t-test:0.05`
-
A data.frame: 9 × 9 1 2 3 4 5 6 7 8 9 <chr> <chr> <chr> <chr> <chr> <chr> <chr> <chr> <chr> 1 FALSE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE 2 TRUE FALSE TRUE FALSE TRUE TRUE TRUE TRUE TRUE 3 TRUE TRUE FALSE TRUE TRUE TRUE FALSE FALSE FALSE 4 TRUE FALSE TRUE FALSE TRUE TRUE TRUE TRUE TRUE 5 TRUE TRUE TRUE TRUE FALSE FALSE TRUE TRUE TRUE 6 TRUE TRUE TRUE TRUE FALSE FALSE TRUE TRUE TRUE 7 TRUE TRUE FALSE TRUE TRUE TRUE FALSE FALSE FALSE 8 TRUE TRUE FALSE TRUE TRUE TRUE FALSE FALSE TRUE 9 TRUE TRUE FALSE TRUE TRUE TRUE FALSE TRUE FALSE
如果有多個變量,則該函數可以用作以下內容。 其中,c(“soiltype”,“watershed”,“elevation”)和(c2,3,4)是用於解釋變量的場名和索引。
risk_detector("incidence",c("soiltype","watershed","elevation"),CollectData)
-
- $`Risk Detector`
-
A data.frame: 5 × 2 soiltype Mean of explained variable <int> <dbl> 1 6.340000 2 6.687500 3 6.583279 4 5.843810 5 6.347073 - $`Significance t-test:0.05`
-
A data.frame: 5 × 5 1 2 3 4 5 <chr> <chr> <chr> <chr> <chr> 1 FALSE TRUE TRUE TRUE FALSE 2 TRUE FALSE FALSE TRUE TRUE 3 TRUE FALSE FALSE TRUE TRUE 4 TRUE TRUE TRUE FALSE TRUE 5 FALSE TRUE TRUE TRUE FALSE
-
- $`Risk Detector`
-
A data.frame: 9 × 2 watershed Mean of explained variable <int> <dbl> 1 6.167813 2 6.813103 3 6.474231 4 6.728000 5 5.910000 6 5.845714 7 6.494167 8 6.360769 9 6.579231 - $`Significance t-test:0.05`
-
A data.frame: 9 × 9 1 2 3 4 5 6 7 8 9 <chr> <chr> <chr> <chr> <chr> <chr> <chr> <chr> <chr> 1 FALSE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE 2 TRUE FALSE TRUE FALSE TRUE TRUE TRUE TRUE TRUE 3 TRUE TRUE FALSE TRUE TRUE TRUE FALSE FALSE FALSE 4 TRUE FALSE TRUE FALSE TRUE TRUE TRUE TRUE TRUE 5 TRUE TRUE TRUE TRUE FALSE FALSE TRUE TRUE TRUE 6 TRUE TRUE TRUE TRUE FALSE FALSE TRUE TRUE TRUE 7 TRUE TRUE FALSE TRUE TRUE TRUE FALSE FALSE FALSE 8 TRUE TRUE FALSE TRUE TRUE TRUE FALSE FALSE TRUE 9 TRUE TRUE FALSE TRUE TRUE TRUE FALSE TRUE FALSE
-
- $`Risk Detector`
-
A data.frame: 7 × 2 elevation Mean of explained variable <int> <dbl> 1 6.455882 2 6.171111 3 6.258108 4 6.621364 5 5.908889 6 6.888636 7 5.790000 - $`Significance t-test:0.05`
-
A data.frame: 7 × 7 1 2 3 4 5 6 7 <chr> <chr> <chr> <chr> <chr> <chr> <chr> 1 FALSE TRUE TRUE TRUE TRUE TRUE TRUE 2 TRUE FALSE FALSE TRUE TRUE TRUE TRUE 3 TRUE FALSE FALSE TRUE TRUE TRUE TRUE 4 TRUE TRUE TRUE FALSE TRUE TRUE TRUE 5 TRUE TRUE TRUE TRUE FALSE TRUE TRUE 6 TRUE TRUE TRUE TRUE TRUE FALSE TRUE 7 TRUE TRUE TRUE TRUE TRUE TRUE FALSE
risk_detector(1,c(2,3,4), CollectData)
-
- $`Risk Detector`
-
A data.frame: 9 × 2 watershed Mean of explained variable <int> <dbl> 1 6.167813 2 6.813103 3 6.474231 4 6.728000 5 5.910000 6 5.845714 7 6.494167 8 6.360769 9 6.579231 - $`Significance t-test:0.05`
-
A data.frame: 9 × 9 1 2 3 4 5 6 7 8 9 <chr> <chr> <chr> <chr> <chr> <chr> <chr> <chr> <chr> 1 FALSE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE 2 TRUE FALSE TRUE FALSE TRUE TRUE TRUE TRUE TRUE 3 TRUE TRUE FALSE TRUE TRUE TRUE FALSE FALSE FALSE 4 TRUE FALSE TRUE FALSE TRUE TRUE TRUE TRUE TRUE 5 TRUE TRUE TRUE TRUE FALSE FALSE TRUE TRUE TRUE 6 TRUE TRUE TRUE TRUE FALSE FALSE TRUE TRUE TRUE 7 TRUE TRUE FALSE TRUE TRUE TRUE FALSE FALSE FALSE 8 TRUE TRUE FALSE TRUE TRUE TRUE FALSE FALSE TRUE 9 TRUE TRUE FALSE TRUE TRUE TRUE FALSE TRUE FALSE
-
- $`Risk Detector`
-
A data.frame: 5 × 2 soiltype Mean of explained variable <int> <dbl> 1 6.340000 2 6.687500 3 6.583279 4 5.843810 5 6.347073 - $`Significance t-test:0.05`
-
A data.frame: 5 × 5 1 2 3 4 5 <chr> <chr> <chr> <chr> <chr> 1 FALSE TRUE TRUE TRUE FALSE 2 TRUE FALSE FALSE TRUE TRUE 3 TRUE FALSE FALSE TRUE TRUE 4 TRUE TRUE TRUE FALSE TRUE 5 FALSE TRUE TRUE TRUE FALSE
-
- $`Risk Detector`
-
A data.frame: 7 × 2 elevation Mean of explained variable <int> <dbl> 1 6.455882 2 6.171111 3 6.258108 4 6.621364 5 5.908889 6 6.888636 7 5.790000 - $`Significance t-test:0.05`
-
A data.frame: 7 × 7 1 2 3 4 5 6 7 <chr> <chr> <chr> <chr> <chr> <chr> <chr> 1 FALSE TRUE TRUE TRUE TRUE TRUE TRUE 2 TRUE FALSE FALSE TRUE TRUE TRUE TRUE 3 TRUE FALSE FALSE TRUE TRUE TRUE TRUE 4 TRUE TRUE TRUE FALSE TRUE TRUE TRUE 5 TRUE TRUE TRUE TRUE FALSE TRUE TRUE 6 TRUE TRUE TRUE TRUE TRUE FALSE TRUE 7 TRUE TRUE TRUE TRUE TRUE TRUE FALSE
2.4 生態探測
生態檢測器測試了兩個風險因素x1〜x2之間是否存在顯着差異。
函數Ecological_Detector實現生態探測器。 在以下演示中,第一個參數“incidence”表示解釋的變量,第二個參數c(“soiltype”,“watershed”)表示解釋變量,第三個參數“collectData”表示數據集。 在該功能中,F統計用於測試差異,使用0.05的顯着水平。
ecological_detector("incidence",c("soiltype","watershed"),CollectData)
$Significance.F-test:0.05 =
| soiltype | watershed | |
|---|---|---|
| <chr> | <chr> | |
| soiltype | FALSE | TRUE |
| watershed | TRUE | FALSE |
如果有兩個以上的變量,則該函數可以用作以下內容,其中,c("soiltype","watershed","elevation")是用於解釋變量的場的場名稱。
ecological_detector("incidence",c("soiltype","watershed","elevation"),CollectData)
$Significance.F-test:0.05 =
| soiltype | watershed | elevation | |
|---|---|---|---|
| <chr> | <chr> | <chr> | |
| soiltype | FALSE | TRUE | TRUE |
| watershed | TRUE | FALSE | FALSE |
| elevation | TRUE | FALSE | FALSE |
2.5 將數據從地圖轉換為表格格式
如果輸入數據處於表格格式,則可以直接用作上述功能中的輸入參數。 但是,如果輸入數據以ShapeFeile格式映射,則名為GeoDetector的函數可用於從Shapefile Map轉換為表格式,然后可以使用上述功能。 請注意,這些Shapefile層應具有相同的投影坐標系。
加載MapTools包:
library(sp)
library(rgeos)
library(maptools)
rgeos version: 0.5-5, (SVN revision 640)
GEOS runtime version: 3.8.0-CAPI-1.13.1
Linking to sp version: 1.4-5
Polygon checking: TRUE
Checking rgeos availability: TRUE
讀取數據:
data(DiseaseData_shp)
data(SoilType_shp)
data(Watershed_shp)
data(Elevation_shp)
在下面的演示中,第一個參數“disexicata_shp”表示 shape file數據存儲解釋的變量,第二個參數c(sallype_shp,watershed_shp,expation_shp)表示 shape file數據存儲解釋變量,以及第三個參數c(‘incidence’, ‘soiltype’, ‘watershed’, ‘elevation’)表示分別用於解釋的變量和解釋變量的實地名稱。
CollectData2 <- maps2dataframe(DiseaseData_shp,c(SoilType_shp, Watershed_shp,
Elevation_shp),namescolomn= c('incidence',
'soiltype', 'watershed', 'elevation'))
head(CollectData2)
| incidence | soiltype | watershed | elevation | |
|---|---|---|---|---|
| <dbl> | <int> | <int> | <int> | |
| 1 | 5.94 | 5 | 5 | 5 |
| 2 | 5.87 | 4 | 5 | 5 |
| 3 | 5.92 | 4 | 5 | 5 |
| 4 | 6.32 | 1 | 7 | 1 |
| 5 | 6.49 | 3 | 2 | 4 |
| 6 | 6.46 | 3 | 2 | 4 |
使用從Maps2dataframe函數計算的數據集 CollectData,可以計算以下功能。
風險探測器:
risk_detector("incidence","soiltype",CollectData2)
-
- $`Risk Detector`
-
A data.frame: 5 × 2 soiltype Mean of explained variable <int> <dbl> 1 6.340000 2 6.687500 3 6.583279 4 5.843810 5 6.347073 - $`Significance t-test:0.05`
-
A data.frame: 5 × 5 1 2 3 4 5 <chr> <chr> <chr> <chr> <chr> 1 FALSE TRUE TRUE TRUE FALSE 2 TRUE FALSE FALSE TRUE TRUE 3 TRUE FALSE FALSE TRUE TRUE 4 TRUE TRUE TRUE FALSE TRUE 5 FALSE TRUE TRUE TRUE FALSE
risk_detector("incidence",c("soiltype"),CollectData2)
-
- $`Risk Detector`
-
A data.frame: 5 × 2 soiltype Mean of explained variable <int> <dbl> 1 6.340000 2 6.687500 3 6.583279 4 5.843810 5 6.347073 - $`Significance t-test:0.05`
-
A data.frame: 5 × 5 1 2 3 4 5 <chr> <chr> <chr> <chr> <chr> 1 FALSE TRUE TRUE TRUE FALSE 2 TRUE FALSE FALSE TRUE TRUE 3 TRUE FALSE FALSE TRUE TRUE 4 TRUE TRUE TRUE FALSE TRUE 5 FALSE TRUE TRUE TRUE FALSE
risk_detector(1,2,CollectData2)
-
- $`Risk Detector`
-
A data.frame: 5 × 2 soiltype Mean of explained variable <int> <dbl> 1 6.340000 2 6.687500 3 6.583279 4 5.843810 5 6.347073 - $`Significance t-test:0.05`
-
A data.frame: 5 × 5 1 2 3 4 5 <chr> <chr> <chr> <chr> <chr> 1 FALSE TRUE TRUE TRUE FALSE 2 TRUE FALSE FALSE TRUE TRUE 3 TRUE FALSE FALSE TRUE TRUE 4 TRUE TRUE TRUE FALSE TRUE 5 FALSE TRUE TRUE TRUE FALSE
risk_detector(1,c(2,3,4),CollectData2)
-
- $`Risk Detector`
-
A data.frame: 5 × 2 soiltype Mean of explained variable <int> <dbl> 1 6.340000 2 6.687500 3 6.583279 4 5.843810 5 6.347073 - $`Significance t-test:0.05`
-
A data.frame: 5 × 5 1 2 3 4 5 <chr> <chr> <chr> <chr> <chr> 1 FALSE TRUE TRUE TRUE FALSE 2 TRUE FALSE FALSE TRUE TRUE 3 TRUE FALSE FALSE TRUE TRUE 4 TRUE TRUE TRUE FALSE TRUE 5 FALSE TRUE TRUE TRUE FALSE
-
- $`Risk Detector`
-
A data.frame: 9 × 2 watershed Mean of explained variable <int> <dbl> 1 6.167813 2 6.813103 3 6.474231 4 6.728000 5 5.910000 6 5.845714 7 6.494167 8 6.360769 9 6.579231 - $`Significance t-test:0.05`
-
A data.frame: 9 × 9 1 2 3 4 5 6 7 8 9 <chr> <chr> <chr> <chr> <chr> <chr> <chr> <chr> <chr> 1 FALSE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE 2 TRUE FALSE TRUE FALSE TRUE TRUE TRUE TRUE TRUE 3 TRUE TRUE FALSE TRUE TRUE TRUE FALSE FALSE FALSE 4 TRUE FALSE TRUE FALSE TRUE TRUE TRUE TRUE TRUE 5 TRUE TRUE TRUE TRUE FALSE FALSE TRUE TRUE TRUE 6 TRUE TRUE TRUE TRUE FALSE FALSE TRUE TRUE TRUE 7 TRUE TRUE FALSE TRUE TRUE TRUE FALSE FALSE FALSE 8 TRUE TRUE FALSE TRUE TRUE TRUE FALSE FALSE TRUE 9 TRUE TRUE FALSE TRUE TRUE TRUE FALSE TRUE FALSE
-
- $`Risk Detector`
-
A data.frame: 7 × 2 elevation Mean of explained variable <int> <dbl> 1 6.455882 2 6.171111 3 6.258108 4 6.621364 5 5.908889 6 6.888636 7 5.790000 - $`Significance t-test:0.05`
-
A data.frame: 7 × 7 1 2 3 4 5 6 7 <chr> <chr> <chr> <chr> <chr> <chr> <chr> 1 FALSE TRUE TRUE TRUE TRUE TRUE TRUE 2 TRUE FALSE FALSE TRUE TRUE TRUE TRUE 3 TRUE FALSE FALSE TRUE TRUE TRUE TRUE 4 TRUE TRUE TRUE FALSE TRUE TRUE TRUE 5 TRUE TRUE TRUE TRUE FALSE TRUE TRUE 6 TRUE TRUE TRUE TRUE TRUE FALSE TRUE 7 TRUE TRUE TRUE TRUE TRUE TRUE FALSE
因子探測器:
factor_detector("incidence","elevation",CollectData2)
-
A data.frame: 1 × 2 q-statistic p-value <dbl> <dbl> elevation 0.6067087 0.04080407
factor_detector ("incidence",c("elevation","watershed"),CollectData2)
-
A data.frame: 1 × 2 q-statistic p-value <dbl> <dbl> elevation 0.6067087 0.04080407 -
A data.frame: 1 × 2 q-statistic p-value <dbl> <dbl> watershed 0.6377737 0.0001169914
factor_detector(1,3,CollectData2)
-
A data.frame: 1 × 2 q-statistic p-value <dbl> <dbl> watershed 0.6377737 0.0001169914
factor_detector (1,c(2,3,4),CollectData2)
-
A data.frame: 1 × 2 q-statistic p-value <dbl> <dbl> soiltype 0.3857168 0.3632363 -
A data.frame: 1 × 2 q-statistic p-value <dbl> <dbl> watershed 0.6377737 0.0001169914 -
A data.frame: 1 × 2 q-statistic p-value <dbl> <dbl> elevation 0.6067087 0.04080407
生態探測器:
ecological_detector("incidence",c("soiltype","watershed"),CollectData2)
$Significance.F-test:0.05 =
| soiltype | watershed | |
|---|---|---|
| <chr> | <chr> | |
| soiltype | FALSE | TRUE |
| watershed | TRUE | FALSE |
ecological_detector("incidence",c("soiltype","watershed","elevation"),CollectData2)
$Significance.F-test:0.05 =
| soiltype | watershed | elevation | |
|---|---|---|---|
| <chr> | <chr> | <chr> | |
| soiltype | FALSE | TRUE | TRUE |
| watershed | TRUE | FALSE | FALSE |
| elevation | TRUE | FALSE | FALSE |
interaction_detector("incidence",c("soiltype","watershed"),CollectData2)
| soiltype | watershed | 0.735680548139531 |
| soiltype | soiltype | 0.385716842809428 |
| watershed | watershed | 0.637773670070423 |
interaction_detector("incidence",c("soiltype","watershed","elevation"),CollectData2)
| soiltype | watershed | 0.735680548139531 |
| soiltype | soiltype | 0.385716842809428 |
| watershed | watershed | 0.637773670070423 |
| soiltype | elevation | 0.663523698335635 |
| soiltype | soiltype | 0.385716842809428 |
| elevation | elevation | 0.606708709727727 |
| watershed | elevation | 0.71359677853471 |
| watershed | watershed | 0.637773670070423 |
| elevation | elevation | 0.606708709727727 |
2.6 輸出
因子檢測器函數或風險檢測器函數的結果可以保存為一個CSV文件,例如:
Result_1 <- factor_detector ("incidence",c("soiltype","watershed", "elevation"),CollectData)
write.csv(Result_1 [[1]],'./Geodetector_R/output_factor_detector_soiltype.csv')
write.csv(Result_1 [[2]],'./Geodetector_R/output_factor_detector_watershed.csv')
write.csv(Result_1 [[3]],'./Geodetector_R/output_factor_detector_elevation.csv')
Result_2 <- risk_detector("incidence",c("soiltype","watershed"),CollectData)
write.csv(Result_2 [[1]][1],'./Geodetector_R/output_risk_detector_soiltype_Mean.csv')
write.csv(Result_2 [[1]][2],'./Geodetector_R/output_risk_detector_soiltype_Significance.csv')
write.csv(Result_2 [[2]][1],'./Geodetector_R/output_risk_detector_watershed_Mean.csv')
write.csv(Result_2 [[2]][2],'./Geodetector_R/output_risk_detector_watershed_Significance.csv')
交互探測器函數或生態檢測器功能的結果也可以保存為CSV文件,例如:
Result_3 <- interaction_detector("incidence",c("soiltype","watershed","elevation"),CollectData)
write.csv(Result_3,'./Geodetector_R/output_interaction_detector.csv')
Result_4 <- ecological_detector("incidence",c("soiltype","watershed"),CollectData)
write.csv(Result_4,'./Geodetector_R/output_ecological_detector.csv')
3. 資料參考:
A tutorial for the geodetector R package (Chengdong Xu, Yue Hou, Jinfeng Wang, Qian Yin (IGSNRR, CAS))
地理探測器:原理與展望 (王勁峰, 徐成東)
