access.weights.gravity¶
- access.weights.gravity(scale, alpha, min_dist=0)[source]¶
Create a gravity function from a scale \(s\) and \(\alpha\) parameters as well as an optional minimum distance \(x_\text{min}\). The function is of the form \(f(x) = (\text{max}(x, x_\text{min})/s)^\alpha\). Note that there is no overall normalization.
- Parameters:
- scalefloat
Scaling value, normalizing the function input.
- alphafloat
Power to which the normalized inputs are raised. Note that it is not implicitly negative (i.e., \(x^\alpha\) instead of \(1/x^\alpha\).
- min_distfloat
A ‘standard’ issue with gravity model is the infinite potential at 0 distance or time. This can be rectified crudely by specifying a minimum distance, and setting any input exceeding that minimum to the minimum itself. The default threshold is 0.
- Returns:
- weight_functionfunction
Function returning weight, for input distance or time, x.
Examples
Import the weights:
>>> from access import weights
Create a step function with thresholds at 20, 40, and 60. Travel costs are in minutes here, but the code cannot tell if you mix units!
>>> fn = weights.gravity(scale = 20, alpha = -2, min_dist = 1)
>>> {t : round(fn(t), 2) for t in [0, 1, 2, 20, 40, 60]} {0: 400.0, 1: 400.0, 2: 100.0, 20: 1.0, 40: 0.25, 60: 0.11}