sdev: Spatial Deviation

View source: R/sdev.R

sdevR Documentation

Spatial Deviation

Description

Compute the deviation of each territorial unit as regards to its geographical neighborhood. Neighborhood is defined either by contiguity order, by a distance value or by a personal matrix (travel time...)

Usage

sdev(x, var1, var2, type = "rel", xid, order, dist, mat)

Arguments

x

a sf object including var1 and var2.

var1

name of the numerator variable in x.

var2

name of the denominator variable in x.

type

type of deviation; "rel" for relative deviation, "abs" for absolute deviation (see Details).

xid

identifier field in x (to be used for importing a personal distance matrix). Default to the first column of x. (optional)

order

contiguity order.

dist

distance threshold defining the contiguity. The cartesian distance between units centroids is used by default; use mat to apply different metrics.

mat

a distance matrix (road distance, travel time...) between x units. Row and column names must fit xid identifiers. (optional)

Details

The relative spatial deviation is the ratio between var1/var2 and var1/var2 in the specified neighborhood. Values greater than 100 indicate that the unit ratio is greater than the ratio in its neighborhood. Values lower than 100 indicate that the unit ratio is lower than the ratio in its neighborhood.
The absolute spatial deviation is the amount of numerator that could be moved to obtain the same ratio in all units of its neighborhood.

Value

A vector is returned.

Examples

# Load data
library(sf)
com <- st_read(system.file("metroparis.gpkg", package = "MTA"), layer = "com", quiet = TRUE)
ept <- st_read(system.file("metroparis.gpkg", package = "MTA"), layer = "ept", quiet = TRUE)
cardist <- read.table(system.file("cardist.txt", package = "MTA"), check.names = FALSE)
cardist <- as.matrix(cardist)

# compute absolute spatial deviation in a neighborhood defined by a contiguity
# order of 1.
com$sdevabs <- sdev(x = com, var1 = "INC", var2 = "TH", order = 1, type = "abs")

#compute relative spatial deviation in a neighborhood defined within a distance
# of 5km between communes' centroids
com$sdevrel <- sdev(x = com, var1 = "INC", var2 = "TH", type = "rel", dist = 5000)

# compute absolute spatial deviation in a neighborhood defined within a road
# travel time of 10 minutes by car
com$scardevabs <- sdev(x = com, var1 = "INC", var2 = "TH", type = "abs", dist = 10, mat = cardist)

# compute relative spatial deviation in a neighborhood defined within a road
# travel time of 10 minutes by car
com$scardevrel <- sdev(x = com, var1 = "INC", var2 = "TH", type = "rel", dist = 10, mat = cardist)

if(require(mapsf)){
# relative deviation map
# set breaks
bks <- c(min(com$scardevrel), 75, 100, 125, 150, max(com$scardevrel))
# plot a choropleth map of the relative spatial deviation
mf_map(x = com, var = "scardevrel", type = "choro", leg_pos = "topleft",
       leg_title = "Relative Deviation\n(100 = spatial average)",
       breaks = bks, border = NA,
       pal = c("#91BFDB", "#E0F3F8", "#FEE090", "#FC8D59", "#D73027"))

# add EPT boundaries
mf_map(x = ept, col = NA, add = TRUE)

# layout
mf_layout(title = "Spatial Deviation (neighborhood : 10 minutes by car)",
          credits = paste0("Sources: GEOFLA® 2015 v2.1, Apur, impots.gouv.fr",
                           "\nMTA", packageVersion("MTA")),
          arrow = FALSE)
}

riatelab/MTA documentation built on Nov. 5, 2023, 7:47 p.m.