R中克里金法的交叉验证:如何在使用xvalid重新估计变差函数时包括趋势?

时间:2017-04-20 13:17:51

标签: r geospatial cross-validation kriging geor

我对R中的函数xvalid(package geoR)有一个非常具体的问题,它只用于空间统计,所以我希望它不是太具体,不能让某人能够回答。无论如何,也欢迎提供替代功能/包装的建议。

我想计算变异函数,拟合它,然后执行交叉验证。函数xvalid似乎非常适合进行交叉验证。当我设置reestimate = TRUE时(因此它重新估算了交叉验证中从数据集中删除的每个点的变异函数)它都有效,并且它在使用趋势时也有效。但是,将这两个结合起来似乎不起作用......

以下是使用经典Meuse数据集的示例:

library(geoR)
library(sp)
data(meuse) # import data
coordinates(meuse) = ~x+y # make spatialpointsdataframe
meuse@proj4string <- CRS("+init=epsg:28992") # add projection
meuse_geo <- as.geodata(meuse) # create object of class geodata for geoR compatibility
meuse_geo$data <- meuse@data # attach all data (incl. covariates) to meuse_geo
meuse_vario <- variog(geodata=meuse_geo, data=meuse_geo$data$lead, trend= ~meuse_geo$data$elev) # variogram
meuse_vfit <- variofit(meuse_vario, nugget=0.1, fix.nugget=T) # fit
# cross-validation works fine:
xvalid(geodata=meuse_geo, data=meuse_geo$data$lead, model=meuse_vfit, variog.obj = meuse_vario, reestimate=F) 
# cross-validation does not work when reestimate = T:
xvalid(geodata=meuse_geo, data=meuse_geo$data$lead, model=meuse_vfit, variog.obj = meuse_vario, reestimate=T) 

我得到的错误是:

Error in variog(coords = cv.coords, data = cv.data, uvec = variog.obj$uvec,  : coords and trend have incompatible sizes

似乎在交叉验证期间从数据集中删除了该点,但它似乎没有从协变量/趋势数据中删除该点。有关解决此问题或使用其他包裹的任何想法吗?

提前多多感谢!

0 个答案:

没有答案