Multidimensional kriging estimation with noisy data observations can be performed using “krig”

[d_est,d_var,lambda_sk,K_dd,k_du,inhood]=krig(pos_known,val_known,pos_est,V,options); ndata : number of data observations ndims : dimensions of data location (>=1) nest : number of data locations to be estimated pos_known [ndata,ndims] : Locations of data observations val_known [ndata,1 or 2] : col1 : Data value as measured at 'pos_known' col2 : Data uncertainty as measured at 'pos_known' (optional) pos_est [1 ,ndims] : Location of data to be estimated V : Variogram model, e.g. '1 Sph(100)' options : kriging options.

Please note data uncertainty is listed as the second column of `val_known`

. Data uncertainty is defined as the variance of Gaussian noise distribution associated to each data measurement. Specified in this manner, the noise on data observations is considered uncorrelated. If only one column is specified, data observations are treated as noise free.

`options`

, the last argument, is a Matlab structure that controls most aspect of the kriging, such as choosing the neighborhood, and kriging method. The names for most of these options are same as the names used to control GSTAT, see “*GSTAT from Matlab*”

**Table 2.1. kriging options**

option.[?] | GSTAT equiv | description | link |
---|---|---|---|

sk_mean,mean | sk_mean | Specify the global mean, as used by simple kriging | |

trend | trend | Krig only the trend. | |

max | max | The maximum number of data to use in the search neighborhood | |

polytrend | d | The polynomial order of the trend for each dimension | |

xvalid | xvalid | If specified as `xvalid=1` cross validation on known data locations is performed | |

isorange | `isorange=1` assumes no rotation in anisotropy. If chosen, each entry in the range section of a variogram corresponds to the range for a certain dimension. For example 'Sph(1,10,1,100)' corresponds to a range of 1 in the first dimension, 10 in the second dimension, 1 in the third dimension and 100 in the fourth dimension. If GSTAT is used for kriging in 1, 2 and 3 dimensions, the range selections are translates properly to GSTAT format using the isorange function. |

the Kriging methods: simple Kriging, ordinary Kriging and Kriging with a trend are all available using `krig`

. The difference between these three methods is the way the trend is modelled. Simple Kriging assumed a constant and known mean. Ordinary kriging makes use of an varying unknown mean (that is estimated within the neighborhood). Kriging with a trend model the trend as a smoothly varying polynomial trend. Thus ordinary kriging is but a form of kriging with a trend,; a 0th order polynomial trend.

By default ordinary Kriging in an exhaustive neighborhood (i.e. all data measurements are used all the time) is performed. This is identical to simple Kriging when `options.mean=mean(pos_known(:,1))`

For each dimension (direction) the order of the polynomial fit of the trend can be specified by `options.polyfit`

if the value of `options.polyfit`

is an integer scalar, then the same polynomial fit is used for all dimensions. Thus the default linear trend in all directions is identical to specifying `options.polyfit=1`

.

if the value of `options.polyfit`

is an array of integers, each integer in the array must specify the order of the trend for each dimension. The length of the array must be equal to the size of the dimension of the observation. Thus, for 2D data observations one can specify a 2nd order polynomial trend in the first direction and a 0th order fit in the second direction as `options.polyfit=[2 0]`

.

By default all data observations are always used. The kriging neighborhood denote the data that are actually used by the kriging systems.

A maximum number of data used by the kriging system is selected as `options.max=10`

. The data locations closes to the point being estimated is retained in the data neighborhood.

See also “nhood” that controls the data neighborhood behavior.

Based on the data observations below, a number of example are shown illustrating the use of kriging in mGstat

In the following example 3 data measurements has been made : x(1)=0; x(5)=3; x(2)=2. Using a Spherical semivariogram model with a range of '0.2' and a sill of '1', the mean and variance of the distribution of the local probability density function at x(2) is found:

pos_known=[1;5;10]; val_known=[0;3;2]; % adding some uncertainty V='1 Sph(.2)'; % Select variogram model pos_est=[2]'; [d_est,d_var]=krig(pos_known,val_known,pos_est,V) d_est = 1.6667 d_var = 1.3333

from: `mGstat/examples/mgstat_examples/krig_ex1.m`

pos_known=[1;5;10]; val_known=[0;3;2]; % V='1 Sph(.2)'; % Select variogram model pos_est=[0:.1:10]'; [d_est,d_var]=krig(pos_known,val_known,pos_est,V); plot(pos_est,d_est,'k',pos_known,val_known,'ro') print -dpng krigex2

pos_known=[1;5;10]; % val_known=[0;3;2]; % V='1 Sph(.2)'; % Select variogram model pos_est=[0:.1:10]'; [d_est_ok,d_var_ok]=krig(pos_known,val_known,pos_est,V); options.mean=2; [d_est_sk,d_var_sk]=krig(pos_known,val_known,pos_est,V,options); options.trend=1; [d_est_kt,d_var_kt]=krig(pos_known,val_known,pos_est,V,options); plot(pos_est,[d_est_sk,d_est_ok,d_est_kt],'-',pos_known,val_known,'ro') legend('SK','OK','KT','Data') print -dpng krigex3

rand('seed',1) ndata=10; pos_known=rand(ndata,1)*10; val_known=randn(ndata,1); % V='1 Sph(.2)'; % Select variogram model pos_est=[0:.1:10]'; clear options; [d_est_ok,d_var_ok]=krig(pos_known,val_known,pos_est,V,options); options.mean=2; [d_est_sk,d_var_sk]=krig(pos_known,val_known,pos_est,V,options); options.trend=1; [d_est_kt,d_var_kt]=krig(pos_known,val_known,pos_est,V,options); plot(pos_est,[d_est_sk,d_est_ok,d_est_kt],'-',pos_known,val_known,'k*') legend('SK','OK','KT','Data') print -dpng krigex4

rand('seed',1) ndata=10; pos_known=rand(ndata,1)*10; val_known=randn(ndata,1); % V='1 Sph(.2)'; % Select variogram model pos_est=[0:.1:10]'; clear options;options.max=4; [d_est_ok,d_var_ok]=krig(pos_known,val_known,pos_est,V,options); options.mean=2; [d_est_sk,d_var_sk]=krig(pos_known,val_known,pos_est,V,options); options.trend=1; [d_est_kt,d_var_kt]=krig(pos_known,val_known,pos_est,V,options); plot(pos_est,[d_est_sk,d_est_ok,d_est_kt],'-',pos_known,val_known,'k*') legend('SK','OK','KT','Data') print -dpng krigex5

rand('seed',1) ndata=30; pos_known=rand(ndata,1)*10; val_known=randn(ndata,1); % val_var=zeros(ndata,1)+.1; % V='1 Sph(.1)'; % Select variogram model pos_est=[-2:.1:12]'; clear options;options.max=4; [d_est_ok,d_var_ok]=krig(pos_known,[val_known val_var],pos_est,V,options); options.mean=mean(val_known); [d_est_sk,d_var_sk]=krig(pos_known,[val_known val_var],pos_est,V,options); options.trend=1; [d_est_kt,d_var_kt]=krig(pos_known,[val_known val_var],pos_est,V,options); plot(pos_est,[d_est_sk,d_est_ok,d_est_kt],'-',pos_known,val_known,'k*') legend('SK','OK','KT','Data') print -dpng krigex6

© 2004-2010 Thomas Mejer Hansen. | This site is hosted by |