{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# Distance Based Statistical Method for Planar Point Patterns\n", "\n", "**Authors: Serge Rey and Wei Kang **\n", "\n", "## Introduction\n", "\n", "Distance based methods for point patterns are of three types:\n", "\n", "* [Mean Nearest Neighbor Distance Statistics](#Mean-Nearest-Neighbor-Distance-Statistics)\n", "* [Nearest Neighbor Distance Functions](#Nearest-Neighbor-Distance-Functions)\n", "* [Interevent Distance Functions](#Interevent-Distance-Functions)\n", "\n", "In addition, we are going to introduce a computational technique [Simulation Envelopes](#Simulation-Envelopes) to aid in making inferences about the data generating process. An [example](#CSR-Example) is used to demonstrate how to use and interprete simulation envelopes." ] }, { "cell_type": "code", "execution_count": 1, "metadata": {}, "outputs": [], "source": [ "from scipy import spatial\n", "import libpysal as ps\n", "import numpy as np\n", "from pointpats import ripley\n", "%matplotlib inline\n", "import matplotlib.pyplot as plt" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Mean Nearest Neighbor Distance Statistics\n", "\n", "The nearest neighbor(s) for a point $u$ is the point(s) $N(u)$ which meet the condition\n", "$$d_{u,N(u)} \\leq d_{u,j} \\forall j \\in S - u$$\n", "\n", "The distance between the nearest neighbor(s) $N(u)$ and the point $u$ is nearest neighbor distance for $u$. After searching for nearest neighbor(s) for all the points and calculating the corresponding distances, we are able to calculate mean nearest neighbor distance by averaging these distances.\n", "\n", "It was demonstrated by Clark and Evans(1954) that mean nearest neighbor distance statistics distribution is a normal distribution under null hypothesis (underlying spatial process is CSR). We can utilize the test statistics to determine whether the point pattern is the outcome of CSR. If not, is it the outcome of cluster or regular\n", "spatial process?" ] }, { "cell_type": "code", "execution_count": 2, "metadata": {}, "outputs": [], "source": [ "points = np.array([[66.22, 32.54], [22.52, 22.39], [31.01, 81.21],\n", " [9.47, 31.02], [30.78, 60.10], [75.21, 58.93],\n", " [79.26, 7.68], [8.23, 39.93], [98.73, 77.17],\n", " [89.78, 42.53], [65.19, 92.08], [54.46, 8.48]])" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Nearest Neighbor Distance Functions\n", "\n", "Nearest neighbour distance distribution functions (including the nearest “event-to-event” and “point-event” distance distribution functions) of a point process are cumulative distribution functions of several kinds -- $G, F, J$. By comparing the distance function of the observed point pattern with that of the point pattern from a CSR process, we are able to infer whether the underlying spatial process of the observed point pattern is CSR or not for a given confidence level." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### $G$ function - event-to-event\n", "\n", "The $G$ function is a kind of \"cumulative\" density describing the distribution of distances within a point pattern. For a given distance $d$, $G(d)$ is the proportion of nearest neighbor distances that are less than $d$. To express this, we first need to define the nearest neighbor distance, which is the smallest distance from each observation $i$ to some other observation $j$, where $j \\neq i$:\n", "$$min_{j\\neq i}\\{d_{ij}\\} = d^*_i$$\n", "\n", "With this, we can define the $G$ function as a cumulative density function:\n", "$$G(d) = \\frac{1}{N}\\sum_{i=1}^N \\mathcal{I}(d^*_i < d)$$\n", "where $\\mathcal{I}(.)$ is an *indicator function* that is $1$ when the argument is true and is zero otherwise. In simple terms, $G(d)$ gives the percentage of of nearest neighbor distances ($d^*_i$) that are smaller than $d$; when $d$ is very small, $G(d)$ is close to zero. When $d$ is large, $G(d)$ approaches one. \n", "\n", "Analytical results about $G$ are available assuming that the \"null\" process of locating points in the study area is completely spatially random. In a completely spatially random process, the $G(d)$ value should be:\n", "$$\n", "G(d) = 1-e^{-\\lambda \\pi d^2}\n", "$$\n", "Practically, we assess statistical significance for the $G(d)$ function using simulations, where a known spatially-random process is generated and then analyzed. This partially accounts for issues with irregularly-shaped study areas, where locations of points are constrained. \n", "\n", "In practice, we use the ripley.g_test function to conduct a test on the $G(d)$. It estimates a value of $G(d)$ for a set of values (called the support). To compute the $G$ function for ten values of $d$ ranging from the smallest possible to the largest values in the data:" ] }, { "cell_type": "code", "execution_count": 3, "metadata": {}, "outputs": [], "source": [ "g_test = ripley.g_test(points, support=10)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "All statistical tests in the pointpats.distance_statistics return a collections.namedtuple object with the following properties:\n", "- support, which contains the distance values ($d$) used to compute the distance statistic. \n", "- statistic, which expresses the value of the requested function at each value of $d$ in the support. \n", "- pvalue, which expresses the fraction of observed simulations (under a completely spatially random process) that are more extreme than the observed statistics. \n", "- simulations, which stores the simulated values of the statistic under a spatially random process. Generally, this is *not* saved (for efficiency reasons), but can be requested using keep_simulations. " ] }, { "cell_type": "code", "execution_count": 4, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "array([ 0. , 3.84791574, 7.69583148, 11.54374723, 15.39166297,\n", " 19.23957871, 23.08749445, 26.93541019, 30.78332593, 34.63124168])" ] }, "execution_count": 4, "metadata": {}, "output_type": "execute_result" } ], "source": [ "g_test.support" ] }, { "cell_type": "code", "execution_count": 5, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "array([0. , 0. , 0. , 0.16666667, 0.16666667,\n", " 0.25 , 0.58333333, 0.83333333, 0.91666667, 1. ])" ] }, "execution_count": 5, "metadata": {}, "output_type": "execute_result" } ], "source": [ "g_test.statistic" ] }, { "cell_type": "code", "execution_count": 6, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "array([0.00e+00, 0.00e+00, 0.00e+00, 2.89e-02, 1.10e-03, 1.00e-04,\n", " 4.30e-03, 6.10e-02, 7.33e-02, 0.00e+00])" ] }, "execution_count": 6, "metadata": {}, "output_type": "execute_result" } ], "source": [ "g_test.pvalue" ] }, { "cell_type": "code", "execution_count": 7, "metadata": {}, "outputs": [], "source": [ "g_test.simulations" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "To make a plot of the statistic, the statistic is generally plotted on the vertical axis and the support on the horizontal axis. Here, we will show the median simulated value of $G(d)$ as well." ] }, { "cell_type": "code", "execution_count": 8, "metadata": {}, "outputs": [], "source": [ "g_test = ripley.g_test(points, support=10, keep_simulations=True)" ] }, { "cell_type": "code", "execution_count": 9, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "