GeoDa 空间权重矩阵详解

GeoDa 空间权重矩阵详解

前置知识 :[[GeoDa基础教程]]
难度等级 :⭐⭐⭐
更新日期:2026-03-16


📋 目录

  • [1. 空间权重矩阵概念](#1. 空间权重矩阵概念)
  • [2. 邻接权重矩阵](#2. 邻接权重矩阵)
  • [3. 距离权重矩阵](#3. 距离权重矩阵)
  • [4. K近邻权重矩阵](#4. K近邻权重矩阵)
  • [5. 权重矩阵管理](#5. 权重矩阵管理)
  • [6. 实践案例](#6. 实践案例)

1. 空间权重矩阵概念

1.1 什么是空间权重矩阵?

空间权重矩阵(Spatial Weights Matrix)是空间分析的核心概念,用于量化地理单元之间的空间关系。

数学表示

空间权重矩阵 W 是一个 n×n 的矩阵:

复制代码
     空间单元1  空间单元2  空间单元3  ...  空间单元n
空间单元1  [ w₁₁    w₁₂    w₁₃   ...   w₁ₙ ]
空间单元2  [ w₂₁    w₂₂    w₂₃   ...   w₂ₙ ]
空间单元3  [ w₃₁    w₃₂    w₃₃   ...   w₃ₙ ]
   ...     [ ...    ...    ...   ...   ... ]
空间单元n  [ wₙ₁    wₙ₂    wₙ₃   ...   wₙₙ ]

其中:

  • wᵢⱼ 表示空间单元 i 和 j 之间的空间关系强度
  • wᵢᵢ = 0(对角线元素为0,单元与自身无空间关系)

1.2 空间权重类型对比

权重类型 定义方式 适用场景 优点 缺点
邻接权重 共享边界 行政区划、地块 简单直观 忽略距离差异
距离权重 地理距离 连续空间、设施分布 考虑距离衰减 需设定阈值
K近邻权重 最近邻数 点数据、样本不均 固定邻居数量 可能忽略真实空间关系

1.3 行标准化

行标准化(Row Standardization) 是将权重矩阵的每行元素之和标准化为1:

复制代码
w*ᵢⱼ = wᵢⱼ / Σⱼwᵢⱼ

优点

  • 消除区域大小差异的影响
  • 权重解释为"邻居的平均值"
  • 便于空间回归模型的解释

GeoDa 默认使用行标准化。


2. 邻接权重矩阵

2.1 Queen 邻接(皇后邻接)

定义

两个空间单元共享边或顶点即为邻居。

复制代码
┌───┬───┬───┐
│ 1 │ 2 │ 3 │  ← 中心单元的Queen邻居:1-8号
├───┼───┼───┤
│ 4 │ ● │ 5 │     共8个邻居
├───┼───┼───┤
│ 6 │ 7 │ 8 │
└───┴───┴───┘
操作步骤
复制代码
1. Tools → Weights Manager
2. 点击 "Create" 按钮
3. 在弹出的对话框中:
   
   ┌────────────────────────────────┐
   │ Create Spatial Weights         │
   ├────────────────────────────────┤
   │ Weights File ID: [region_id]   │
   │                                │
   │ Contiguity Weight:             │
   │  ◉ Queen Contiguity            │
   │  ○ Rook Contiguity             │
   │                                │
   │ Order of Contiguity: [1]       │
   │ ☑ Include lower orders         │
   │                                │
   │ [Create]  [Cancel]             │
   └────────────────────────────────┘
   
4. 点击 "Create"
5. 保存为 .gal 文件
参数说明
参数 说明 推荐值
Weights File ID 空间单元唯一标识字段 ID 或 NAME
Order of Contiguity 邻接阶数 1(一阶邻接)
Include lower orders 是否包含低阶邻居 勾选(高阶时)

2.2 Rook 邻接(车邻接)

定义

两个空间单元仅共享边(不包含顶点)即为邻居。

复制代码
┌───┬───┬───┐
│   │ 2 │   │  ← 中心单元的Rook邻居:2,4,5,7号
├───┼───┼───┤     共4个邻居
│ 4 │ ● │ 5 │
├───┼───┼───┤
│   │ 7 │   │
└───┴───┴───┘
Queen vs Rook 对比
复制代码
案例:正方形网格

Queen 邻接:每个单元最多8个邻居
┌───┬───┬───┐
│ N │ N │ N │
├───┼───┼───┤
│ N │ X │ N │
├───┼───┼───┤
│ N │ N │ N │
└───┴───┴───┘

Rook 邻接:每个单元最多4个邻居
┌───┬───┬───┐
│   │ N │   │
├───┼───┼───┤
│ N │ X │ N │
├───┼───┼───┤
│   │ N │   │
└───┴───┴───┘
操作步骤
复制代码
1. Tools → Weights Manager → Create
2. 选择 "Rook Contiguity"
3. 其他参数同 Queen
4. 点击 "Create" 并保存

2.3 高阶邻接

二阶邻接

邻居的邻居(排除一阶邻居)。

复制代码
一阶邻居:直接相邻
二阶邻居:隔一个单元相邻

┌───┬───┬───┬───┬───┐
│2nd│   │2nd│   │2nd│
├───┼───┼───┼───┼───┤
│   │1st│1st│1st│   │
├───┼───┼───┼───┼───┤
│2nd│1st│ ● │1st│2nd│
├───┼───┼───┼───┼───┤
│   │1st│1st│1st│   │
├───┼───┼───┼───┼───┤
│2nd│   │2nd│   │2nd│
└───┴───┴───┴───┴───┘
操作步骤
复制代码
1. Tools → Weights Manager → Create
2. Order of Contiguity: [2]
3. ☑ Include lower orders(包含一阶邻居)
4. 点击 "Create"

3. 距离权重矩阵

3.1 距离阈值权重

定义

设定一个距离阈值 d,在该距离范围内的单元为邻居。

复制代码
权重计算:
wᵢⱼ = 1  (if dᵢⱼ ≤ d)
wᵢⱼ = 0  (if dᵢⱼ > d)
操作步骤
复制代码
1. Tools → Weights Manager → Create
2. 选择 "Distance Weight"
   
   ┌────────────────────────────────┐
   │ Create Spatial Weights         │
   ├────────────────────────────────┤
   │ Distance Weight:               │
   │  ◉ Threshold Distance          │
   │  ○ K-Nearest Neighbors         │
   │                                │
   │ Threshold Distance: [5000] m   │
   │                                │
   │ Distance Function:             │
   │  ◉ Inverse Distance            │
   │  ○ Inverse Distance Squared    │
   │  ○ Exponential                 │
   │                                │
   │ [Create]  [Cancel]             │
   └────────────────────────────────┘
   
3. 设置距离阈值(单位:米)
4. 选择距离衰减函数
5. 点击 "Create"
距离阈值确定方法

方法一:经验法则

复制代码
阈值 = max(min_threshold_for_all_units)

确保每个单元至少有一个邻居

方法二:GeoDa自动计算

复制代码
GeoDa会提示"确保每个单元都有邻居"的最小距离阈值

3.2 距离衰减函数

反距离权重(Inverse Distance)
复制代码
wᵢⱼ = 1 / dᵢⱼ

特点:距离越近,权重越大
反距离平方权重(Inverse Distance Squared)
复制代码
wᵢⱼ = 1 / dᵢⱼ²

特点:距离衰减更快,强调近邻影响
指数衰减权重(Exponential)
复制代码
wᵢⱼ = exp(-α × dᵢⱼ)

特点:平滑衰减,参数α控制衰减速度

3.3 距离计算方式

距离类型 计算公式 适用场景
欧氏距离 √[(x₂-x₁)² + (y₂-y₁)²] 平面坐标
大圆距离 Haversine公式 经纬度坐标
曼哈顿距离 |x₂-x₁| + |y₂-y₁| 网格城市

GeoDa 默认使用欧氏距离(投影坐标系下)或大圆距离(经纬度下)。


4. K近邻权重矩阵

4.1 定义

每个空间单元选择距离最近的 K 个单元作为邻居。

复制代码
K=4 的示例:

      • (4th)
      
• (2nd)   • (●)   • (1st)
      
      • (3rd)

中心单元的4个最近邻居

4.2 操作步骤

复制代码
1. Tools → Weights Manager → Create
2. 选择 "K-Nearest Neighbors"
   
   ┌────────────────────────────────┐
   │ Create Spatial Weights         │
   ├────────────────────────────────┤
   │ K-Nearest Neighbors            │
   │                                │
   │ Number of Neighbors (K): [4]   │
   │                                │
   │ ☑ Use inverse distance         │
   │                                │
   │ [Create]  [Cancel]             │
   └────────────────────────────────┘
   
3. 设置 K 值(推荐:4-8)
4. 是否使用反距离加权
5. 点击 "Create"

4.3 K值选择建议

数据类型 推荐K值 理由
点数据 4-6 避免过度平滑
面数据 6-8 考虑边界复杂性
稀疏数据 2-4 避免引入弱相关邻居
密集数据 8-10 捕捉局部空间模式

5. 权重矩阵管理

5.1 Weights Manager 界面

复制代码
Tools → Weights Manager

┌────────────────────────────────────────┐
│ Weights Manager                        │
├────────────────────────────────────────┤
│ Available Weights:                     │
│ ┌────────────────────────────────────┐│
│ │ ☑ queen_w1.gal                    ││
│ │   Type: Queen Contiguity           ││
│ │   Units: 100                       ││
│ │   Non-zero: 620                    ││
│ ├────────────────────────────────────┤│
│ │ ☐ rook_w1.gal                     ││
│ │   Type: Rook Contiguity            ││
│ │   Units: 100                       ││
│ │   Non-zero: 480                    ││
│ └────────────────────────────────────┘│
│                                        │
│ [Create] [Load] [Remove] [Properties]  │
└────────────────────────────────────────┘

5.2 权重矩阵属性查看

复制代码
选中权重 → 点击 "Properties"

显示信息:
- 权重类型
- 空间单元数量
- 非零元素数量(邻居关系总数)
- 最小/最大邻居数
- 对称性检查
- 密度(非零元素占比)

5.3 权重可视化

复制代码
Tools → Weights Manager → 选中权重 → 右键 → Show Graph

显示:
- 空间连接图(Connectivity Graph)
- 邻居数量直方图

5.4 权重文件格式

GAL格式(文本格式)
复制代码
0 100 (头部:0表示Queen权重,100个单元)
1 5 2 3 4 5 6 (单元1有5个邻居:2,3,4,5,6)
2 4 1 3 7 8
3 6 1 2 4 7 8 9
...
GWT格式(二进制格式)
  • 更紧凑
  • 加载更快
  • 适合大数据集

6. 实践案例

案例1:创建中国省份邻接权重

数据准备
复制代码
数据:中国省份行政区划(34个省级行政区)
格式:Shapefile(.shp)
字段:NAME(省份名称)
操作步骤
复制代码
1. 加载数据
   File → Open → provinces.shp

2. 创建权重
   Tools → Weights Manager → Create
   
3. 参数设置
   - Weights File ID: NAME
   - Type: Queen Contiguity
   - Order: 1
   
4. 查看结果
   - 非岛省份:平均6-8个邻居
   - 岛省(海南):0个邻居(需特殊处理)
   
5. 保存权重
   文件名:china_province_queen.gal
处理岛屿问题
复制代码
方案1:使用K近邻权重
- K=1(最近邻)
- 海南连接到广东

方案2:使用距离权重
- 阈值设为跨越海峡的距离

案例2:城市房价分析的距离权重

场景
复制代码
数据:100个城市房价数据
目的:分析房价的空间溢出效应
要求:考虑距离衰减
操作步骤
复制代码
1. 确定距离阈值
   - 查看城市间距离分布
   - GeoDa提示:最小阈值 = 150 km
   
2. 创建距离权重
   - Type: Threshold Distance
   - Threshold: 200 km
   - Distance Function: Inverse Distance Squared
   
3. 权重矩阵统计
   - 非零元素:2,450
   - 平均邻居数:24.5
   - 密度:24.7%

案例3:混合权重策略

场景
复制代码
研究区域:包含大陆和岛屿
问题:单一权重类型不适用
解决方案
复制代码
创建两个权重矩阵:

权重矩阵1(大陆):Queen邻接
- 包含所有大陆单元

权重矩阵2(岛屿):K近邻
- K=1,连接到最近的大陆单元

在分析中:
- 分别运行空间模型
- 比较结果差异

7. 权重矩阵选择指南

7.1 决策树

复制代码
                    数据类型?
                       │
         ┌─────────────┴─────────────┐
       面数据                      点数据
         │                          │
    有共同边界?                分布均匀?
         │                          │
    ┌────┴────┐                ┌────┴────┐
   是        否               是        否
    │         │                │         │
邻接权重   距离权重         距离权重   K近邻权重
    │         │                │         │
Queen/Rook  阈值/KNN         阈值       K=4-8

7.2 推荐组合

应用场景 推荐权重 理由
行政区划分析 Queen邻接 边界共享反映行政联系
房地产价格分析 距离权重 距离衰减符合市场规律
疫情传播分析 K近邻 固定邻居数便于比较
生态学研究 距离权重 物种扩散受距离影响
交通网络分析 自定义权重 反映实际交通流量

8. 常见问题

Q1: 权重矩阵应该对称吗?

复制代码
理论上:邻接权重和距离权重应对称(wᵢⱼ = wⱼᵢ)
实际上:K近邻权重可能不对称(i是j的邻居,但j不一定是i的邻居)

解决:
- GeoDa自动将K近邻对称化
- 或手动选择"Make Symmetric"选项

Q2: 如何处理孤立单元?

复制代码
孤立单元:没有邻居的空间单元

解决方案:
1. 增加距离阈值
2. 使用K近邻(K≥1)
3. 从分析中剔除(不推荐)
4. 人工指定邻居(自定义权重)

Q3: 权重矩阵标准化方式选择?

复制代码
行标准化(Row Standardization):
✓ 最常用
✓ 便于解释(邻居的平均值)
✓ 适用于大多数空间回归

全局标准化(Global Standardization):
✓ 保持权重总和
✓ 适用于空间滤波

不标准化:
✓ 保留原始权重值
✓ 适用于距离权重分析

9. 小结

空间权重矩阵是空间分析的基础,选择合适的权重类型对分析结果至关重要。

关键要点

  1. 邻接权重适合行政区划数据
  2. 距离权重考虑空间衰减
  3. K近邻适合点数据和不均匀分布
  4. 行标准化是默认推荐
  5. 岛屿和孤立单元需要特殊处理

下一步学习:[[GeoDa空间自相关分析]] →


附录:权重矩阵数学公式

Queen邻接

复制代码
wᵢⱼ = 1, if i和j共享边或顶点
wᵢⱼ = 0, otherwise

Rook邻接

复制代码
wᵢⱼ = 1, if i和j共享边
wᵢⱼ = 0, otherwise

距离权重

复制代码
反距离:      wᵢⱼ = 1 / dᵢⱼ
反距离平方:  wᵢⱼ = 1 / dᵢⱼ²
指数衰减:    wᵢⱼ = exp(-α × dᵢⱼ)
阈值权重:    wᵢⱼ = 1 if dᵢⱼ ≤ d, else 0

行标准化

复制代码
w*ᵢⱼ = wᵢⱼ / Σⱼwᵢⱼ

使得:Σⱼw*ᵢⱼ = 1(对所有i)
相关推荐
水梦雪幻7 小时前
GeoDa空间自相关分析
空间分析
Promising_GEO12 小时前
ArcGIS小技巧:起讫(Origin-Destination,OD)流量数据可视化教程
信息可视化·数据·制图·空间分析
水梦雪幻12 小时前
GeoDa 空间回归分析
空间分析
charlee442 个月前
从Shapefile到GeoJSON:用GDAL实现GIS矢量数据读写与空间分析
空间分析·gis开发·矢量数据·gdal·ogr
@HNUSTer4 个月前
基于 GEE 利用 GHSL(100m)数据的区域建成区时空变化量化分析
云计算·数据集·遥感大数据·gee·空间分析·云平台·城市扩张
xiao5kou4chang6kai47 个月前
如何利用ArcGIS探究环境与生态因子对水体、土壤、大气污染物的影响?
arcgis·空间分析·生态环境·生态因子·空间统计
小艳加油9 个月前
GIS应用攻略:全面涵盖GIS基础、ArcGIS操作、数据制备、空间分析、地图制作、三维建模与多领域实战应用,助力科研与行业实践!
arcgis·gis·空间分析·数据制备
高-老师1 年前
AI(DeepSeek、ChatGPT)、Python、ArcGIS Pro多技术融合下的空间数据分析、建模与科研绘图及论文写作
人工智能·python·gpt·chatgpt·空间分析