地理探测器

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}
\]

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

风险区探测:用于判断两个子区域间的属性均值是否有显著的差别,用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

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)

.list-inline { list-style: none; margin: 0; padding: 0 }
.list-inline>li { display: inline-block }
.list-inline>li:not(:last-child)::after { content: "·"; padding: 0 0.5ex }

  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))

地理探测器:原理与展望 (王劲峰, 徐成东)

地理探测器简介(R语言)的更多相关文章

  1. R语言介绍

    R语言简介 R语言是一种为统计计算和图形显示而设计的语言环境,是贝尔实验室(Bell Laboratories)的Rick Becker.John Chambers和Allan Wilks开发的S语言 ...

  2. R语言学习笔记:小试R环境

    买了三本R语言的书,同时使用来学习R语言,粗略翻下来感觉第一本最好: <R语言编程艺术>The Art of R Programming <R语言初学者使用>A Beginne ...

  3. R语言-单一变量分析

    R语言简介: R语言是一门专用于统计分析的语言,有大量的内置函数和第三方库来制作基于数据的表格 准备工作 安装R语言 https://cran.rstudio.com/bin/windows/base ...

  4. 数据攻略●R语言自述

    (注明:以下文章均在Linux操作系统下执行) 一.R语言简介 R语言是用于统计分析,图形表示和报告的编程语言和软件环境.R语言由Ross Ihaka和Robert Gentleman在新西兰奥克兰大 ...

  5. Mac下R语言环境搭建

    Mac下R语言环境搭建 博主在数据分析的时候一直用的python(MATLAB太重了),最近跟其他搞学术的人合作,需要用一下R语言,所以也打算顺便学习一下R. R语言简介 R语言是用于统计分析,图形表 ...

  6. 【机器学习与R语言】1-机器学习简介

    目录 1.基本概念 2.选择机器学习算法 3.使用R进行机器学习 1.基本概念 机器学习:发明算法将数据转化为智能行为 数据挖掘 VS 机器学习:前者侧重寻找有价值的信息,后者侧重执行已知的任务.后者 ...

  7. R语言入门(一)简介安装

    数据挖掘常用的语言有R语言,python,SQL等,其中R语言最受欢迎.(注:SQL Server包含微软研究院开发的两种数据挖掘算法:Microsoft决策树和Microsoft聚集,此外还支持第三 ...

  8. R语言统计学习-1简介

    一. 统计学习概述 统计学习是指一组用于理解数据和建模的工具集.这些工具可分为有监督或无监督.1.监督学习:用于根据一个或多个输入预测或估计输出.常用于商业.医学.天体物理学和公共政策等领域.2.无监 ...

  9. R语言ggplot2 简介

    ggplot2是一个绘制可视化图形的R包,汲取了R语言基础绘图系统(graphics) 和l attice包的优点,摒弃了相关的缺点,创造出来的一套独立的绘图系统: ggplot2 有以下几个特点: ...

  10. R+openNLP︱openNLP的六大可实现功能及其在R语言中的应用

    每每以为攀得众山小,可.每每又切实来到起点,大牛们,缓缓脚步来俺笔记葩分享一下吧,please~ --------------------------- openNLP是NLP中比较好的开源工具,R语 ...

随机推荐

  1. MIsc writeup

    1. 杂项 图片里面有什么 ,附件为一张图片 通过Binwalk查看发现有压缩包,通过foremost分离一下. 打开输出文件,发现里面有两个图片. 00000000.png是原图,00000722. ...

  2. 4.1IDA基础设置--《恶意代码分析实战》

    1.加载一个可执行文件 ① 选项一:当加载一个文件(如PE文件),IDA像操作系统加载器一样将文件映射到内存中. ② 选项三:Binary File:将文件作为一个原始的二进制文件进行反汇编,例如文件 ...

  3. Day37:正则表达式详解

    正则表达式 1.1 概述 正则表达式可以用一些规定的字符来制定规则,并用来校验数据格式的合法性. 比如我们在网站上输入用户账号,要求我们输入的账号信息要符合账号的格式,而校验我们输入的账号格式是否正确 ...

  4. pycharm 小技巧

    ctrl键 + B 查看定义源代码 alt键 + enter键 查看帮助 ctrl键 + shift键 + -号 所有代码隐藏 ctrl键 + shift键 + +号 所有代码展示 ctrl键 + D ...

  5. 论文解读丨【CVPR 2022】不使用人工标注提升文字识别器性能

    摘要:本文提出了一种针对文字识别的半监督方法.区别于常见的半监督方法,本文的针对文字识别这类序列识别问题做出了特定的设计. 本文分享自华为云社区<[CVPR 2022] 不使用人工标注提升文字识 ...

  6. Go语言与其他高级语言的区别

    概述: go语言与其他语言相比,go语言的关键字非常少,只有25个,c语言有37个,c++有84个,python有33个,java有53个. 差异1:go语言不允许隐式转换,别名和原有类型也不能进行隐 ...

  7. Java开发学习(四十九)----MyBatisPlus更新语句之乐观锁

    1.概念 在讲解乐观锁之前,我们还是先来分析下问题: 业务并发现象带来的问题:秒杀 假如有100个商品或者票在出售,为了能保证每个商品或者票只能被一个人购买,如何保证不会出现超买或者重复卖 对于这一类 ...

  8. 推荐给Amy的书单

    目录 皮囊 推荐等级 ※ ※ ※ ※ ※ 白夜行 推荐等级 ※ ※ ※ ※ ※ 人生 推荐等级 ※ ※ ※ ※ 活着 推荐等级 ※ ※ ※ ※ 许三观卖血记 推荐等级 ※ ※ ※ ※ 皮囊 推荐等级 ...

  9. 为什么网络I/O会被阻塞?

    摘要:I/O 其实就是 input 和 output 的缩写,即输入/输出. 本文分享自华为云社区<为啥网络IO会被阻塞呢>,作者: 龙哥手记. 我们应该都知道 socket(套接字),你 ...

  10. python进阶之路8 字典、元组、集合内置方法 编码理论

    内容回顾 作业讲解 1.前期不熟练的情况下一定要先写注释 2.一定要仔细思考每一行代码的含义 3.自己不会的代码或者不熟练的代码一定要多敲多练 数据类型内置方法简介 所有的数据类型基本上都自带了一些操 ...