Geographical Detectors for Spatial Stratified Heterogeneity Analysis

Yongze Song


Spatial stratified heterogeneity can be measured using geographical detectors (Wang et al. 2010, Wang et al. 2016).

GD package consists of four parts:

GD package includes three datasets:

Further information can be found on the manual of GD package.

More applications of geographical detectors are listed on Geodetector website.

Discretization and optimal discretization

Categorical variables are required for geographical detectors, so continuous variables should be discretized before modelling. GD package provides two options: discretization with given parameters, including discretization methods and numbers of intervals, and optimal discretization with a series of optional parameter combinations. Dataset ndvi_40 is used as an example for explanation.

#>   NDVIchange Climatezone Mining Tempchange Precipitation   GDP Popdensity
#> 1    0.11599         Bwk    low    0.25598        236.54 12.55    1.44957
#> 2    0.01783         Bwk    low    0.27341        213.55  2.69    0.80124
#> 3    0.13817         Bsk    low    0.30247        448.88 20.06   11.49432

Discretization with given parameters: disc

## discretization methods: equal, natural, quantile (default), geometric, sd and manual
ds1 <- disc(ndvi_40$Tempchange, 4)

Further information can be found on the manual of GD package.

Optimal discretization: optidisc

## set optional discretization methods and numbers of intervals
discmethod <- c("equal","natural","quantile","geometric","sd")
discitv <- c(3:7)
## optimal discretization
odc1 <- optidisc(continuous_variable = ndvi_40$Tempchange, 
                 response_variable = ndvi_40$NDVIchange, 
                 discmethod, discitv)

Geographical detectors

GD package provides two options for geographical detectors modelling: * four functions are performed step by step: gd for factor detector, riskmean and gdrisk for risk detector, gdinteract for interaction detector and gdeco for ecological detector; * optimal discretization and geographical detectors are performed using a one-step function gdm.

A one-step function: gdm

## NDVI: ndvi_40
## define elements orders of categorical variables
cz <- c("Bwk","Bsk","Dwa","Dwb","Dwc") ## climate zone
mp <- c("very low","low","medium","high","very high") ## mining production
ndvi_40$Climatezone <- as.numeric(1:5)[match(ndvi_40$Climatezone, cz)]
ndvi_40$Mining <- as.numeric(1:5)[match(ndvi_40$Mining, mp)]
## set optional parameters of optimal discretization
## optional methods: equal, natural, quantile, geometric, sd and manual
discmethod <- c("equal","natural","quantile")
discitv <- c(4:6)
## "gdm" function
ndvigdm <- gdm(NDVIchange ~ Climatezone + Mining + Tempchange + GDP,
               continuous_variable = c("Tempchange", "GDP"),
               data = ndvi_40,
               discmethod = discmethod, discitv = discitv)

## H1N1: h1n1_100
## set optional parameters of optimal discretization
discmethod <- c("equal","natural","quantile","geometric","sd")
discitv <- c(3:7)
continuous_variable <- colnames(h1n1_100)[-c(1,11)]
## "gdm" function
h1n1gdm <- gdm(H1N1 ~ .,
               continuous_variable = continuous_variable,
               data = h1n1_100,
               discmethod = discmethod, discitv = discitv)

Factor detector: gd

## a categorical explanatory variable
g1 <- gd(NDVIchange ~ Climatezone, data = ndvi_40)

## multiple categorical explanatory variables
g2 <- gd(NDVIchange ~ ., data = ndvi_40[,1:3])

## multiple variables inclusing continuous variables
discmethod <- c("equal","natural","quantile","geometric","sd")
discitv <- c(3:7)
data_ndvi <- ndvi_40
odc1 <- optidisc(continuous_variable = data_ndvi[,4:7], 
                 response_variable = data_ndvi$NDVIchange, 
                 discmethod, discitv)
for (i in 4:7){
  data_ndvi[,i] <- stra(data_ndvi[,i], odc1[[i-3]]$itv)
g3 <- gd(NDVIchange ~ ., data = data_ndvi)

Risk detector: riskmean and gdrisk

Risk mean values by variables:

## categorical explanatory variables
rm1 <- riskmean(NDVIchange ~ Climatezone + Mining, data = ndvi_40)
## multiple variables inclusing continuous variables
rm3 <- riskmean(NDVIchange ~ ., data = data_ndvi)

Risk matrix:

## categorical explanatory variables
gr1 <- gdrisk(NDVIchange ~ Climatezone + Mining, data = ndvi_40)
## multiple variables inclusing continuous variables
gd3 <- gdrisk(NDVIchange ~ ., data = data_ndvi)

Interaction detector: gdinteract

## categorical explanatory variables
gi1 <- gdinteract(NDVIchange ~ Climatezone + Mining, data = ndvi_40)
## multiple variables inclusing continuous variables
gi3 <- gdinteract(NDVIchange ~ ., data = data_ndvi)

Ecological detector: gdeco

## categorical explanatory variables
ge1 <- gdeco(NDVIchange ~ Climatezone + Mining, data = ndvi_40)
## multiple variables inclusing continuous variables
gd3 <- gdeco(NDVIchange ~ ., data = data_ndvi)

Comparison of size effects of spatial unit

ndvilist <- list(ndvi_10, ndvi_20, ndvi_30, ndvi_40, ndvi_50)
su <- c(10,20,30,40,50) ## sizes of spatial units
gdlist <- list() ## list of all geographical detectors results
## set optional parameters of optimal discretization
discmethod <- c("equal","natural","quantile","geometric","sd")
discitv <- c(3:7)
## "gdm" function (~ 40s)
for (i in 1:length(su)){
  ndvidata <- ndvilist[[i]]
  gdlist[[i]] <- gdm(NDVIchange ~ .,
                     continuous_variable = c("Tempchange", "Precipitation", "GDP", "Popdensity"),
                     data = ndvidata,
                     discmethod = discmethod, discitv = discitv)
## size effects of spatial units
sesu(gdlist, su) 


Song Y (2018). GD: Geographical Detectors. R package,

Wang J, Li X, Christakos G, Liao Y, Zhang T, Gu X and Zheng X (2010). “Geographical Detectors-Based Health Risk Assessment and its Application in the Neural Tube Defects Study of the Heshun Region, China.” International Journal of Geographical Information Science, 24(1), pp. 107-127. doi: 10.1080/13658810802443457.

Wang J, Zhang T and Fu B (2016). “A measure of spatial stratified heterogeneity.” Ecological Indicators, 67, pp. 250-256. doi: 10.1016/j.ecolind.2016.02.052.

Song Y, Wang X, Wright G, Thatcher D, Wu P and Felix P (2018). “Traffic Volume Prediction With Segment-Based Regression Kriging and its Implementation in Assessing the Impact of Heavy Vehicles.” IEEE Transactions on Intelligent Transportation Systems, pp. 1-12. doi: 10.1109/TITS.2018.2805817.

Xu C and Wang J (2018). Geodetector Website.

Author and Contact

Yongze Song


Curtin University, Australia