pysal.lib.weights.lag_spatial

pysal.lib.weights.lag_spatial(w, y)[source]

Spatial lag operator.

If w is row standardized, returns the average of each observation’s neighbors; if not, returns the weighted sum of each observation’s neighbors.

Parameters:
w : W

pysal.lib spatial weightsobject

y : array

numpy array with dimensionality conforming to w (see examples)

Returns:
wy : array

array of numeric values for the spatial lag

Examples

Setup a 9x9 binary spatial weights matrix and vector of data; compute the spatial lag of the vector.

>>> import pysal.lib
>>> import numpy as np
>>> w = pysal.lib.weights.lat2W(3, 3)
>>> y = np.arange(9)
>>> yl = pysal.lib.weights.spatial_lag.lag_spatial(w, y)
>>> yl
array([ 4.,  6.,  6., 10., 16., 14., 10., 18., 12.])

Row standardize the weights matrix and recompute the spatial lag

>>> w.transform = 'r'
>>> yl = pysal.lib.weights.spatial_lag.lag_spatial(w, y)
>>> yl
array([2.        , 2.        , 3.        , 3.33333333, 4.        ,
       4.66666667, 5.        , 6.        , 6.        ])

Explicitly define data vector as 9x1 and recompute the spatial lag

>>> y.shape = (9, 1)
>>> yl = pysal.lib.weights.spatial_lag.lag_spatial(w, y)
>>> yl
array([[2.        ],
       [2.        ],
       [3.        ],
       [3.33333333],
       [4.        ],
       [4.66666667],
       [5.        ],
       [6.        ],
       [6.        ]])

Take the spatial lag of a 9x2 data matrix

>>> yr = np.arange(8, -1, -1)
>>> yr.shape = (9, 1)
>>> x = np.hstack((y, yr))
>>> yl = pysal.lib.weights.spatial_lag.lag_spatial(w, x)
>>> yl
array([[2.        , 6.        ],
       [2.        , 6.        ],
       [3.        , 5.        ],
       [3.33333333, 4.66666667],
       [4.        , 4.        ],
       [4.66666667, 3.33333333],
       [5.        , 3.        ],
       [6.        , 2.        ],
       [6.        , 2.        ]])