R:autofitVariogram错误(自动包)

时间:2017-01-30 16:39:02

标签: r runtime-error automap

使用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)

导致此错误的原因是什么?内插值会导致某种“奇点”吗?

THX!

2 个答案:

答案 0 :(得分: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个观测值来生成有意义的变差函数,以适应变差函数模型。

答案 1 :(得分:0)

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