R:autofitVariogram 错误(automap 包)

R: error with autofitVariogram (automap package)

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

Error in vgm_list[[which.min(SSerr_list)]] : attempt to select less than one element in 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)

导致此错误的原因是什么?内插值会导致某种 'singularity' 吗?

谢谢!

此错误是由于 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 returns NULL。这反过来会导致 autofitVariogram 失败。

解决方案是,如果您想使用克里金法,只需拥有更多数据即可。根据经验,您需要大约 30 个观测值才能生成有意义的变异函数,以适应变异函数模型。

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