地理探测器简介(R语言)
地理探测器
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 |
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 }
- '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))
地理探测器:原理与展望 (王劲峰, 徐成东)
地理探测器简介(R语言)的更多相关文章
- R语言介绍
R语言简介 R语言是一种为统计计算和图形显示而设计的语言环境,是贝尔实验室(Bell Laboratories)的Rick Becker.John Chambers和Allan Wilks开发的S语言 ...
- R语言学习笔记:小试R环境
买了三本R语言的书,同时使用来学习R语言,粗略翻下来感觉第一本最好: <R语言编程艺术>The Art of R Programming <R语言初学者使用>A Beginne ...
- R语言-单一变量分析
R语言简介: R语言是一门专用于统计分析的语言,有大量的内置函数和第三方库来制作基于数据的表格 准备工作 安装R语言 https://cran.rstudio.com/bin/windows/base ...
- 数据攻略●R语言自述
(注明:以下文章均在Linux操作系统下执行) 一.R语言简介 R语言是用于统计分析,图形表示和报告的编程语言和软件环境.R语言由Ross Ihaka和Robert Gentleman在新西兰奥克兰大 ...
- Mac下R语言环境搭建
Mac下R语言环境搭建 博主在数据分析的时候一直用的python(MATLAB太重了),最近跟其他搞学术的人合作,需要用一下R语言,所以也打算顺便学习一下R. R语言简介 R语言是用于统计分析,图形表 ...
- 【机器学习与R语言】1-机器学习简介
目录 1.基本概念 2.选择机器学习算法 3.使用R进行机器学习 1.基本概念 机器学习:发明算法将数据转化为智能行为 数据挖掘 VS 机器学习:前者侧重寻找有价值的信息,后者侧重执行已知的任务.后者 ...
- R语言入门(一)简介安装
数据挖掘常用的语言有R语言,python,SQL等,其中R语言最受欢迎.(注:SQL Server包含微软研究院开发的两种数据挖掘算法:Microsoft决策树和Microsoft聚集,此外还支持第三 ...
- R语言统计学习-1简介
一. 统计学习概述 统计学习是指一组用于理解数据和建模的工具集.这些工具可分为有监督或无监督.1.监督学习:用于根据一个或多个输入预测或估计输出.常用于商业.医学.天体物理学和公共政策等领域.2.无监 ...
- R语言ggplot2 简介
ggplot2是一个绘制可视化图形的R包,汲取了R语言基础绘图系统(graphics) 和l attice包的优点,摒弃了相关的缺点,创造出来的一套独立的绘图系统: ggplot2 有以下几个特点: ...
- R+openNLP︱openNLP的六大可实现功能及其在R语言中的应用
每每以为攀得众山小,可.每每又切实来到起点,大牛们,缓缓脚步来俺笔记葩分享一下吧,please~ --------------------------- openNLP是NLP中比较好的开源工具,R语 ...
随机推荐
- MIsc writeup
1. 杂项 图片里面有什么 ,附件为一张图片 通过Binwalk查看发现有压缩包,通过foremost分离一下. 打开输出文件,发现里面有两个图片. 00000000.png是原图,00000722. ...
- 4.1IDA基础设置--《恶意代码分析实战》
1.加载一个可执行文件 ① 选项一:当加载一个文件(如PE文件),IDA像操作系统加载器一样将文件映射到内存中. ② 选项三:Binary File:将文件作为一个原始的二进制文件进行反汇编,例如文件 ...
- Day37:正则表达式详解
正则表达式 1.1 概述 正则表达式可以用一些规定的字符来制定规则,并用来校验数据格式的合法性. 比如我们在网站上输入用户账号,要求我们输入的账号信息要符合账号的格式,而校验我们输入的账号格式是否正确 ...
- pycharm 小技巧
ctrl键 + B 查看定义源代码 alt键 + enter键 查看帮助 ctrl键 + shift键 + -号 所有代码隐藏 ctrl键 + shift键 + +号 所有代码展示 ctrl键 + D ...
- 论文解读丨【CVPR 2022】不使用人工标注提升文字识别器性能
摘要:本文提出了一种针对文字识别的半监督方法.区别于常见的半监督方法,本文的针对文字识别这类序列识别问题做出了特定的设计. 本文分享自华为云社区<[CVPR 2022] 不使用人工标注提升文字识 ...
- Go语言与其他高级语言的区别
概述: go语言与其他语言相比,go语言的关键字非常少,只有25个,c语言有37个,c++有84个,python有33个,java有53个. 差异1:go语言不允许隐式转换,别名和原有类型也不能进行隐 ...
- Java开发学习(四十九)----MyBatisPlus更新语句之乐观锁
1.概念 在讲解乐观锁之前,我们还是先来分析下问题: 业务并发现象带来的问题:秒杀 假如有100个商品或者票在出售,为了能保证每个商品或者票只能被一个人购买,如何保证不会出现超买或者重复卖 对于这一类 ...
- 推荐给Amy的书单
目录 皮囊 推荐等级 ※ ※ ※ ※ ※ 白夜行 推荐等级 ※ ※ ※ ※ ※ 人生 推荐等级 ※ ※ ※ ※ 活着 推荐等级 ※ ※ ※ ※ 许三观卖血记 推荐等级 ※ ※ ※ ※ 皮囊 推荐等级 ...
- 为什么网络I/O会被阻塞?
摘要:I/O 其实就是 input 和 output 的缩写,即输入/输出. 本文分享自华为云社区<为啥网络IO会被阻塞呢>,作者: 龙哥手记. 我们应该都知道 socket(套接字),你 ...
- python进阶之路8 字典、元组、集合内置方法 编码理论
内容回顾 作业讲解 1.前期不熟练的情况下一定要先写注释 2.一定要仔细思考每一行代码的含义 3.自己不会的代码或者不熟练的代码一定要多敲多练 数据类型内置方法简介 所有的数据类型基本上都自带了一些操 ...