1

使用 automap 包中的 autofitVariogram() 函数我产生了以下错误:

vgm_list[[which.min(SSerr_list)]] 中的错误:尝试在 get1index 中选择少于一个元素

示例代码:

model <- as.formula(Value ~ Elevation)
data <- matrix(c(11.07,42.75,5,62.5,
                 8.73,45.62,234,75,
                 12.62,44.03,12,75,
                 10.87,45.38,67,75,
                 8.79,42.53,64,75),
               nrow = 5, byrow = TRUE)
data <- as.data.frame(data)
names(data) <- c('Lon', 'Lat', 'Elevation', 'Value')
library('sp')
coordinates(data) = ~Lon+Lat
library('automap')
autofitVariogram(model, data)

是什么导致了这个错误?插值会导致某种“奇点”吗?

谢谢!

4

2 回答 2

2

此错误是由于在gstat给定观察数的情况下无法生成实验变异函数引起的:

library(gstat)
library(sp)

data <- matrix(c(11.07,42.75,5,62.5,
                 8.73,45.62,234,75,
                 12.62,44.03,12,75,
                 10.87,45.38,67,75,
                 8.79,42.53,64,75),
               nrow = 5, byrow = TRUE)
data <- as.data.frame(data)
names(data) <- c('Lon', 'Lat', 'Elevation', 'Value')
coordinates(data) = ~Lon+Lat
variogram(Value ~ Elevation, data)
## NULL

当给出的观察值不足时,gstat::variogram返回NULL. 这反过来会导致 autofitVariogram 失败。

如果您想使用克里金法,解决方案是简单地拥有更多数据。一条经验法则是,您需要大约 30 个观测值来生成有意义的变异函数以拟合变异函数模型。

于 2017-02-01T10:05:08.183 回答
0

最近,我也遇到了这个问题。我发现原因是Inf我的数据中有一些值,如果我删除它们,包运行良好。希望这可以帮助你。

于 2018-02-20T17:24:41.940 回答