Models of spatial interaction

Classes to calculate gravity-based measures of potential spatial accessibility.

These measures assign accessibility scores to demand locations based on their proximity to supply locations. The main model used here is a gravitational model using non-standard decay functions.

References

Luo, W. and Qi, Y. (2009) An enhanced two-step floating catchment area (E2SFCA) method for measuring spatial accessibility to primary care physicians. Health and Place 15, 11001107.

Luo, W. and Wang, F. (2003) Measures of spatial accessibility to health care in a GIS environment: synthesis and a case study in the Chicago region. Environment and Planning B: Planning and Design 30, 865884.

Wang, F. (2012) Measurement, optimization, and impact of health care accessibility: a methodological review. Annals of the Association of American Geographers 102, 11041112.

Wan, Neng & Zou, Bin & Sternberg, Troy. (2012). A 3-step floating catchment area method for analyzing spatial access to health services. International Journal of Geographical Information Science. 26. 1073-1089. 10.1080/13658816.2011.624987.

Gravity Model

class aceso.GravityModel(decay_function, decay_params={}, huff_normalization=False, suboptimality_exponent=1.0)[source]

Represents an instance of a gravitational model of spatial interaction.

Different choices of decay function lead to the following models:
  • Standard gravity models
  • Two-Step Floating Catchment Area (2SFCA) models
  • Enhanced 2SFCA (E2SFCA) models
  • Three-Step FCA (3SFCA) models
  • Modified 2SFCA (M2SFCA) models
  • Kernel Density 2SFCA (KD2SFCA) models

Initialize a gravitational model of spatial accessibility.

Parameters:
  • decay_function (callable or str) –

    If str, the name of a decay function in the decay module. Some available names are ‘uniform’, ‘raised_cosine’, and ‘gaussian_decay’.

    If callable, a vectorized numpy function returning demand dropoffs by distance.

  • decay_params (mapping) – Parameter: value mapping for each argument of the specified decay function. These parameters are bound to the decay function to create a one-argument callable.
  • huff_normalization (bool) –

    Flag used to normalize demand through Huff-like interaction probabilities.

    Used in 3SFCA to curtail demand over-estimation.

  • suboptimality_exponent (float) –

    Used in M2SFCA to indicate the extent to account for network suboptimality in access. This parameter allows for the differentiation between two scenarios:

    1. Three demand locations each at a distance of 1.0 mile from the sole provider;
    2. Three demand locations each at a distance of 2.0 miles from the sole provider.

    Values greater than 1.0 for this parameter will result in accessibility scores whose weighted average is less than the overall supply.

static _bind_decay_function_parameters(decay_function, decay_params)[source]

Bind the given parameters for the decay function.

Returns:A one-argument callable that accepts one-dimensional numpy arrays.
Return type:callable
_calculate_demand_potentials(distance_matrix, demand_array)[source]

Calculate the demand potential at each input location.

Returns:An array of demand at each supply location.
Return type:array
_calculate_interaction_probabilities(distance_matrix)[source]

Calculate the demand potential at each input location.

Parameters:distance_matrix (np.ndarray(float)) – A matrix whose entry in row i, column j is the distance between demand point i and supply point j.
Returns:A 2D-array of the interaction probabilities between each demand point and supply point.
Return type:array
calculate_accessibility_scores(distance_matrix, demand_array=None, supply_array=None)[source]

Calculate accessibility scores from a 2D distance matrix.

Parameters:
  • distance_matrix (np.ndarray(float)) – A matrix whose entry in row i, column j is the distance between demand point i and supply point j.
  • demand_array (np.array(float) or None) – A one-dimensional array containing demand multipliers for each demand location. The length of the array must match the number of rows in distance_matrix.
  • supply_array (np.array(float) or None) – A one-dimensional array containing supply multipliers for each supply location. The length of the array must match the number of columns in distance_matrix.
Returns:

An array of access scores at each demand location.

Return type:

array

Two-Step Floating Catchment Area (2SFCA)

class aceso.TwoStepFCA(radius)[source]

Bases: aceso.gravity.GravityModel

Represents an instance of the standard Two-Step Floating Catchment Area (2SFCA) model.

Initialize a 2SFCA model with the specified radius.

Parameters:radius (float) – The radius of each floating catchment. Pairs of points further than this distance apart are deemed mutually inaccessible. Points within this radius contribute the full demand amount (with no decay).

Three-Step Floating Catchment Area (3SFCA)

class aceso.ThreeStepFCA(decay_function, decay_params)[source]

Bases: aceso.gravity.GravityModel

Represents an instance of the Three-Step Floating Catchment Area (3SFCA) model.

In 3SFCA, the presence of nearby options influences the amount of demand pressure each demand location places on other supply locations. A demand location with many nearby options will not exert the same demand on faraway supply locations as a demand location at the same distance that has no nearby alternatives.

This model is designed to account for this observation and reduce the demand over-estimation that may take place with ordinary 2SFCA.

References

Wan, Neng & Zou, Bin & Sternberg, Troy. (2012). A 3-step floating catchment area method for analyzing spatial access to health services. International Journal of Geographical Information Science. 26. 1073-1089. 10.1080/13658816.2011.624987.

Initialize a gravitational model of spatial accessibility using Huff-like normalization.

Parameters:
  • decay_function (callable or str) –

    If str, the name of a decay function in the decay module. Some available names are ‘uniform’, ‘raised_cosine’, and ‘gaussian_decay’.

    If callable, a vectorized numpy function returning demand dropoffs by distance.

  • decay_params (mapping) – Parameter: value mapping for each argument of the specified decay function. These parameters are bound to the decay function to create a one-argument callable.