定义
GeoDa是一款开源、跨平台的桌面软件,用于对地理空间数据进行可视化与探索[2]。它面向的是离散型地理空间数据,即用点坐标或面状边界坐标来刻画位置的对象,早期以 ESRI 的 shapefile 作为空间信息存储标准,并具备读写该格式以及把文本坐标文件转换为 shapefile 的能力[3]。
它本身不属于地理信息系统,但吸收了地理信息系统中的若干基本功能,例如专题制图、从坐标表生成点图层以及处理地图投影[2]。其设计目标与传统的制图软件不同:GeoDa把重点放在通过联动的地图与统计图表来考察统计检验和模型结果,而不是仅仅把原始数据显示在地图上[4]。
原理
GeoDa的核心分析方法建立在空间自相关之上。空间自相关衡量一个位置上的属性值与其邻近位置属性值之间的关联程度,这种位置信息由空间权重矩阵承载;对于不相邻的单元,权重取零,因而不会对结果产生贡献[5]。全局的莫兰指数(Moran's I)的取值期望为 $-1/(n-1)$,其解读方式与积矩相关系数类似:接近 $+1$ 表示相似值聚集,接近 $0$ 表示空间上随机排列,接近 $-1$ 表示类似棋盘格的负相关格局[5]。
在局部层面,GeoDa实现的是空间关联局部指标(LISA)统计量,对区域内每一个单元分别计算其属性值与邻近区域取值相关联的程度[5]。局部莫兰指数可写作 $I_i = z_i \sum_j w_{ij} z_j$,其中 $z_i$、$z_j$ 是单元 $i$ 与 $j$ 属性值的标准化得分,$j$ 取遍按权重矩阵 $w_{ij}$ 判定为 $i$ 之邻居的单元[5]。软件据条件置换方法构造经验分布来完成推断,即保持被考察单元取值不变、反复重排其余取值并计算统计量,常见的置换次数为 99 次至 999 次,据此得到伪显著性水平[6]。
空间权重矩阵的构造由权重管理器完成。基于邻接关系的定义包含 rook 与 queen 两种:rook 只把共享边界者视为邻居,queen 在此基础上还把共享顶点的单元计入[7]。此外还有基于质心距离、固定最近邻居个数等构造方式,并支持把矩阵按行标准化,使每一行权重之和为 1[7]。
flowchart LR
A[空间数据 shapefile / GeoJSON 等] --> B[空间权重矩阵 邻接或距离]
B --> C[全局空间自相关 Moran's I]
B --> D[局部空间自相关 LISA 局部 Moran]
C --> E[联动地图与统计图表]
D --> E
E --> F[空间回归 诊断与极大似然估计]
发展历程
GeoDa的前身可追溯到更早的空间分析软件谱系:1992 年的 SpaceStat 与 1998 年的 DynESDA 构成了其技术铺垫[8]。DynESDA 是以 ArcView 3.x 模块形式运行的探索性空间数据分析工具,GeoDa 取代了它,而后续版本已不再依赖 ArcView 或其他地理信息系统软件[1]。2001 年初,一个名为 DynESDA 的原型版本曾在小范围内流传[3]。
GeoDa在 NSF 资助的空间综合社会科学中心(CSISS)支持下开发[9]。测试版的首次正式发布为 2002 年 2 月 5 日,软件免费提供并可从 CSISS 的软件工具站点下载;到 2003 年 1 月发布的 0.9.5-i 为当时的最新版本,至 2005 年秋注册用户超过 8000 人,并以每月约 200 人的速度增长[3]。也有资料把 2003 年 2 月记作首次发布的时间[4]。到 2009 年,传统版本的 GeoDa 已积累超过 4 万名个人用户,并成为入门级空间数据分析教学中的通用工具[9]。
早期版本的GeoDa依赖 ESRI 的 MapObjects 渲染库,只能在 Windows XP 上运行;2006 年起转向完全开源与跨平台策略,开源版本使用 WxWidgets 库来保证跨平台图形界面在各操作系统上呈现原生外观[2]。2011 年发布 1.0 版,当时名为 OpenGeoDa,因为传统版本仍在广泛使用;至 2016 年 1.8 版时全球用户接近 20 万[8]。2016 年起,开发工作转移到芝加哥大学空间数据科学中心[1]。
此后版本迭代加快:1.14 版(2019 年)加入俄语与西班牙语支持、局部连接计数统计量以及多种权重文件格式支持,1.16 版(2020 年)引入最小生成树、热力图、中位数局部莫兰指数与分位数 LISA 等功能,1.18 版(2020 年)以维护性更新为主[10]。到 1.22 版,软件加入多层支持以及单变量与多变量局部 Geary 聚类图、redcap、skater、谱聚类和 max-p 等方法,并实现了主成分分析、k-means、层次聚类与 HDBScan 等经典聚类技术[4]。
应用
GeoDa的典型用途是探测并可视化局部聚集与空间异常值,其依据是一系列局部空间自相关统计量,并配有可灵活构造不同空间权重矩阵的界面[2]。在局部莫兰聚类图中,结果被划分为高-高、低-低、高-低、低-高以及不显著等类别,前两类反映相似值的聚集,后两类对应空间异常值[6]。
软件功能大致分为空间数据操作与格式转换、变量变换、制图、探索性数据分析、空间自相关分析与空间回归等类别,其中空间回归部分涵盖带空间诊断的最小二乘估计以及空间滞后模型与空间误差模型的极大似然估计[3]。制图方面提供四分位数分级图、标准差图、百分位图、箱地图、环形变形地图与地图动画等形式[3]。
GeoDa被用于教学与实证研究。相关教材以芝加哥劫车案、芝加哥健康的社会经济决定因素、巴西与墨西哥市镇的社会经济与贫困指标、意大利社区银行经营指标等数据集为例演示各类方法[11]。软件还可处理历史数据,例如用伦敦霍乱数据集考察局部聚集[12]。软件支持 shapefile、地理数据库、GeoJSON、MapInfo、GML、KML 以及 GDAL 库所支持的其他矢量格式,并能把 csv、dbf、xls、ods 等表格形式的坐标数据转换为空间数据格式[4]。
为便于在其他环境中调用,GeoDa的核心计算能力被重构为 C++ 库 libgeoda,通过明确的接口供外部程序使用,并由此派生出 R 语言的 rgeoda 与 Python 的 pygeoda;性能测试显示,在空间权重构造与置换推断等任务上,libgeoda 及 rgeoda、pygeoda 相对 R 的 spdep 与 Python 的 PySAL 具有一定优势[12]。
局限
GeoDa面向的是入门级的空间数据分析,处理大规模数据时要求用户先把数据聚合到区域单元,而不能直接在原始细粒度记录上运算[4]。其空间回归功能长期以来基本没有变化,相关开发工作被转移到 PySAL 的 spreg 模块,并另行以 GeoDaSpace 的形式发布[10]。
桌面版GeoDa是交互式环境,这种设计不利于脚本化,也不适合需要重复执行同一分析流程的场景,例如模拟实验;除项目文件中有限的记录之外,软件没有确保可复现性的明确途径[10]。libgeoda 虽然便于外部调用,但其功能范围比桌面版更有限[10]。
在莫兰指数的计算上,GeoDa只支持行标准化的权重;对于与外界的邻接关系为零的孤立单元,软件的处理方式是在分子与分母中都将其剔除,因为这类单元不参与任何空间交互[13]。关于局部关联指标的显著性判断,多重比较校正的使用也存在尺度问题,例如在包含 100 个观测值的数据集中,Bonferroni 校正会把整体 0.05 的显著性水平压缩为单个指标 0.0005 的水平,对局部指标而言可能过于严格。
参见
参考资料
- Geoda [引用日期2026-10-14]
- wiley.com 上的网页 [引用日期2026-10-14]
- GeoDa: An Introduction to Spatial Data Analysis [引用日期2026-10-14]
- An Introduction to Spatial Data Science | GeoDa [引用日期2026-10-14]
- 9 [引用日期2026-10-14]
- Patterson_J_2010(PDF) [引用日期2026-10-14]
- core.ac.uk 上的 PDF 文件 [引用日期2026-10-14]
- GeoDa Workshop [引用日期2026-10-14]
- acm.org 上的网页 [引用日期2026-10-14]
- archive.org 上的 PDF 文件 [引用日期2026-10-14]
- introduction-luc-anselin [引用日期2026-10-14]
- gean [引用日期2026-10-14]
- github.com 上的网页 [引用日期2026-10-14]