

摘要: 学习高斯核密度估计的基本原理,以计算地震密度分布为主
摘要:使用 高斯核密度估计 (KDE) 来计算地震的空间聚集程度。这是一种从离散点数据中提取连续分布趋势的强大统计工具。
核密度估计 (Kernel Density Estimation) 是一种评估随机变量概率密度函数 (PDF) 的非参数方法。
通常,我们习惯用直方图 (Histogram) 来观察数据分布:把地图划分为网格,数每个格子里有多少地震。但直方图有两个缺点:
KDE 解决了这个问题。它能根据离散的地震点,推测出一个连续、平滑、甚至优美的密度曲面,帮我们一眼看穿“哪里才是真正的地震热点”。
为了直观理解 KDE,我们可以想象一个上帝视角堆沙子的游戏:
放置沙堆 🏖️: 对于你在地图上观测到的每一个地震点,你都在那个坐标位置倒上一小堆沙子。
高斯形状 🔔: 这堆沙子不是圆柱体,而是一个完美的高斯钟形 (正态分布) —— 中间最高,向四周逐渐变低变平。
甚至叠加 ➕:
最终地形 🏔️: 当你把所有地震点的沙子都倒完,地面上形成的那个连绵起伏的沙丘表面,就是核密度估计的结果。
📝 数学公式 (简化版):
- : 数据点总数
- : 你倒沙子的形状 (核函数),这里是高斯函数。
- : 沙堆的胖瘦 (带宽),决定了平滑程度。
在 KDE 算法中,最重要的调节旋钮就是带宽 ()。它决定了用来平滑的高斯“沙堆”到底有多胖。我们需要在“过噪”与“过平”之间寻找平衡点:
📉 过小 (Under-smoothing)
📈 过大 (Over-smoothing)
✅ 自适应 (Adaptive)
bw_method='scott'。在 Python 的 scipy.stats 库中,我们仅需三步即可完成这个复杂的数学过程:
#Step 1: 拟合模型 (上帝视角的沙堆生成器)
# 根据输入数据 (经纬度坐标) 创建 KDE 对象,'scott' 规则自动帮你决定沙堆胖瘦
kde = gaussian_kde(values, bw_method='scott')
# Step 2: 估算密度 (生成地形)
# 在我们生成好的规则网格位置上,计算所有"高斯沙堆"叠加后的高度值
z = kde(positions)
# Step 3: 归一化 (让数据会说话)
# 将原始密度值线性映射到 [0, 1] 区间
# 0 = 绝对安全区 (无地震)
# 1 = 极度危险区 (全图最密集中心)
z_norm = (z - z_min) / (z_max - z_min)