Methods for estimating and performing inference for spatial and non-spatial segregation in PySAL.
Project description
Segregation Measures Framework in PySAL
Methods for estimating and performing inference for spatial and non-spatial segregation.
Easily estimate several segregation measures:
Perform comparative segregation:
What is segregation?
The PySAL segregation module allows users to estimate several segregation measures and perform inference for single measures and comparative inference in a concise way.
It can be divided into two frameworks: point estimation and inference wrappers. The first framework could be, in turn, subdivided into non-spatial indexes and spatial indexes. The inference approach present functions to perform inference for a single measure or for comparison between two measures.
Installation
i) pip
directly running in the prompt:
pip install segregation
ii) Another recommended method for installing segregation is with anaconda. Clone this repository or download it manually then cd
into the directory and run the following commands (this will install the development version):
$ conda env create -f environment.yml
$ source activate segregation
$ python setup.py develop
iii) pip
directly from this repository running in the prompt (if you experience an issue trying to install this way, take a look at this discussion: https://github.com/pysal/segregation/issues/15):
$ pip install git+https://github.com/pysal/segregation
Segregation uses:
- libpysal
- pandas
- geopandas
- numpy
- scipy
- scikit-learn
Getting started
All input data for this module rely on pandas DataFrames for the non-spatial measures and geopandas DataFrames for spatial ones. In a nutshell, the user needs to pass the pandasDataFrame as its first argument and then two string that represent the variable name of population frequency of the group of interest (variable group_pop_var) and the total populationof the unit (variable total_pop_var).
So, for example, if a user would want to fit a dissimilarity index (D) to a DataFrame called df to a specific group with frequency freq with each total population population, a usual call would be something like this:
>>> from segregation.non_spatial_indexes import Dissim
>>> index = Dissim(df, "freq", "population")
If a user would want to fit a spatial dissimilarity index (SD) to a geopandas DataFrame called gdf to a specific group with frequency freq with each total population population, a usual call would be something like this:
>>> from segregation.spatial_indexes import Spatial_Dissim
>>> spatial_index = Spatial_Dissim(gdf, "freq", "population")
Every class of segregation has a statistic and a core_data attributes. The first is a direct access to the point estimation of the specific segregation measure and the second attribute gives access to the main data that the module uses internally to perform the estimates. To see the estimated D in the first generic example above, the user would have just to run index.statistic to see the fitted value.
For point estimation, all the measures available can be summarized in the following table:
Measure | Class/Function | Spatial? | Function Inputs |
---|---|---|---|
Dissimilarity (D) | Dissim | No | - |
Gini (G) | Gini_Seg | No | - |
Entropy (H) | Entropy | No | - |
Isolation (xPx) | Isolation | No | - |
Exposure (xPy) | Exposure | No | - |
Atkinson (A) | Atkinson | No | b |
Correlation Ratio (V) | Correlation_R | No | - |
Concentration Profile (R) | Con_Prof | No | m |
Modified Dissimilarity (Dct) | Modified_Dissim | No | iterations |
Modified Gini (Gct) | Modified_Gini_Seg | No | iterations |
Bias-Corrected Dissimilarity (Dbc) | Bias_Corrected_Dissim | No | B |
Density-Corrected Dissimilarity (Ddc) | Density_Corrected_Dissim | No | - |
Spatial Proximity Profile (SPP) | Spatial_Prox_Prof | Yes | m |
Spatial Dissimilarity (SD) | Spatial_Dissim | Yes | w, standardize |
Boundary Spatial Dissimilarity (BSD) | Boundary_Spatial_Dissim | Yes | standardize |
Perimeter Area Ratio Spatial Dissimilarity (PARD) | Perimeter_Area_Ratio_Spatial_Dissim | Yes | standardize |
Spatial Isolation (SxPx) | Spatial_Isolation | Yes | alpha, beta |
Spatial Exposure (SxPy) | Spatial_Exposure | Yes | alpha, beta |
Spatial Proximity (SP) | Spatial_Proximity | Yes | alpha, beta |
Relative Clustering (RCL) | Relative_Clustering | Yes | alpha, beta |
Delta (DEL) | Delta | Yes | - |
Absolute Concentration (ACO) | Absolute_Concentration | Yes | - |
Relative Concentration (RCO) | Relative_Concentration | Yes | - |
Absolute Centralization (ACE) | Absolute_Centralization | Yes | - |
Relative Centralization (RCE) | Relative_Centralization | Yes | - |
Spatial Information Theory (SIT) | Spatial_Information_Theory | Yes | w, unit_in_local_env, original_crs |
Once the segregation indexes are fitted, the user can perform inference to shed light for statistical significance in regional analysis. The summary of the inference framework is presented in the table below:
Inference Type | Class/Function | Function main Inputs | Function Outputs |
---|---|---|---|
Single Value | Infer_Segregation | seg_class, iterations_under_null, null_approach, two_tailed | p_value, est_sim, statistic |
Two Value | Compare_Segregation | seg_class_1, seg_class_2, iterations_under_null, null_approach | p_value, est_sim, est_point_diff |
If you are new to segregation and PySAL you will best get started with our documentation! We encourage you to take a look at some examples of this module in the notebooks repo!
Contribute
PySAL-segregation is under active development and contributors are welcome.
If you have any suggestion, feature request, or bug report, please open a new issue on GitHub. To submit patches, please follow the PySAL development guidelines and open a pull request. Once your changes get merged, you’ll automatically be added to the Contributors List.
Support
If you are having issues, please talk to us in the gitter room.
License
The project is licensed under the BSD license.
Funding
Award #1831615 RIDIR: Scalable Geospatial Analytics for Social Science Research
This study was financed in part by the Coordenação de Aperfeiçoamento de Pessoal de Nível Superior - Brasil (CAPES) - Process number 88881.170553/2018-01
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
File details
Details for the file segregation-1.0.5.tar.gz
.
File metadata
- Download URL: segregation-1.0.5.tar.gz
- Upload date:
- Size: 34.4 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/1.13.0 pkginfo/1.4.2 requests/2.20.0 setuptools/39.1.0 requests-toolbelt/0.9.1 tqdm/4.32.1 CPython/3.6.5
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | b72a9c59f9a0b9585854407efda4ad9e7ffe77c6a9a77ae7c4b749971627047d |
|
MD5 | 3770f2d3850c48d698c3e4d547173b2d |
|
BLAKE2b-256 | 5a71f837682b8657a15553503ac9b2da23aaae4ca4f37e4364b4b36c025f94e3 |
File details
Details for the file segregation-1.0.5-py3-none-any.whl
.
File metadata
- Download URL: segregation-1.0.5-py3-none-any.whl
- Upload date:
- Size: 46.3 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/1.13.0 pkginfo/1.4.2 requests/2.20.0 setuptools/39.1.0 requests-toolbelt/0.9.1 tqdm/4.32.1 CPython/3.6.5
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 701e7c00650e0885694d86b31f70c1711e9f38373e91d532b3ae1466a06e7d01 |
|
MD5 | 99e60abe513705282f53f88138926b32 |
|
BLAKE2b-256 | 5e8ff16195c3fc17892240a77e58e88d3daaff19764ae8bb607e9043c15fb909 |