This is a python implementation of spatial entropy, inspired by the R package spatentropy. For now, two spatial entropy methods have been implemented:
- Leibovici’s entropy
- Altieri's entropy
It's available on PyPI
pip install spatialentropy
Let's generate some fake data first:
import numpy as np
points = 100 * np.random.randn(10000, 2) + 1000
types = np.random.choice(range(30), 10000)
Here we have 10,000 points and then we assigned each point with a category from 30 categories.
from spatialentropy import leibovici_entropy
e = leibovici_entropy(points, types)
e.entropy
To calculate the leibovici entropy, we need to set up a distance or an interval to define the co-occurrences.
from spatialentropy import leibovici_entropy
# set the distance cut-off to 5
e = leibovici_entropy(points, types, d=5)
# if you want to change the base of log
e = leibovici_entropy(points, types, base=2)
e.entropy # to get the entropy value
e.adj_matrix # to get the adjacency matrix
e.pairs_counts # to get the counts for each pair of co-occurrences
To calculate the altieri entropy, we need to set up intervals to define the co-occurrences.
from spatialentropy import altieri_entropy
# set cut=2, it means we will create 3 intervals evenly from [0,max]
e = altieri_entropy(points, types, cut=2)
# or you want to define your own intervals
e = altieri_entropy(points, types, cut=[0,4,10])
e.entropy # to get the entropy value, e.entropy = e.mutual_info + e.residue
e.mutual_info # the spatial mutual information
e.residue # the spatial residue entropy
e.adj_matrix # to get the adjacency matrix