autoKrige — ошибка в eval (выражение, окружение, enclos): объект «….» не найден

#r #automap

#r #автоматическое сопоставление

Вопрос:

У меня вопрос об автоматической привязке пакета.

Я пробовал обычный кригинг без проблем с моими данными и работал нормально. Но когда я попробовал универсальный Кригинг, я получил сообщение об ошибке, которое я не мог понять.

Я думаю, это может быть просто, но я не знаю, почему функция не нашла ‘sil_clay.’

Спасибо.

Выше моего кода:

 library(automap)
data_interpol<-read.table("merge_guaiba_ceco2.txt", header=T)
head(data_interpol)
   long     lat depth silt_clay    avgran pcsand    om
1 471699 6680184   1.9    51.626 0.6683944 48.313 11.50
2 473777 6679430   1.8    57.810 0.6669483 42.186  8.80
3 471931 6679087   2.4    54.625 0.6718675 45.370  9.30
4 471337 6678456   1.9     2.887 0.4128039 97.113  0.00
5 472936 6678421   2.5    49.136 0.6344626 50.864  9.90
6 473945 6678482   1.9    99.614 0.9984355  0.386  9.45

coordinates(data_interpol)<- ~long lat
kriging_om = autoKrige(om~ 1, data_interpol, grid4)# works fine
kriging_om_Universal= autoKrige(om~ silt_clay   avgran   pcsand, data_interpol, grid4)
Error in eval(expr, envir, enclos) : object 'silt_clay' not found # my error

####code to obtain grid4:
    grid <- raster( )
    grid <- raster(ncol=1544, nrow=1056, xmn=468318.3, xmx=499998.3, ymn=6634918, ymx=6681238) projection (grid) <- ' proj=utm  zone=22  south  ellps=aust_SA  units=m  no_defs ‘
    res(grid) <- 30
    grid4 <- as(grid, ‘SpatialPoints’)
  

Редактирование для обсуждения ошибки. После изменения сетки ошибка сохраняется:

Это d_margin_xyz моя новая сетка.

 str(d_margin_xyz)
Formal class 'SpatialPointsDataFrame' [package "sp"] with 5 slots
  ..@ data       :'data.frame': 1628352 obs. of  1 variable:
  .. ..$ DIST_MARGIN: num [1:1628352] 0 0 0 0 0 0 0 0 0 0 ...
  ..@ coords.nrs : int [1:2] 1 2
  ..@ coords     : num [1:1628352, 1:2] 468333 468363 468393 468423 468453 ...
  .. ..- attr(*, "dimnames")=List of 2
  .. .. ..$ : NULL
  .. .. ..$ : chr [1:2] "x" "y"
  ..@ bbox       : num [1:2, 1:2] 468333 6634963 499983 6681193
  .. ..- attr(*, "dimnames")=List of 2
  .. .. ..$ : chr [1:2] "x" "y"
  .. .. ..$ : chr [1:2] "min" "max"
  ..@ proj4string:Formal class 'CRS' [package "sp"] with 1 slots
  .. .. ..@ projargs: chr NA
  

Повторная попытка с новой сеткой, содержащей предиктор для универсального кригинга, ошибка появляется снова. Есть какие-либо подсказки?

 kriging_om_Universal= autoKrige(om~ DIST_MARGIN, data_interpol, d_margin_xyz)
Error in eval(expr, envir, enclos) : object 'DIST_MARGIN' not found
  

Комментарии:

1. Есть ли у вас столбец «sil_clay» в grid4 ?

2. @Pascal, вероятно, прав. Для универсального кригинга вам нужны значения предикторов в местоположениях прогнозирования. Не могли бы вы добавить фрагмент grid4 ?

3. Привет @Pascal, у меня нет столбца ‘silt_clay’ в ‘grid4’.

4. Привет @Paul Hiemstra, я добавил код для «grid4».

Ответ №1:

Проблема в том, что ваш объект прогнозирования, grid4 , является всего лишь SpatialGrid объектом без атрибутов. Чтобы иметь возможность прогнозировать с использованием универсального кригинга, Вам нужны значения всех предикторов (т. Е. silt_clay , avgran , и т.д.) В местоположениях прогнозирования, т. Е. В качестве атрибутов grid4 . Ваша ошибка вызвана тем фактом, что silt_clay это не атрибут.

Чтобы устранить эту проблему, вам необходимо добавить атрибуты grid4 . Для этого вам нужно иметь какую-то карту области, охватывающую silt_clay и другие предикторы. Затем вы можете либо преобразовать эту карту в SpatialGrid объект с атрибутами, либо извлечь значения в местоположениях grid4 из этой карты.

Комментарии:

1. Хорошо! У меня нет карты покрытия sil_clay для использования в универсальном кригинге. Мне нужна карта как ‘dist’, как в вашем примере с функцией ‘automap’?

2. @ThiagoCesarLimaSilveira это правильно. Если у вас нет карт вашей ковариации, которые охватывают всю область прогнозирования, универсальное кригирование невозможно.

3. Хорошо! Спасибо @Paul Hiemstra. У меня есть несколько карт, которые могли бы мне помочь. Теперь я выясняю, как добавить эти атрибуты в мою ‘grid4’. У вас есть какой-нибудь совет, как это сделать? Большое вам спасибо!

4. Я бы взглянул на overlay over пакет или sp из него, я полагаю. Если у вас есть новый конкретный вопрос, просто создайте новый вопрос здесь, в stackoverflow, включая воспроизводимый пример.