# 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()
```

(png, svg, pdf) 