克里金(克里格)(Corigine)算法
克里金插值

空间场是否存在漂移(drift)可将克里金插值分
为普通克里金和泛克里金(Kriging with a trend
model,即具有趋势的克里金) ,其中普通克里 金(Ordinary Kriging简称OK法)常称作局部最优 线性无偏估计
常规克里金插值
•
其内插值与原始样本的容量有关,当
的方差结果常小于
常规克里金插值, 所以,生成的平滑 插值表面不会发生 常规克里金模型的 凹凸现象。
常规克里金插值
Байду номын сангаас
PK
块克里金插值
六、克里金插值的优缺点
优点
• 估计的无偏性
• 反映了变量的空间结构性 • 能得到估计精度
局限性
(1)克里金插值为 局部估计方法,对估计 值的整体空间相关性考 虑不够,它保证了数据 的估计局部最优,却不 能保证数据的总体最优, 因为克里金估值的方差 比原始数据的方差要小。
克里金插值法
制作人:李威晶 11级地理科学1班
一、概况
• 克里金(Kriging)插值法又称空间自协方差最
佳插值法,它是以南非矿业工程师
D.G.Krige的名字命名的一种最优内插法。
经过几十年的实践,克里金法已成为地质统计
学(Geostatistics)的基础工具,也是地质统计
学的核心。
二、应用
(2)克里金插值法为光滑内插方法, 为减小估计方差而对真实观测数据的离散 性进行了平滑处理,虽然可以得到由于光 滑而更美观的等值线图或三维图,但一些 有意义的异常带也可能被光滑作用而“光 滑”掉了。所以,有时,克里金方法被称 为一种“移动光滑窗口”。
我的理解
以某地一个点为例 根据一个点周围的距离较近的 其他点的属性来判断他的属性
python克里金法

python克里金法Python克里金法克里金法(Kriging)是一种空间插值方法,常用于地质、地理、环境等领域的数据分析和预测。
Python作为一种广泛应用于科学计算和数据分析的编程语言,提供了丰富的库和工具来实现克里金法。
克里金法的基本原理是根据已知的离散数据点,通过建立一个数学模型来插值未知位置的数值。
它基于两个核心假设:空间自相关性和最小方差原则。
空间自相关性意味着离得越近的点之间的相关性越高,最小方差原则则保证插值结果的最优性。
在Python中,使用克里金法进行插值和预测可以借助一些常用的库,如scipy和sklearn。
首先,需要准备好离散的数据点,包括其位置坐标和对应的数值。
然后,可以使用scipy库中的interpolate 模块来进行插值操作。
具体步骤如下:1. 导入必要的库和模块:```pythonimport numpy as npfrom scipy.interpolate import KrigingInterpolator```2. 准备数据点:```python# 假设已知的数据点和数值X_known = np.array([[x1, y1], [x2, y2], ...])Z_known = np.array([z1, z2, ...])```3. 创建克里金插值器:```python# 创建插值器对象kriging = KrigingInterpolator(X_known, Z_known)```4. 插值预测:```python# 预测未知位置的数值X_unknown = np.array([[x3, y3], [x4, y4], ...])Z_pred = kriging(X_unknown)```除了使用scipy库,还可以使用sklearn库中的KrigingRegressor 模块来实现克里金法的插值和预测。
这个模块提供了更多的参数和选项,可以进行更灵活的配置。
克里金插值-Kriging插值-空间统计-空间分析

克里金插值方法-Kriging 插值-空间统计-空间分析1.1 Kriging 插值克里金插值(Kriging 插值)又称为地统计学,是以空间自相关为前提,以区域化变量理论为基础,以变异函数为主要工具的一种空间插值方法。
克里金插值的实质是利用区域化变量的原始数据和变异函数的结构特点,对未采样点的区域化变量的取值进行线性无偏、最优估计。
克里金插值包括普通克里金插值、泛克里金插值、指示克里金插值、简单克里金插值、协同克里金插值等,其中普通克里金插值是最为常用的克里金插值方法。
以下介绍普通克里金插值的原理。
包括普通克里金方法在内的各种克里金插值方法的使用前提是空间数据存在着显著的空间相关性。
判断数据空间相关性是否显著的工具是半变异函数(semi-variogram ),该函数以任意两个样本点之间的距离h 为自变量,在h 给定的条件下,其函数值估计方法如下:2||||1()[()()]2()i j i j s s h h z s z s N h γ-==-∑其中()N h 是距离为h 的样本点对的个数。
()h γ最大值与最小值的差m a x m i n γγ-可以度量空间相关性的强度。
max min γγ-越大,空间相关性越强。
如果()h γ是常数,即max min 0γγ-=,则说明无论样本点之间的距离是多少,样本点之间的差异不变,也就是说样本点上的值与其周围样本点的值无关。
在实际操作中,会取一些离散的h 值,当||s s ||i j -接近某个h 时,即视为||||i j s s h -=。
然后会通过这些离散点拟合成连续的半变异函数。
拟合函数的形式有球状、指数、高斯等。
在数据存在显著的空间相关性的前提下,可以采用普通克里金方法估计未知点上的值。
普通克里金方法的基本公式如下:01ˆ()()()n i ii Z s w s Z s ==∑普通克里金方法的基本思想是:通过调整i s 的权重()i w s ,使未知点的估计值0ˆ()Z s 满足两个要求:1.0ˆ()Z s 是无偏估计,即估计误差的期望值为0,2.估计误差的方差达到最小。
克里金插值法的详细介绍。kriging。

kriging 插值作为地统计学中的一种插值方法由南非采矿工程师D.G.Krige于1951年首次提出,是一种求最优、线形、无偏的空间内插方法。
在充分考虑观测资料之间的相互关系后,对每一个观测资料赋予一定的权重系数,加权平均得到估计值。
这里介绍普通Kriging插值方法的基本步骤:1.该方法中衡量各点之间空间相关程度的测度是半方差,其计算公式为:h为各点之间距离,n 是由h 分开的成对样本点的数量,z 是点的属性值。
2.在不同距离的半方差值都计算出来后,绘制半方差图,横轴代表距离,纵轴代表半方差。
半方差图中有三个参数nugget(表示距离为零时的半方差),sill(表示基本达到恒定的半方差值),range(表示一个值域范围,在该范围内半方差随距离增加,超过该范围,半方差值趋于恒定)。
利用做出的半方差图找出与之拟合的最好的理论变异函数模型(这是关键所在),可用于拟合的模型包括高斯模型、线性模型、球状模型、指数模型、圆形模型。
----球状模型,球面模型空间相关随距离的增长逐渐衰减,当距离大于球面半径后,空间相关消失。
3.用拟合的模型计算出三个参数。
例如球状模型中nugget为c0,range为a,sill为c。
4.利用拟合的模型估算未知点的属性值,方程为:,z0为估计值,zx是已知点的值,wx为权重,s是用来估算未知点的已知点的数目。
假如用三个点来估算,则有这样权重就可以求出,然后估算未知点。
(上述内容根据《地理信息系统导论》(Kang-tsung Chang著;陈健飞等译,科学出版社,2003)第十三章内容进行总结,除球状模型公式外其余公式皆来自此书)下面是本人自己编写的利用海洋中断面上观测站点的实测温度值来估算未观测处的温度的Fortran程序,利用距离未知点最近的五个观测点来估算未知点的温度,选用模型为球状模型。
do ii=1,nxif(tgrid(ii,1)==0.)thendo i=1,dsite(ii)!首先寻找距离最近的五个已知点位置do j=1,nhif(d(mm(ii),j).ne.0.or.j==1)thenhmie(j)=d(mm(ii),j)-dgrid(i)elsehmie(j)=9999end ifhmid(j)=abs(hmie(j))end dodo j=1,nhdo k=j,nhif(hmid(j)<hmid(k))thenelsem1=hmid(j)hmid(j)=hmid(k)hmid(k)=m1end ifend doend dodo j=1,5do k=1,nhif(abs(hmie(k))==hmid(j))thenlocat(j)=kend ifend doend dodo j=1,4do k=j+1,5if(locat(j)==locat(k))thendo i3=1,nhif(abs(hmie(i3))==abs(hmie(locat(j))).and.i3.ne.locat(j))thenlocat(j)=i3exitend ifenddoendifenddoenddo!然后求各点间距离,并求半方差do j=1,5do k=1,5hij(j,k)=abs(d(mm(ii),locat(j))-d(mm(ii),locat(k)))/1000.end doend dodo j=1,5hio(j)=sqrt(hmid(j)**2+(abs(latgrid(ii)-lonlat(mm(ii),2))*llat)**2 $ +(abs(longrid(ii)-lonlat(mm(ii),1))*(1.112e5* $ cos(0.017*(latgrid(ii)+lonlat(mm(ii),2))/2)))**2)/1000.end dodo j=1,5do k=1,5if(hij(j,k).eq.0.)thenrleft(j,k)=0.elserleft(j,k)=sill*(1.5*hij(j,k)/range-0.5*hij(j,k)**3/range**3)end ifif(hio(j).eq.0.)thenrrig(1,j)=0.elserrig(1,j)=sill*(1.5*hio(j)/range-0.5*hio(j)**3/range**3)end ifend doend dorrig(1,6)=1.rleft(6,6)=0.do j=1,5rleft(6,j)=1.rleft(j,6)=1.end dotry=rleftcall brinv(rleft,nnn,lll,is,js)ty1=matmul(try,rleft)!求权重wq=matmul(rrig,rleft)!插值所有格点上t,sdo j=1,5tgrid(ii,i)=tgrid(ii,i)+wq(1,j)*t(mm(ii),locat(j)) sgrid(ii,i)=sgrid(ii,i)+wq(1,j)*s(mm(ii),locat(j))end doenddoendifenddo。
克里金算法PPT学习教案

离散变量(类型变量):
P
F(u;k | (n)) Prob{Z(u) k | (n)}
不同的取值方式:估计(estimation) 模拟(simulation)
第5页/共107页
连续型地质变量
构造深度 砂体厚度 有效厚度 孔隙度 渗透率 含油饱和度
离散型地质变量
(范畴变量) 类型变量
砂体 相 流动单元 隔夹层
E
n i 1
0
n i m m 0 i1
可得到关系式:
n
i 1
i 1
Z*(x0)
第22页/共107页
(2)估计方差最小
k 2 E Z *x0 Zx0 EZ *x0 Zx0 2 E Z *x0 Zx0 2
min
应用拉格朗日乘数法求条件极值
第6页/共107页
随机变量的特征值:
(1)数学期望 是随机变量ξ的整体代表性特征数。
①设离散型随机变量ξ的所有可能取值为 x1,x2,…,其相应的概率为
P (ξ=xk)= pk, k=1,2,….
则当级数 xk pk 绝对收敛时,称此级数 k 1
的和为ξ的数学期望,记为E(ξ),或Eξ。
E(ξ) = xk pk k 1 第7页/共107页
能用其空间分布来表征一个自然现象的变量
。
(将空间位置作为随机函数的自变量 )
•空间一点处的观测值可解释为一个随机变量在该点
处的一个随机实现。
• 空间各点处随机变量的集合构成一个随机函数。
(可以应用随机函数理论解决插值和 模拟问 题)
第13页/共107页
考虑邻近点,推断待估点 ----空间统计推断要求平稳假设
定义为Z(x)在x轴方向上的变差函数,记为 (x,h)
克里格插值法的应用

克里格插值法的应用
克里格插值法[14](Kriging)是用协方差函数和变异函数来确定高程变量随空间距离而变化的规律,以距离为自变量的变异函数,计算相邻高程值关系权值,在有限区域内对区域化变量进行无偏最优估计的一种方法,是地统计学的主要方法之一。
ArcGIS9.3中的克里格插值方法主要有以下几种类型:普通克里格(Ordinary Kriging)、简单克里格(Simple Kriging)、泛克里格(Universal Kriging)、指示克里格(Indicator Kriging)、概率克里格(Probability Kriging)、析取克里格(Disjunctive Kriging)和协同克里格(Co-Kriging)。
不同的插值方法的适用的条件不同,普通克里格法、简单克里格法和泛克里格法前提条件是样本数据符合正态分布。
当假设高程值的期望值是未知时,选用普通克里格;当假设高程值的期望值为某一已知常数时,选用简单克里格;当只需了解属性值是否超过某一阈值时,选用指示克里格;当数据存在主导趋势时,选用泛克里格;若不服从正态分布时,选用析取克里格;当同一事物的两种属性存在相关关系,且一种属性不易获取时,可选用协同克里格方法,借助另一属性实现该属性的空间内插。
使用克里格首先要进行数据分析的,看它是否满足条件,如果不满足要进行数据变换。
克里格插值法很复杂的,计算时间也慢,一般情况下用反距离权重和自然邻近差值(voronoi) 若数据,不服从正太分布?但是还想用克里金方法进行差值,该怎么调整数据?
探索性数据分析工具在,直方图,倒U型为正态分布。
克里金算法matlab

克里金算法matlab克里金算法(Kriging Algorithm)是一种常用于空间插值和预测的统计方法。
它通过在空间中已知数据点的基础上,推断未知位置的数值。
克里金算法在诸多领域中得到了广泛的应用,如地质勘探、环境科学、气象学等。
克里金算法的核心思想是基于已知数据点的空间相关性建立模型,并通过该模型预测未知位置的数值。
它假设空间中的变量是随机的,并且具有空间相关性。
通过对已知数据点的插值,可以得到整个空间中的连续数值场。
在克里金算法中,首先需要通过对已知点的空间分布进行分析,得到变量之间的空间相关性。
常用的方法包括计算半方差函数和相关函数。
半方差函数描述了不同位置之间的变异程度,相关函数则反映了不同位置之间的相关程度。
通过对已知数据点的半方差函数进行拟合,可以得到半方差函数的模型参数,从而得到空间相关性的定量描述。
在建立了空间相关性模型之后,就可以进行插值和预测了。
克里金算法通过对已知数据点的加权平均来预测未知位置的数值。
加权平均的权重是根据已知数据点与未知位置之间的距离和变异程度来确定的。
距离越近、变异程度越小的数据点权重越大,反之权重越小。
通过对所有已知数据点的加权平均,就可以得到未知位置的数值。
克里金算法的优点在于能够利用空间相关性进行插值和预测,能够提供连续的数值场。
同时,克里金算法还可以通过调整模型参数来适应不同的空间相关性,从而提高插值和预测的准确性。
此外,克里金算法还可以提供插值结果的不确定性估计,帮助用户评估预测结果的可靠性。
然而,克里金算法也存在一些限制。
首先,克里金算法在处理大规模数据时计算复杂度较高,需要消耗较多的计算资源。
其次,克里金算法对数据的空间分布有一定的要求,如果数据的空间相关性较弱或不明显,克里金算法的效果可能不理想。
此外,克里金算法还假设了空间变量是平稳的,即均值和方差在空间中保持不变,这在某些实际问题中可能不成立。
在实际应用中,克里金算法可以通过各种软件工具进行实现,如MATLAB。
克里金插值公式

克里金插值公式为:
设有n个采样点(xi,yi,zi),其中xi和yi是采样点的横纵坐标,zi是采样点的属性值(如温度、海拔高度等),则在(x,y)处的插值结果z(x,y)可以表示为:
z(x,y)=∑i=1nλi(x,y)zi
其中λi(x,y)是权重系数,表示第i个采样点对(x,y)处的插值结果的贡献。
通常情况下,λi(x,y)可以用下面的公式计算:
λi(x,y)=∑j=1nwij1∑j=1nwij
其中wij是第i个采样点与第j个采样点之间的空间距离的函数,通常采用高斯函数或指数函数,其公式如下:
wij=exp(−2h2dij2)
其中dij表示第i个采样点和第j个采样点之间的空间距离,h是插值参数,用来调节插值结果的平滑程度。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
克里格,或者说克里金插值Kriging。
法国krige名字来的。
特点是线性,无偏,方差小,适用于空间分析。
所以很适合地质学、气象学、地理学、制图学等。
相对于其他插值方法。
主要缺点:由于他要依次考虑(这也是克里格插值的一般顺序)计算影响范围,考虑各向异性否,选择变异函数模型,计算变异函数值,求解权重系数矩阵,拟合待估计点值,所以反映速度很慢。
(当然也看你算法设计和电脑反应速度了呵呵)。
而那些趋势面法,样条函数法等。
虽然较快,但是毕竟程度和适合用范围都大受限制。
具体对比如下:方法外推能力逼近程度运算能力适用范围距离反比加权法分布均匀时好差快分布均匀最近邻点插值法不高强很快分布均匀三角网线性插值高差慢分布均匀样条函数高强快分布密集时候克里金插值高强慢均可克里格插值又分为:简单,普通,块,对数,指示性,泛,离析克里金插值等。
克里金插值的变异函数球形模型,指数模型,高斯模型,纯块金模型,幂函数模型,迪维生模型等。
以下结合我的绘制等值线(等高线)的程序和高斯迭代解矩阵方程方法以及多元线性回归方法(此两方法实现另补充)说明克里格方法的实现:注:选择变异函数模型为球形模型,选择插值方法为普通克里金,我为了简化问题,考虑为各向同性,变差距离为固定。
int i,j,i0,i1,j0,j1,k,l,m,n,p,h;//循环变量double *r1Matrix;//系数矩阵double *r0Matrix;//已知向量double *langtaMatrix;//待求解向量double *x0;//已知点横坐标double *y0;//已知点纵坐标double * densgridz;//存储每次小方格内的已知值。
double densgridz0;//待求值int N1=0;//统计有多少个已知值double r[71],r0[71];int N[70];for(i=0;i<100;i++){for(j=0;j<100;j++){if(bdataprotected[i*100+j]) continue;//原值点不需要插值//1.遍历所有非保护网格。
确定每一个待插值点的r(h)//每一个网格又从横向和纵向进行搜索,也就是说正方形相关,正方形的边长以R,格子长度为50;中心距离为25//首先计算起循环的起始点。
//横向if(i-25>=0)i0=i-25;else i0=0;if(i+25<=100)i1=i+25;else i1=100;//纵向if(j-25>=0)j0=j-25;else j0=0;if(j+25<=100)j1=j+25;else j1=100;//Hmax=int(50*2^.5)=70 根据对称性,所有的r(h)除以2即为所得值。
//先待插值点的编程小方格内统计有几个已知点,如果个数小于4,则不能拟合。
N1=0;for(l=i0;l<i1;l++)for(m=j0;m<j1;m++){if(bdataprotected[100*l+m]) N1++;}if(N1<4) continue;// 不符合线性回归条件,本网格不用此方法做插值//赋初值for(l=0;l<=70;l++){r0[l]=0.0;r[l]=0.0;}//计算此插值点方格内的变异函数值for(int l=i0;l<i1;l++)for(m=j0;m<j1;m++)if(i!=l&&j!=m)//不计待估计值本身{//自循环统计算网格内部的互相之间的h,N和z。
for(n=i0;n<i1;n++)for(p=j0;p<j1;p++)if(l!=n&&p!=m) //不对h=0计算{if(bdataprotected[l*100+m]&& bdataprotected[n*100+p])//保证用样本值而非估计值来进行估计{//计算分离距离h=int(sqrt(l-n)*(l-n)+(m-p)*(m-p));//计算不同分离距离的样本差的平方和r0[h]=r0[h]+(densgrid[l*100+m]-densgrid[ n*100+p])* (densgrid[l*100+m]- densgrid[n*100+p]);//不同的分离距离的样本对数N[h]++;}}}//不同分离距离的变异函数值for(h=1;h<=70;h++)r[h]=r0[h]/(2*N[h])/2;//2.通过所有的r(h)拟合计算球形模型的参数。
方法为多元线性回归//参数初始化double x1[70],y1[70];int n1=70; double a1[4]={0,0,0,0};//a1数组存储拟合结果int m1=4;double dt1[4];//dt1数组时拟合精度double b0,b1,b2,b3;double c0,c1,a;for(h=0;h<70;h++){x1[h]=double(h+1.0);y1[h]=r[h+1];//从h=1开始有数据}//带入多元线性回归拟合模型MLR(x1,y1,n1,a1,m1,dt1);//求得球形模型的参数如下。
注意x也即h的平均值为1到70中间数。
35.5; b0=a1[0]-a1[1]*35.5+a1[2]*35.5*35.5-a1[3]*35.5*35.5*35.5;b1=a1[1]-2*35.5*a1[2]+3*a1[3]*35.5*35.5;//b2==0 忽略b3=a1[3];//化为球形模型的标准形式参数参见空间变异理论及应用 p16 及空间插值技术开发及实现 //2.3.1 2c0=b0;a=sqrt(-b1/(3*b3));c1=3/(2*a*b1);//3.求解权重系数矩阵方程的解//开辟空间r1Matrix=new double[(N1+1)*(N1+1)];r0Matrix=new double[N1+1];langtaMatrix=new double[N1+1];x0=new int[N1];y0=new int[N1];densgridz=new double[N1];//求取已知点的横纵坐标及其值int i0=0;for(l=i0;l<i1;l++)for(m=j0;m<j1;m++){if(bdataprotected[100*l+m]){x0[i0]=gridx[100*l+m];y0[i0]=gridy[100*l+m];densgridz[i0]= densgridz[100*l+m];i0++;}}//给系数矩阵赋值for(int ii=0;ii<N1+1;ii++)for(int jj=0;jj<N1+1;jj++){//最后一行最后一列分别赋值if(ii==N1) r1Matrix[ii*(N1+1)+jj]=1;else if(jj=N1) r1Matrix[ii*(N1+1)+jj]=1;else if(ii==N1 && JJ==N1) r1Matrix[ii*(N1+1)+jj];else//左上三角{//求解已知点的hh=int(sqrt((x0[ii]-x0[jj])* (x0[ii]-x0[jj])+ (y0[ii]-y0[jj])* (y0[ii]-y0[jj])));//计算rij=r(h)r1Matrix[ii*(N1+1)+jj]=b0+b1*h+b3*h*h*h;}}//已知向量矩阵赋值ri0for(ii=0;ii<N1;ii++){//计算hh=int(sqrt((x0[ii]-gridx[i*100+j])* (x0[ii]-gridx[i*100+j])+ (y0[ii]-gridy[100*i+j])* (y0[ii]-gridy[100*i+j])));r0Matrix[ii]= b0+b1*h+b3*h*h*h;}//最后一个单独赋值r0Matrix[N1]=1;double eps=0.0001;N1=N1+1;//用求解矩阵,用高斯迭代法if (gaos(N1, r1Matrix,r0Matrix, langtaMatrix,eps)>0){//得到待估计点数值for(ii=0;ii<N1;ii++)densgridz0= densgridz0+densgridz[ii]*langtaMatrix[ii]; //赋值给对应网格densgrid[i*100+j]= densgridz0;}else continue;//如果无解,则继续//释放内存空间if( r1Matrix!=NULL) delete r1Matirx;if(r0Matrix!=NULL) delete r0Matirx;if(langtaMatrix!=NULL) delete langtaMatrix; if(x0!=NULL) delete x0;if(y0!=NULL) delete y0;if(densgridz!=NULL) delete densgirdz;}。