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. 小结
空间权重矩阵是空间分析的基础,选择合适的权重类型对分析结果至关重要。
关键要点:
- 邻接权重适合行政区划数据
- 距离权重考虑空间衰减
- K近邻适合点数据和不均匀分布
- 行标准化是默认推荐
- 岛屿和孤立单元需要特殊处理
下一步学习:[[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)