首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用gstat进行普通克里格法预测

如何使用gstat进行普通克里格法预测
EN

Stack Overflow用户
提问于 2012-12-18 02:56:59
回答 1查看 6.7K关注 0票数 4

我正在尝试用R写一段使用gstat库的代码,以便创建插值。我已经阅读了gstat手册,并且基于互联网上的一些示例,我已经设法编写了以下代码(这只是一部分):

代码语言:javascript
复制
 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而不是普通的克里金法吗?它能与我拥有的坐标类型相关吗?例如,如果我的坐标彼此接近,或者如果感兴趣的区域太大?任何帮助都是非常有用的。

预先感谢迪米特里斯

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-12-18 04:49:48

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

代码语言:javascript
复制
g <- gstat(id="tec", formula=TEC ~ 1, data=data, model = v.fit)

但是,我建议使用使用krigegstat的标准接口。这将gstat对象的构建和预测合并到一个函数中。很少需要自己构建gstat对象。例如:

代码语言:javascript
复制
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数据集:

代码语言:javascript
复制
library(automap)
kr = autoKrige(log(zinc)~1, meuse, meuse.grid)

这将自动构建样本变差函数,并将变差函数模型拟合到该样本变差函数。

票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13920342

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档