地理探測器簡介(R語言)


地理探測器

1. 地理探測器原理

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

\[q = 1 - \frac {\sum_{h=1}^LN_h \sigma_h^2}{N\sigma^2} \\ SSW = \sum_{h=1}^LN_h \sigma_h^2, SST = \sigma^2 \tag{1} \label{1} \]

image

式中: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分布:

\[F = \frac {N-L}{L-1} \frac {q}{1-q} \sim F(L-1,N-L;\lambda) \tag{2}\label{2} \]

\[\lambda = \frac {1}{\sigma^2}[\sum_{h=1}^L\overline{Y}_h^2 - \frac {1}{N}(\sum_{h=1}^L \sqrt{N_h} \overline{Y}_h) ^2] \tag{3}\label{3} \]

式中:\(\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);

image

image

風險區探測:用於判斷兩個子區域間的屬性均值是否有顯著的差別,用t統計量來檢驗:

\[t_{\overline y_{h=1 \ \ } - \overline y_{h=2}}= \frac {\overline Y_{h=1} \ -\ \overline Y_{h=2}} {[\frac{Var(\overline Y_{h=1}\ \ )}{n_{h=1}} + \frac{Var(\overline Y_{h= 2\ \ })}{n_{h=\ 2}}]^{1/2}} \tag{4}\label{4} \]

式中: \(\overline Y _{h=1}\) 表示子區域 h內的屬性均值,如發病率或流行率;\(n_h\)為子區域h內樣本數量,Var表示方差。統計量t近似地服從Student's t分布,其中自由度的計算方法為:

\[df = \frac {\frac{Var(\overline Y_{h=1}\ )}{n_{z=1}} + \frac{Var(\overline Y_{h=2}\ )}{n_{h=2}} }{\frac{1}{n_{h=1\ \ }-1} [\frac{Var(\overline Y_{h=1}\ )}{n_{h=1}}]^2 + \frac{1}{n_{h=2 \ }-1} [\frac{Var(\overline Y_{h=2 \ })}{n_{h=2}}]^2} \tag{5}\label{5} \]

零假設\(H_0\)\(\overline Y_{h=1} = \overline Y_{h=2}\) ,如果在置信水平α下拒絕\(H_0\),則認為兩個子區域間的屬性均值存在着明顯的差異。

生態探測:用於比較兩因子X1和X2對屬性Y的空間分布的影響是否有顯著的差異,以F統計量來衡量:

\[F = \frac {N_{x1}(N_{x2}-1)SSW_{x1}}{N_{x2}(N_{x1}-1)SSW_{x2}} \\ SSW_{x1}=\sum_{h=1}^{L1}N_h \sigma_h^2 , \ \ \ SSW_{x2} = \sum_{h=1}^{L2} N_h \sigma_h^2 \tag{6}\label{6} \]

式中:\(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
Table 1. Demo data in table format

image

Figure 2. Demo data in GIS format (a) NTDs prevalence Y, (b) Elevation X1, (c) Soil types X2, (d) Watersheds X3

GeoDetector包依賴於以下包:RGEO,SP,MapTools和RGDAL,應提前安裝。

作為一個演示,提供了神經管畸形出生缺陷(NTDs)的發生Y和疑似村庄的環境風險因子或其代理變量Xs,包括健康效果GIS層和環境因子GIS圖層,“海拔”,“土壤類型”的數據,以及 “流域”。

下載geodetector包:

install.packages("geodetector")

加載包:

library(geodetector)

讀取數據:

data(CollectData)
class(CollectData)

'data.frame'

names(CollectData)
  1. 'incidence'
  2. 'watershed'
  3. 'soiltype'
  4. 'elevation'

2.1 分異及因子探測

因子檢測器q-statistic測量變量Y的空間分異性(SSH),或者決定了某因子X多大程度上解釋了屬性Y的空間分異。
Factor_Detector實現因子檢測器的功能。 在以下演示中,第一個參數“incidence”表示解釋的變量,第二個參數“elevation”表示解釋變量,第三個參數“CollectData”表示數據集。
該函數的輸出包括Q統計和相應的P值。

factor_detector("incidence","elevation",CollectData) 
  1. A data.frame: 1 × 2
    q-statistic p-value
    <dbl> <dbl>
    elevation 0.6067087 0.04080407

另一種方式也可用於實現函數,其中輸入參數可以是每個字段的索引。 例如,在以下演示中,第一個參數“1”表示數據集的第一列中的解釋變量,第二個參數“3”表示數據集的第三列中的解釋變量。

factor_detector(1,3, CollectData)
  1. 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)
  1. A data.frame: 1 × 2
    q-statistic p-value
    <dbl> <dbl>
    soiltype 0.3857168 0.3632363
  2. A data.frame: 1 × 2
    q-statistic p-value
    <dbl> <dbl>
    watershed 0.6377737 0.0001169914
  3. A data.frame: 1 × 2
    q-statistic p-value
    <dbl> <dbl>
    elevation 0.6067087 0.04080407
factor_detector (1,c(2,3,4), CollectData)
  1. A data.frame: 1 × 2
    q-statistic p-value
    <dbl> <dbl>
    watershed 0.6377737 0.0001169914
  2. A data.frame: 1 × 2
    q-statistic p-value
    <dbl> <dbl>
    soiltype 0.3857168 0.3632363
  3. 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)
A matrix: 9 × 3 of type chr
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)
  1. $`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)
  1. $`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)
  1. $`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
  2. $`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
  3. $`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)
  1. $`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
  2. $`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
  3. $`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 =

A data.frame: 2 × 2
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 =

A data.frame: 3 × 3
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)
A data.frame: 6 × 4
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)
  1. $`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)
  1. $`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)
  1. $`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)
  1. $`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
  2. $`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
  3. $`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)
  1. A data.frame: 1 × 2
    q-statistic p-value
    <dbl> <dbl>
    elevation 0.6067087 0.04080407
factor_detector ("incidence",c("elevation","watershed"),CollectData2)
  1. A data.frame: 1 × 2
    q-statistic p-value
    <dbl> <dbl>
    elevation 0.6067087 0.04080407
  2. A data.frame: 1 × 2
    q-statistic p-value
    <dbl> <dbl>
    watershed 0.6377737 0.0001169914
factor_detector(1,3,CollectData2)
  1. A data.frame: 1 × 2
    q-statistic p-value
    <dbl> <dbl>
    watershed 0.6377737 0.0001169914
factor_detector (1,c(2,3,4),CollectData2)
  1. A data.frame: 1 × 2
    q-statistic p-value
    <dbl> <dbl>
    soiltype 0.3857168 0.3632363
  2. A data.frame: 1 × 2
    q-statistic p-value
    <dbl> <dbl>
    watershed 0.6377737 0.0001169914
  3. 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 =

A data.frame: 2 × 2
soiltype watershed
<chr> <chr>
soiltype FALSE TRUE
watershed TRUE FALSE
ecological_detector("incidence",c("soiltype","watershed","elevation"),CollectData2)

$Significance.F-test:0.05 =

A data.frame: 3 × 3
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)
A matrix: 3 × 3 of type chr
soiltype watershed 0.735680548139531
soiltype soiltype 0.385716842809428
watershed watershed 0.637773670070423
interaction_detector("incidence",c("soiltype","watershed","elevation"),CollectData2)
A matrix: 9 × 3 of type chr
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))
地理探測器:原理與展望 (王勁峰, 徐成東)


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM