Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/82.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在R中使用gstat或automap软件包时重复数据_R_Spatial Interpolation_Kriging_Gstat_Automap - Fatal编程技术网

在R中使用gstat或automap软件包时重复数据

在R中使用gstat或automap软件包时重复数据,r,spatial-interpolation,kriging,gstat,automap,R,Spatial Interpolation,Kriging,Gstat,Automap,我正在尝试使用普通克里格法,根据使用gstat或automap软件包的预测变量,在空间上预测动物将出现的位置。我有许多(超过100个)重复的坐标点,我不能丢弃这些坐标点,因为这些站在多年中多次采样。每次我为普通克里格法运行下面的代码时,我都会得到一个LDL错误,这是由于重复点造成的。有人知道如何在不丢弃数据的情况下解决此问题吗?我已经尝试了automap软件包中的代码,该软件包应该能够纠正重复的代码,但我无法使其正常工作。谢谢你的帮助 coordinates(fish) <- ~ LONG

我正在尝试使用普通克里格法,根据使用gstat或automap软件包的预测变量,在空间上预测动物将出现的位置。我有许多(超过100个)重复的坐标点,我不能丢弃这些坐标点,因为这些站在多年中多次采样。每次我为普通克里格法运行下面的代码时,我都会得到一个LDL错误,这是由于重复点造成的。有人知道如何在不丢弃数据的情况下解决此问题吗?我已经尝试了automap软件包中的代码,该软件包应该能够纠正重复的代码,但我无法使其正常工作。谢谢你的帮助

coordinates(fish) <- ~ LONGITUDE+LATITUDE
x.range <- range(fish@coords[,1])
y.range <- range(fish@coords[,2])
grd <- expand.grid(x=seq(from=x.range[1], to=x.range[2], by=3), y=seq(from=y.range[1], to=y.range[2], by=3))
coordinates(grd) <- ~ x+y
plot(grd, pch=16, cex=.5)
gridded(grd) <- TRUE

library(gstat)
zerodist(fish) ###146 duplicate points
v <- variogram(log(WATER_TEMP) ~1, fish, na.rm=TRUE)
plot(v)
vgm()
f <- vgm(1, "Sph", 300, 0.5)
print(f)
v.fit <- fit.variogram(v,f)
plot(v, model=v.fit) ####In fit.variogram(v, d) : Warning: singular model in variogram fit

krg <- krige(log(WATER_TEMP) ~ 1, fish, grd, v.fit) 
## [using ordinary kriging]
##"chfactor.c", line 131: singular matrix in function LDLfactor()Error in predict.gstat(g, newdata = newdata, block = block, nsim = nsim,: LDLfactor

##automap code for correcting for duplicates
fish.dup = rbind(fish, fish[1,]) # Create duplicate
coordinates(fish.dup) = ~LONGITUDE + LATITUDE 
kr = autoKrige(WATER_TEMP, fish.dup, grd)
###Error in inherits(formula, "SpatialPointsDataFrame"):object 'WATER_TEMP' not found
###somehow my predictor variables are no longer available when in a Spatial Points Data Frame??

coordinates(fish)
automap
对重复观测有一个非常简单的修复方法,即丢弃它们。因此,
automap
并不能真正解决您的问题。我看到一些选择:

  • 丢弃复制品
  • 稍微扰动副本的坐标,使其不再位于完全相同的位置
  • 使用
    gstat
    执行

关于你的具体问题,请使你的例子具有可复制性。我能猜到的是,你的
fish
对象的
rbind
没有做你期望的事情…

automap::autoKrige
期望一个公式作为第一个参数,试试看

kr = autoKrige(WATER_TEMP~1, fish.dup, grd)

或者,您可以使用geoR包的函数jitterDupCoords。

请编辑Q以包含
呼叫(或链接),使
可访问。哦,对不起,我是新手。我是否必须提供我的个人数据(即fish)?我不知道是否有可能查看代码,看看哪里出了问题。如果您找到一个熟悉该软件包的用户,这是可能的。我不是,所以我需要有一个数据对象来处理。您能从gstat中提供的一个数据对象中得到错误信息吗?(第一个错误看起来也不像是一条完整的R错误消息。)当我为该包使用提供的(meuse)数据集时,一切正常。我不确定我的数据有什么不起作用。我将原始问题中的错误消息修正为完整消息。虽然我必须处理网格的尺寸,但我最终还是让它工作了。谢谢保罗,谢谢你的建议。我接受了你的建议,能够在重复坐标稍微受到干扰的情况下运行自动克里格函数。克里格预测网格非常不清晰(即非常像素化的网格),但这可能是我最初设置网格尺寸的一个函数。非常感谢。