转自:http://xg1990.com/blog/archives/222
学过空间插值的人都知道克里金插值,但是它的变种繁多、公式复杂,还有个半方差函数让人不知所云
本文讲简单介绍基本克里金插值的原理,及其推理过程。
0.引言——从反距离插值(IDW)说起
空间插值问题,就是在已知空间上若干离散点 (xi,yi) 的某一属性(如气温,海拔)的观测值 zi=z(xi,yi) 的条件下,估计空间上任意一点 (x,y) 的属性值的问题。
直观来讲,根据地理学第一定律,
All attribute values on a geographic surface are related to each other, but closer values are more strongly related than are more distant ones.
大意就是,地理属性有空间相关性,相近的事物会更相似。由此人们发明了反距离插值,对于空间上任意一点 (x,y) 的属性 z=z(x,y) ,定义反距离插值公式估计量
z^=∑i=0n1dαzi
其中 α 通常取1或者2。
即,用空间上所有已知点的数据加权求和来估计未知点的值,权重取决于距离的倒数(或者倒数的平方)。那么,距离近的点,权重就大;距离远的点,权重就小。
反距离插值可以有效的基于地理学第一定律估计属性值空间分布,但仍然存在很多问题:
- α 的值不确定
- 用倒数函数来描述空间关联程度不够准确
因此更加准确的克里金插值方法被提出来了
1.克里金插值的定义
相比反距离插值,克里金插值公式更加抽象
zo^=∑i=0nλizi
其中 zo^ 是点 (xo,yo) 处的估计值,即 zo=z(xo,yo) 。
这里的 λi 是权重系数。它同样是用空间上所有已知点的数据加权求和来估计未知点的值。但权重系数并非距离的倒数,而是能够满足点 (xo,yo) 处的估计值 zo^ 与真实值 zo 的差最小的一套最优系数,即
minλiVar(zo^−zo)
同时满足无偏估计的条件
E(zo^−zo)=0
2.假设条件
不同的克里金插值方法的主要差异就是假设条件不同。本文仅介绍普通克里金插值的假设条件与应用。
普通克里金插值的假设条件为,空间属性 z 是均一的。对于空间任意一点 (x,y) ,都有同样的期望c与方差 σ2 。
即对任意点 (x,y) 都有
E[z(x,y)]=E[z]=c
Var[z(x,y)]=σ2
换一种说法:任意一点处的值 z(x,y) ,都由区域平均值 c 和该点的随机偏差 R(x,y) 组成,即
z(x,y)=E[z(x,y)]+R(x,y)]=c+R(x,y)
其中 R(x,y) 表示点 (x,y) 处的偏差,其方差均为常数
Var[R(x,y)]=σ2
3.无偏约束条件
先分析无偏估计条件 E(zo^−zo)=0 ,将 zo^=∑ni=0λizi 带入则有
E(∑i=0nλizi−zo)=0
又因为对任意的z都有 E[z]=c ,则
c∑i=0nλi−c=0
即
∑i=0nλi=1
这是 λi 的约束条件之一。
4.优化目标/代价函数J
再分析估计误差 Var(zo^−zo) 。为方便公式推理,用符号 J 表示,即
J=Var(zo^−zo)
则有
J=Var(∑ni=0λizi−zo)=Var(∑ni=0λizi)−2Cov(∑ni=0λizi,zo)+Cov(zo,zo)=∑ni=0∑nj=0λiλjCov(zi,zj)−2∑ni=0λiCov(zi,zo)+Cov(zo,zo)
为简化描述,定义符号 Cij=Cov(zi,zj)=Cov(Ri,Rj) ,这里 Ri=zi−c,即点 (xi,yi) 处的属性值相对于区域平均属性值的偏差。
则有
J=∑i=0n∑jnλiλjCij−2∑i=0nλiCio+Coo
5.代价函数的最优解
再定义半方差函数 rij=σ2−Cij ,带入J中,有
J=∑ni=0∑nj=0λiλj(σ2−rij)−2∑ni=0λi(σ2−rio)+σ2−roo=∑ni=0∑nj=0λiλj(σ2)−∑ni=0∑nj=0λiλj(rij)−2∑ni=0λi(σ2)+2∑ni=0λi(rio)+σ2−roo
考虑到 ∑ni=0λi=1
J=σ2−∑ni=0∑njλiλj(rij)−2σ2+2∑ni=0λi(rio)+σ2−roo=2∑ni=0λi(rio)−∑ni=0∑nj=0λiλj(rij)−roo
我们的目标是寻找使J最小的一组 λi ,且J是 λi 的函数,因此直接将J对 λi 求偏导数令其为0即可。即
∂J∂λi=0;i=1,2,⋯,n
但是要注意的是,我们要保证求解出来的最优 λi 满足公式 ∑ni=0λi=1 ,这是一个带约束条件的最优化问题。使用拉格朗日乘数法求解,求解方法为构造一个新的目标函数
J+ϕ(∑i=0nλi−1)
其中 ϕ 是拉格朗日乘数。求解使这个代价函数最小的参数集 ϕ,λ1,λ2,⋯,λn ,则能满足其在 ∑ni=0λi=1 约束下最小化 J 。即
⎧⎩⎨⎪⎪∂(J+ϕ(∑ni=0λi−1))∂λi∂(J+ϕ(∑ni=0λi−1))∂ϕ=0;i=1,2,⋯,n=0
⎧⎩⎨⎪⎪∂(2∑ni=0λi(rio)−∑ni=0∑njλiλj(rij)−roo)∂λi∂(∂2∑ni=0λi(rio)−∑ni=0∑njλiλj(rij)−roo)∂ϕ=0;i=1,2,⋯,n=0
{2rio−∑nj=1(rij+rji)λj∑ni=0λi=0;i=1,2,⋯,n=1
由于 Cij=Cov(zi,zj)=Cji ,因此同样地 rij=rji ,那么有
{rio−∑nj=1rijλj∑ni=0λi=0;i=1,2,⋯,n=1
式子中半方差函数 rij 十分重要,最后会详细解释其计算与定义
在以上计算中我们得到了对于求解权重系数 λj 的方程组。写成线性方程组的形式就是:
⎧⎩⎨⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪r11λ1+r12λ2+⋯+r1nλn+ϕr21λ1+r22λ2+⋯+r2nλn+ϕrn1λ1+rn2λ2+⋯+rnnλn+ϕλ1+λ2+⋯+λn=r1o=r2o⋯=rno=1(1)
写成矩阵形式即为
⎡⎣⎢⎢⎢⎢⎢⎢r11r21⋯rn11r12r22⋯rn21⋯⋯⋯⋯⋯r1nr2n⋯rnn111⋯10⎤⎦⎥⎥⎥⎥⎥⎥⎡⎣⎢⎢⎢⎢⎢⎢λ1λ2⋯λn0⎤⎦⎥⎥⎥⎥⎥⎥=⎡⎣⎢⎢⎢⎢⎢⎢r1or2o⋯rno1⎤⎦⎥⎥⎥⎥⎥⎥
对矩阵求逆即可求解。
唯一未知的就是上文中定义的半方差函数 rij ,接下来将详细讨论
6.半方差函数
上文中对半方差函数的定义为
rij=σ2−Cij
其等价形式为
rij=12E[(zi−zj)2]
这也是半方差函数名称的来由,接下来证明这二者是等价的:
根据上文定义 Ri=zi−c ,有 zi−zj=Ri−Rj ,则
rij=12E[(Ri−Rj)2]=12E[R2i−2RiRj+R2j]=12E[R2i]+12E[R2j]−E[RiRj]
又因为:
E[R2i]=E[R2j]=E[(zi−c)2]=Var(zi)=σ2
E[RiRj]=E[(zi−c)(zj−c)]=Cov(zi,zj)=Cij
于是有
rij=12E[(zi−zj)2]=12E[R2i]+12E[R2j]−E[RiRj]=12σ2+12σ2−Cij=σ2−Cij
σ2−Cij=12E[(zi−zj)2] 得证,现在的问题就是如何计算
rij=12E[(zi−zj)2]
这时需要用到地理学第一定律,空间上相近的属性相近。 rij=12(zi−zj)2 表达了属性的相似度;空间的相似度就用距离来表达,定义i与j之间的几何距离
dij=d(zi,zj)=d((xi,yi),(xj,yj))=(xi−xj)2+(yi−yj)2−−−−−−−−−−−−−−−−−−√
克里金插值假设 rij 与 dij 存在着函数关系,这种函数关系可以是线性、二次函数、指数、对数关系。为了确认这种关系,我们需要首先对观测数据集
{z(x1,y1),z(x2,y2),z(x3,y3),⋯,z(xn−1,yn−1),z(xn,yn)}
计算任意两个点的 距离 dij=(xi−xj)2+(yi−yj)2−−−−−−−−−−−−−−−−−−√ 和 半方差σ2−Cij=12E[(zi−zj)2] ,这时会得到 n2 个 (dij,rij) 的数据对。
将所有的 d 和 r 绘制成散点图,寻找一个最优的拟合曲线拟合 d 与 r 的关系,得到函数关系式
r=r(d)
那么对于任意两点 (xi,yi),(xj,yj) ,先计算其距离 dij ,然后根据得到的函数关系就可以得到这两点的半方差 rij
7. 简单克里金(simple kriging)与普通克里金(ordinary kriging)的区别
以上介绍的均为普通克里金(ordinary kriging)的公式与推理。
事实上普通克里金插值还有简化版,即简单克里金(simple kriging)插值。二者的差异就在于如何定义插值形式:
上文讲到,普通克里金插值形式为
zo^=∑i=0nλizi
而简单克里金的形式则为
zo^−c=∑i=0nλi(zi−c)
这里的符号 c 在上文介绍过了,是属性值的数学期望,即 E[z]=c 。也就是说,在普通克里金插值中,认为未知点的属性值是已知点的属性值的加权求和;而在简单克里金插值中,假设未知点的属性值相对于平均值的偏差是已知点的属性值相对于平均值的偏差的加权求和,用公式表达即为:
Ro^=∑i=0nλiRi
这里的 Ri 在上文定义过了: Ri=zi−c 。
但是为什么这样的克里金插值称为“简单克里金”呢?由于有假设 E[z]=c ,也就是说 E(Ri+c)=c ,即 E(Ri)=0 。那么上面的公式 Ro^=∑ni=0λiRi 两边的期望一定相同,那么在求解未知参数 λi 就不需要有无偏约束条件 ∑ni=0λi=1 。换句话说,这样的估计公式天生就能满足无偏条件。因此它被称为简单克里金。
从在上文(第4节优化目标/代价函数J)中可以知道,优化目标的推理和求解过程是通过对属性值相对于期望的偏差量 Ri 进行数学计算而进行的。也就是说这两种克里金插值方法虽然插值形式不一样,求解方法是一样的,重要的区别是简单克里金插值不需要约束条件 ∑ni=0λi=1 ,求解方程组为:
⎧⎩⎨⎪⎪⎪⎪⎪⎪r11λ1+r12λ2+⋯+r1nλn+ϕr21λ1+r22λ2+⋯+r2nλn+ϕrn1λ1+rn2λ2+⋯+rnnλn+ϕ=r1o=r2o⋯=rno(2)
还有更重要的一点,简单克里金的插值公式为:
zo^=∑i=0nλi(zi−c)+c
换句话说,在计算未知点属性值 zo^ 前,需要知道该地区的属性值期望 c 。事实上我们在进行插值前很难知道这个地区的真实属性值期望。有些研究者可能会采用对观测数据简单求平均的方法计算期望值 c ,而考虑到空间采样点位置代表性可能有偏差(比如采样点聚集在某一小片地区,没有代表性),简单平均估计的期望也可能是有偏差的。这是简单克里金方法的局限性。
8.小结
总的来说,进行克里金插值分为这几个步骤:
- 对于观测数据,两两计算距离与半方差
- 寻找一个拟合曲线拟合距离与半方差的关系,从而能根据任意距离计算出相应的半方差
- 计算出所有已知点之间的半方差 rij
- 对于未知点 zo ,计算它到所有已知点 zi 的半方差 rio
- 求解第四节中的方程组,得到最优系数 λi
- 使用最优系数对已知点的属性值进行加权求和,得到未知点 zo 的估计值