Ripley’s K Function Estimators¶
Spatial correlation functions have been used in the astronomical context to estimate the probability of finding an object (e.g., a galaxy) within a given distance of another object [1].
Ripley’s K function is a type of estimator used to characterize the correlation
of such spatial point processes
[2], [3], [4], [5], [6].
More precisely, it describes correlation among objects in a given field.
The RipleysKEstimator class implements some
estimators for this function which provides several methods for
edge effects correction.
Basic Usage¶
The actual implementation of Ripley’s K function estimators lie in the method
evaluate, which take the following arguments: data, radii, and
optionally, mode.
The data argument is a 2D array which represents the set of observed
points (events) in the area of study. The radii argument corresponds to a
set of distances for which the estimator will be evaluated. The mode
argument takes a value on the following linguistic set
{none, translation, ohser, var-width, ripley}; each keyword represents a
different method to perform correction due to edge effects. See the API
documentation and references for details about these methods.
Instances of RipleysKEstimator can also be used as
callables (which is equivalent to calling the evaluate method).
Example¶
To use Ripley’s K Function Estimators from astropy’s stats sub-package:
import numpy as np
from matplotlib import pyplot as plt
from astropy.stats import RipleysKEstimator
rng = np.random.default_rng()
z = rng.uniform(low=5, high=10, size=(100, 2))
Kest = RipleysKEstimator(area=25, x_max=10, y_max=10, x_min=5, y_min=5)
r = np.linspace(0, 2.5, 100)
plt.plot(r, Kest.poisson(r), color='green', ls=':', label=r'$K_{pois}$')
plt.plot(r, Kest(data=z, radii=r, mode='none'), color='red', ls='--',
         label=r'$K_{un}$')
plt.plot(r, Kest(data=z, radii=r, mode='translation'), color='black',
         label=r'$K_{trans}$')
plt.plot(r, Kest(data=z, radii=r, mode='ohser'), color='blue', ls='-.',
         label=r'$K_{ohser}$')
plt.plot(r, Kest(data=z, radii=r, mode='var-width'), color='green',
         label=r'$K_{var-width}$')
plt.plot(r, Kest(data=z, radii=r, mode='ripley'), color='yellow',
         label=r'$K_{ripley}$')
plt.legend()
