2017-01-30 2 views
0

Использование функции autofitVariogram() из пакета автокарта у меня генерировать следующие ошибки:R: ошибка с 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) 

Что вызывает эту ошибку? Интерполированные значения вызывают какую-то «особенность»?

Thx!

+0

Разработчик automap здесь. Я думаю, что это больше связано с причудой в automap, а не с какой-то более общей статической проблемой. Я попытаюсь изучить его в ближайшие дни. –

ответ

1

Эта ошибка вызвана тем, что 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 наблюдений для создания осмысленной вариограммы для соответствия модели вариограммы.

0

В последнее время я также сталкивался с этой проблемой. Я выясню, что в моих данных есть значения Inf, и если я их удалю, пакет работает хорошо. Надеюсь, это может вам помочь.

Смежные вопросы