克里金插值的基本介绍可以参考ARCGIS的帮助文档[1]. 其本质就是根据已知点的数值,确定其周围点(预测点)的数值。最直观的方法就是找到已知点和预测点数值之间的关系,从而预测出预测点的数值。比如IDW插值方法,就是假设已知点和预测点的值跟它们相对距离成反比。克里金插值的精妙之处在于它不仅考虑了已知点和预测点的距离关系,还考虑了这些已知点之间的自相关关系。
如何衡量已知点之间的自相关关系呢?通常使用的就是半变异函数,其公式如下[1]:
Semivariogram(distance h) = 0.5 * average((value i – value j)2)
这就是克里金插值不同于其他插值方法的核心所在,通过计算每个距离范围内所有配对点的离差平方和,就可以绘制出不同距离范围下的变差值图,如下示意图[1]。我们知道,离差平方和是衡量一组数据变化程度的量,而这里通过计算所有已知点与其不同距离范围内邻居点集的距离离差平方和,就可以大致衡量出已知点与不同距离范围邻居点的变化程度关系,通常的做法是进行曲线拟合,常用的包括指数拟合、球面拟合、高斯拟合等。而这个拟合的结果就是我们插值所需要的块金值、基台值等。
注意,目前为止这里只涉及到克里金插值是如何分析已知点信息,以及如何构造这些已知点之间的关系,整个插值(预测)过程就是假设这种已知点之间的关系:距离关系和自相关关系,对于预测点同样适用!
然而,在没有更多信息的前提下,我们如何知道这种插值是否可信?目前较为合理的方法就是交叉验证Cross validation。其本质是拿出一些已知点作为预测点,这些被拿出的点不参与上述已知点关系的探索过程,而是作为验证数据来衡量我们预测是否合理。比如,我们每次拿出一个已知点作为验证数据,来验证这个点的预测值,我们就可以得到所有已知点与其预测值之间的偏差,这个所有点的偏差从某种程度上讲就为我们提供了整个预测方法是否合理的依据。
一个基于R gstat空间插值包的示例:
如下图,假设我们已知的数据点