Appearance
核密度估计
最近用 ArcGIS 做作业用到了一个 核密度分析 工具,它在 ArcGIS 中的主要作用是计算单位面积的人口强度。

这让我联想到平时用 Python 绘制频率直方图时,为让数据呈现得更平滑美观,通常会叠加绘制一条核密度估计(KDE)曲线。

然而,我发现自己从未深入探究过其背后的原理和具体实现方式。于是出于好奇,我查阅了一些相关资料。
直观理解
首先直观理解核密度函数,想象每个数据点都是一盏灯:
- 每盏灯会发出对称的光晕
- 光晕的明暗由距离决定,越近越亮
- 把所有灯的光晕叠加起来,就得到整个数据分布的“亮度图”
核密度函数的公式
给定一个包含 n 个独立同分布样本的数据集 ,其核密度估计 在任意点 的值为:
- : 样本点
- :核函数
- :带宽参数
核函数 是满足以下条件的概率密度函数:
- 非负性:对所有 有
- 对称性:通常 ,以保证估计的无偏性。
- 积分为1:,确保最终估计 也是一个合法的概率密度(即总面积也为1)
关于 总面积为1 我们可以进行如下数学推导:
对 积分:
令 ,则 :
其中 是一个标准的概率密度函数,满足:
所以:
因此,不管样本数据如何、带宽如何取,只要核函数是概率密度函数, 的积分就恒为 1。
带宽参数 控制核函数的缩放程度和平滑水平
- h 越大,叠加后的曲线越平滑。但可能会过度平滑,掩盖分布的细节(高偏差,低方差)
- h 越小,叠加后的曲线越崎岖。但可能跟随采样噪声,产生许多虚假的波动(低偏差,高方差)
一般采用 Silverman经验法则:
ArcGIS 中的核密度分析
再回来看 ArcGIS 中的核密度分析就比较好理解了,它和传统 KDE 略有不同。它计算的是单位面积的人口强度,而不是概率密度。
ArcGIS Population KDE公式:
其中:
- :位置 处的人口密度(单位:人/平方千米)
- :POI 样本点 的人口数(Population字段)
- :POI 样本点 到位置 的距离
- :核函数
- :带宽(搜索半径)
