空间回归模型实战:用Python破解地理数据的\”邻居效应\”
地理空间数据总是带着一种微妙的\”传染性\”——就像社区里流行的时尚趋势,一个区域的现象往往会影响到周边地区。这种空间依赖性让传统回归模型束手无策,而今天我们要用Python的pysal工具包,特别是其中的spreg模块,来驯服这只\”空间自相关\”的猛兽。
1. 空间回归的底层逻辑:为什么OLS会失效
当你的数据点在地图上不是独立分布,而是像野火一样具有蔓延特性时,普通最小二乘法(OLS)的三个核心假设就被打破了。想象分析城市房价时,忽略\”学区房效应\”会导致怎样的灾难——高价房聚集区的残差会呈现明显的空间模式,这正是Moran\’s I统计量要捕捉的现象。
空间回归模型主要解决两类问题:
- 空间滞后模型(SLM):当Y会影响Y(比如一个地区的犯罪率会带动周边地区犯罪率)
- 空间误差模型(SEM):当遗漏变量具有空间模式(比如未测量的环境因素)
from esda.moran import Moran
from libpysal.weights import Queen
import spreg
# 计算OLS残差的空间自相关
w = Queen.from_dataframe(gdf) # 创建空间权重矩阵
ols_moran = Moran(ols.u, w) # u是OLS残差
print(f\”Moran\’s I: {ols_moran.I:.3f}, p-value: {ols_moran.p_norm:.4f}\”)
当Moran\’s I接近1(p<0.05时),就是空间回归登场的时候了。下表展示了三种模型的本质区别:

