Я пытаюсь выполнить пространственный временной кригинг в 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 минут.