首页 文章

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

提问于
浏览
4

我试图在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而不是普通克里金吗?它可以与我的坐标类型相关吗?例如,如果我的坐标彼此接近,或者感兴趣的区域太大?任何帮助都非常有用 .

在此先感谢迪米特里斯

1 回答

  • 5

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

    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)
    

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

相关问题