使用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!
答案 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
值,如果我删除它们,那么该包运行良好。希望这可以帮助你。