Рассчитать вариограмму растровых данных с NA в R

Вывод: у меня есть набор растровых данных, который содержит значения NA, и я хочу рассчитать его вариограмму, игнорируя NA. Как я могу это сделать?

У меня есть изображение, которое я загрузил в R с помощью функции readGDAL, сохраненное как im. Чтобы сделать это воспроизводимым, результат dput на изображении доступен по адресу https://gist.github.com/2780792< /а>. Я пытаюсь отобразить вариограмму этих данных и борюсь. Я пройду через то, что я пробовал до сих пор:

Я попробовал пакет gstat, но не смог получить работающий вызов функции. Я понял, что в основном мне нужны сами значения данных (im@data$band1) и координаты (coordinates(im)). Я пробовал различные команды, такие как:

> variogram(locations=coordinates(im), y = im@data$band1)
Error in is.list(object) : 'object' is missing

и

> variogram(coordinates(im), im@data$band1)
Error in variogram.default(coordinates(im), im@data$band1) : 
  argument object and locations should be lists

Что я здесь делаю неправильно?

Поскольку это не сработало, я попробовал пакет geoR, который я вызвал, используя:

> variog(coords=coordinates(im), data=im@data$band1)
variog: computing omnidirectional variogram
Error in FUN(X[[1L]], ...) : NA/NaN/Inf in foreign function call (arg 4)

Ошибка выглядит так, как будто она связана с данными, содержащими NA, поэтому я попытался удалить их с помощью na.omit, но это оставило все NA там. В этом есть смысл, так как растровый файл должен иметь что-то в каждом квадрате сетки. Есть ли способ как-то удалить NA или хотя бы заставить команду variog игнорировать их?

Любая помощь приветствуется.


person robintw    schedule 24.05.2012    source источник


Ответы (1)


Если объект данных, переданный в gstat:variogram, является пространственным объектом (ваши данные — это aSpatialGridDataFrame), то вам не нужно указывать местоположения, так как они содержатся в данных.

Однако очевидно, что значения NA вызывают проблему, поэтому, если мы заставим объект сетки быть SpatialPointsDataFrame, это удалит значения NA.

im содержит данные https://gist.github.com/2780792.

library(gstat)
point_data <- as(im, 'SpatialPointsDataFrame')
gstat_variogram <- variogram(band1 ~ 1, data = point_data)

Чтобы использовать geoR

library(geoR)
geor_variogram <- variog(coords = coordinates(point_data), 
                          data = point_data@data$band1)

или еще проще (поскольку geoR работает с объектами класса geodata и содержит функцию as.geodata для преобразования объекта SpatialPointsDataFrame в geodata

geor_variogram <- variog(as.geodata(point_data))
person mnel    schedule 24.05.2012