Calculates gravity-based accessibility using a decay function specified by the user.
This function is generic over any kind of numeric travel cost, such as distance, time and money.
Usage
gravity(
travel_matrix,
land_use_data,
opportunity,
travel_cost,
decay_function,
group_by = character(0),
active = TRUE,
fill_missing_ids = TRUE
)
Arguments
- travel_matrix
A data frame. The travel matrix describing the costs (i.e. travel time, distance, monetary cost, etc.) between the origins and destinations in the study area. Must contain the columns
from_id
,to_id
and any others specified intravel_cost
.- land_use_data
A data frame. The distribution of opportunities within the study area cells. Must contain the columns
id
and any others specified inopportunity
.- opportunity
A string. The name of the column in
land_use_data
with the number of opportunities/resources/services to be considered when calculating accessibility levels.- travel_cost
A string. The name of the column in
travel_matrix
with the travel cost between origins and destinations.- decay_function
A
fuction
that converts travel cost into an impedance factor used to weight opportunities. This function should take anumeric
vector and also return anumeric
vector as output, with the same length as the input. For convenience, the package currently includes the following functions:decay_binary()
,decay_exponential()
,decay_power()
anddecay_stepped()
. See the documentation of each decay function for more details.- group_by
A
character
vector. When notcharacter(0)
(the default), indicates thetravel_matrix
columns that should be used to group the accessibility estimates by. For example, iftravel_matrix
includes a departure time column, that specifies the departure time of each entry in the data frame, passing"departure_time"
to this parameter results in accessibility estimates grouped by origin and by departure time.- active
A logical. Whether to calculate active accessibility (the of opportunities that can be reached from a given origin, the default) or passive accessibility (by how many people each destination can be reached).
- fill_missing_ids
A
logical
. When calculating grouped accessibility estimates (i.e. whenby_col
is notNULL
), some combinations of groups and origins may be missing. For example, if a single trip can depart from originA
at 7:15am and reach destinationB
within 55 minutes, but no trips departing fromA
at 7:30am can be completed at all, this second combination will not be included in the output. WhenTRUE
(the default), the function identifies which combinations would be left out and fills their respective accessibility values with 0, which incurs in a performance penalty.
Value
A data frame containing the accessibility estimates for each
origin/destination (depending if active
is TRUE
or FALSE
) in the
travel matrix.
Examples
if (FALSE) { # identical(tolower(Sys.getenv("NOT_CRAN")), "true")
data_dir <- system.file("extdata", package = "accessibility")
travel_matrix <- readRDS(file.path(data_dir, "travel_matrix.rds"))
land_use_data <- readRDS(file.path(data_dir, "land_use_data.rds"))
df_linear <- gravity(
travel_matrix,
land_use_data,
decay_function = decay_linear(cutoff = 50),
opportunity = "schools",
travel_cost = "travel_time"
)
head(df_linear)
df_exp <- gravity(
travel_matrix,
land_use_data,
decay_function = decay_exponential(decay_value = 0.5),
opportunity = "schools",
travel_cost = "travel_time"
)
head(df_exp)
}