Как я могу выполнить пространственно-временной кригинг в R и использовать несколько предикторов? - PullRequest
0 голосов
/ 26 марта 2020

Я пытаюсь выполнить пространственный временной кригинг в R с помощью пакетов gstat и spacetime. У меня есть предварительно обработанный набор данных, который состоит из столбцов, таких как время, широта, долгота, температура, высота, urban_index (есть растры в виде файлов .tif для всех возможных переменных-предикторов). Кадр данных основан на мобильных и стационарных измерениях температуры (обычно каждые 5 минут) в течение 3 лет. В качестве ориентации для некоторых шагов я использовал этот очень полезный веб-сайт:

https://r-video-tutorial.blogspot.com/2015/08/spatio-temporal-kriging-in-r.html

Весь анализ работает, если я не указываю какие-либо переменные предиктора, как в следующем строка:

pred <- krigeST(TEMP~1, data = timeDF, modelList = SimplesumMetric_Vgm,
                newdata = st_grid, progress = TRUE)

Новые данные были созданы следующим образом (sp - это объект SpatialPixels):

# short subset of for time steps for testing
temp_pred_grid <- seq(as.POSIXct('2017-07-18 14:00 CET'),
                      as.POSIXct('2017-07-18 17:00 CET'), length.out = 4)

# spatio temporal Grid
# is there another way to create it?
st_grid <- STF(sp = raster,        
               time = temp_pred_grid) 

Однако я хочу использовать несколько переменных-предикторов, поэтому у меня есть Rasterstack (SpatialGridDataframe) )

# load Rasters
rlist <- list.files("D:/...",
                    pattern = ".tif$", full.names = TRUE)
# Rasterstack
stack <- stack(rlist)
crs(stack) <- "+init=epsg:4326"
crs(stack)
# Spatial Grid Data Frame
stack <- as(stack, "SpatialGridDataFrame")
# The names of the rasters are the same as the equivalant columns in the dataframe

К сожалению, я не могу использовать этот Rasterstack для создания пространственной временной сетки, потому что функция STF преобразует мой SpatialGridDataframe обратно в SpatialPixels и вся информация из растров теряется!

Мой вопрос: что мне нужно сделать, чтобы следующая строка кода работала?

pred <- krigeST(TEMP ~ elevation + urban_index, data = timeDF, modelList = SimplesumMetric_Vgm,
                newdata = st_grid, progress = TRUE)

Я много искал в Inte rnet, но нашел только примеры, где они используют формулы, такие как "x ~ 1 ». Основываясь на документации функции krigeST, она поддерживает несколько переменных-предикторов ... Другое дело, что я могу использовать Rasterstack в качестве аргумента newdata, если я выполню classi c Universel Kriging в течение периода времени около 30 минут.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...