2016-02-04 82 views
0

我想使用普通克里金来根据预测变量使用g中的gstat或automap包预测动物的空间预测数据。我有很多(超过100)重复坐标点,我不能扔掉,因为这些台站多年来多次采样。每次我运行普通克里格的代码时,我都会得到一个LDL错误,这是由于重复点造成的。有谁知道如何解决这个问题,而不会抛出数据?我已经尝试了automap包中的代码,该代码旨在纠正重复项,但是我无法使其工作。感谢您的帮助!当在R中使用gstat或automap包时重复数据

coordinates(fish) <- ~ LONGITUDE+LATITUDE 
x.range <- range([email protected][,1]) 
y.range <- range([email protected][,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?? 
+0

请编辑Q以包含使'fish'可访问的'library'调用(或链接)。 –

+0

哦,对不起,我是新手。我必须提供我的个人资料(即鱼)吗?我不知道是否可以查看代码并查看出错的地方。 –

+0

如果您找到该软件包的知识丰富的用户,则可能是可能的。我不是这样,我需要有一个数据对象来处理。你能用gstat中提供的数据对象之一得到错误吗? (第一个错误也看起来不像一个完整的R错误信息。) –

回答

0

automap对于重复观察有一个非常简单的修复方法,那就是放弃它们。所以,automap并不能真正解决你的问题。我看到一些选项:

  • 丢弃重复项。
  • 稍微扰动副本的坐标,以使它们不再位于完全相同的位置。
  • 使用gstat执行space-time kriging

关于您的具体问题,请使您的示例具有可重现性。我能猜到是你fish对象的rbind不是做你的期望......

+0

谢谢你的建议,保罗。我接受了你的建议,并且能够运行autoKrige函数,并且我的重复坐标稍微有些不安。克里格预测网格出来非常不清楚(即非常像素化的网格),但这可能是我最初如何设置我的网格维度的函数。谢谢! –

1

automap::autoKrige预计公式作为第一个参数,尽量

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

我终于弄到了这个工作,但我必须玩弄我的网格的尺寸。谢谢! –