A simple Python package for the geodetector
Project description
py-geodetector
A simple and efficient Python package for the Geographical Detector (GeoDetector).
Features
- Four Detectors: Factor, Interaction, Risk, and Ecological detectors.
- High Performance: Vectorized calculations using Pandas and NumPy for large-scale datasets.
- Flexible API: Supports both batch processing and interactive exploratory analysis.
- Auto Detection: Automatically identifies discrete/categorical variables as factors.
- Visualization: Built-in heatmap for interaction results with statistical significance markers.
Install
pip install py-geodetector
Usage
1. Data Preparation
- Format: pandas DataFrame.
- Y (Dependent Variable): Numerical/Continuous.
- X (Independent Variable): Categorical/Discrete. If your $X$ is continuous, you must discretize it first (e.g., using
pd.qcutor Jenks natural breaks).
2. Quick Start
from geodetector import load_example_data, GeoDetector
# Load example disease dataset
df = load_example_data()
# Initialize: Automatically detects discrete columns as factors if 'factors' is not provided
gd = GeoDetector(df, y='incidence')
print(f"Detected factors: {gd.factors}")
# 1. Factor Detector
# Batch detection for all factors
factor_df = gd.factor_detector()
# Single factor detection: returns (q_value, p_value)
q, p = gd.factor_detector('type')
# 2. Interaction Detector
# Full matrix calculation
interaction_df = gd.interaction_detector()
# Pairwise detection with relationship description
q_inter, relationship = gd.interaction_detector('type', 'region', relationship=True)
# 3. Ecological Detector
# Determine if the impact of two factors are significantly different
eco_df = gd.ecological_detector()
# 4. Risk Detector
# Compare average Y between sub-groups of a factor
risk_result = gd.risk_detector('type')
print(risk_result['risk']) # Mean values for each stratum
# 5. Visualization
# Plot interaction heatmap (red markers indicate significant ecological difference)
gd.plot(factors=['type', 'region', 'level'])
3. Visualization Result
The plot() method generates a heatmap of the interaction $q$-statistics. Red text indicates that the ecological detector shows a significant difference ($p < 0.05$) between those factors.
References
@article{wang2010geographical,
title={Geographical detectors-based health risk assessment and its application in the neural tube defects study of the Heshun Region, China},
author={Wang, Jin-Feng and Li, Xin-Hu and Christakos, George and Liao, Yi-Lan and Zhang, Tin and Gu, Xue and Zheng, Xiao-Ying},
journal={International Journal of Geographical Information Science},
volume={24},
number={1},
pages={107-127},
year={2010},
publisher={Taylor \& Francis}
}
Project details
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
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file py_geodetector-0.2.1.tar.gz.
File metadata
- Download URL: py_geodetector-0.2.1.tar.gz
- Upload date:
- Size: 6.8 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.13.5
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
1fa5f00fdc29ba31a50413a9949ff9f393f23563e0a30e83a78cb5c88d5a7f08
|
|
| MD5 |
865bfd72234b9504352b461d32488f18
|
|
| BLAKE2b-256 |
137a679172849602a63313c6047771d51b18b3d4bd694360f0f49a921207dc8a
|
File details
Details for the file py_geodetector-0.2.1-py3-none-any.whl.
File metadata
- Download URL: py_geodetector-0.2.1-py3-none-any.whl
- Upload date:
- Size: 7.4 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.13.5
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
f8398417cab723c0608d43b9a4a1585f544a7c73566b0228d9298bfe1418836a
|
|
| MD5 |
3aad140180bbc324265c013f27bfd5d6
|
|
| BLAKE2b-256 |
58a07147f5886022449c1abd4b239a3e310f916d3f81e0028544e5cf01ba2f16
|