Multi-group Segregation Indices

%load_ext watermark
%watermark -a 'eli knaap' -v -d -u -p segregation,geopandas,libpysal
Author: eli knaap

Last updated: 2026-09-04

Python implementation: CPython
Python version       : 3.14.7
IPython version      : 9.17.1

segregation: 2.5.6.dev83+g2e095ced1
geopandas  : 1.1.4
libpysal   : 4.15.0

Classes for computing multigroup segregation indices are in the multigroup module

import geopandas as gpd
import matplotlib.pyplot as plt

from libpysal.examples import load_example
from segregation.multigroup import MultiDissim, MultiInfoTheory
sacramento = gpd.read_file(load_example("Sacramento1").get_path("sacramentot2.shp"))
sacramento = sacramento.to_crs(sacramento.estimate_utm_crs())

Aspatial Segregation Indices

multi_dissim = MultiDissim(sacramento, groups=['WHITE', 'BLACK', 'HISP'])
multi_dissim.statistic
np.float64(0.42469982288295693)
multi_info = MultiInfoTheory(sacramento, groups=['WHITE', 'BLACK', 'HISP'])
multi_info.statistic
np.float64(0.1800803002655424)

Spatial Segregation Indices

As with single group measures, generalized spatial versions of multigroup indices can be created by passing a distance parameter or a W/Network object.

Note: the network-distance workflow below relies on the optional pandarm package and a pre-built network file, so those cells are tagged skip-execution and are not run during automated testing.

spatial_multi_dissim = MultiDissim(sacramento, groups=['WHITE', 'BLACK', 'HISP'], distance=2000)
spatial_multi_dissim.statistic
np.float64(0.37767566088850035)
from pandana import Network
net = Network.from_hdf5("../40900.h5")
net_multi_dissim  = MultiDissim(sacramento, groups=['WHITE', 'BLACK', 'HISP'], distance=2000, network=net, decay='linear')
net_multi_dissim.statistic
0.3997196467720179

Batch-Computing Multi-Group Measures

To compute all single group indices in one go, the package provides a wrapper function in the batch module similar to single-group indices

from segregation.batch import batch_compute_multigroup
all_multigroup = batch_compute_multigroup(sacramento, groups=['WHITE', 'BLACK', 'HISP'],)
all_multigroup
Statistic
Name
GlobalDistortion 0.0444
MultiDissim 0.4247
MultiDivergence 0.1317
MultiDiversity 0.7314
MultiGini 0.5565
MultiInfoTheory 0.1801
MultiNormExposure 0.1914
MultiRelativeDiversity 0.1686
MultiSquaredCoefVar 0.1453
SimpsonsConcentration 0.5877
SimpsonsInteraction 0.4123