如何通过使用gstat预测,使普通克里格(How to make Ordinary Kriging

2019-08-04 05:00发布

我试图写为r的代码,以创建插值gstat库使用。 我已经阅读了gstat手动和基于互联网上我已经成功地编写代码一些例子(这只是其中的一部分):

 g <- gstat(id="tec", formula=TEC ~ 1, data=data)  ##I create an object
 v <- variogram(g) # plot the empirical variogram
 plot(v)
 mod<-vgm(sill=var(data$TEC),model="Sph",range=200,nugget=200) #create the variogram model

v.fit <- fit.variogram(v, model=mod,fit.method=1)  #fit the empirical variogram 
Theor_variogram=plot(variogram(g),v.fit,main="WLS Model") #plot the theoretical variogram
plot(Theor_variogram)
 ## Kriging interpolation
 p <- predict.gstat(g, model=v.fit, newdata=predGrid)

我的问题是,当我运行最后一个命令(预测),而不是领与克里格插值结果,我得到一个与加权反距离(IDW)。 我在gstat手动读取:“当没有指定变差函数,反距离加权内插是默认的动作。当变差函数中指定的默认预测方法是普通克里格。”

但是,正如你可以在我的代码中看到,我指定的经验和理论变差函数两者。 你知道为什么我一直得到的,而不是普通克里格IDW? 可以把它与我有坐标的类型有关系吗? 举例来说,如果我有坐标接近对方,或者如果感兴趣的区域是太大了? 任何帮助将是非常有用的。

在此先感谢季米特里斯

Answer 1:

您需要包括创建gstat对象,而不是去预测阶段:

g <- gstat(id="tec", formula=TEC ~ 1, data=data, model = v.fit)

不过,我会建议使用标准接口gstat使用krige 。 此结合的建筑gstat对象和预测成一个功能。 很少做,你需要建立gstat对象自己。 例如:

data(meuse)
coordinates(meuse) = ~x+y
data(meuse.grid)
gridded(meuse.grid) = ~x+y
m <- vgm(.59, "Sph", 874, .04) 
# OK:
x <- krige(log(zinc)~1, meuse, meuse.grid, model = m)

你也可以使用automap包(其中我的作者),并让变差函数模型自动安装到数据。 例如使用meuse数据集:

library(automap)
kr = autoKrige(log(zinc)~1, meuse, meuse.grid)

这会自动生成一个样本变差,并且适合变差函数模型到样品变差。



文章来源: How to make Ordinary Kriging by using gstat predict