Я пытаюсь использовать линейную модель для прогнозирования некоторых растров.
Это моя модель:
model1 <- lm(y~x)
model2 <- lm(y~x+c)
c - коэффициент страны, один уровень для каждого кода страны. Я хочу использовать функцию predict
, где мои новые значения x входят в один растр для каждой страны.
library(raster)
ntl <- readRaster("ntl_BRA.tif")
ctry <- "BRA"
p1 = predict(model1, newdata=data.frame(x=ntl[]))
p2 = predict(model2, newdata=data.frame(x=ntl[],c=ctry))
Прогноз работает медленно, но хорошо для модели номер один (без факторов). Однако при включении коэффициента в модель я получаю следующую ошибку:
не может выделить вектор размером 31,9 Гб
Существует только один отдельный фактор, используемый для каждой страны / растрового слоя, поэтому мне не кажется, что ему понадобится так много дополнительной памяти.
Я неправильно определяю коэффициент?
Вот детали данных:
> ntl
> class : RasterLayer
> dimensions : 4347, 4957, 21548079 (nrow, ncol, ncell)
> resolution : 0.004166667, 0.004166667 (x, y)
> extent : -8.668749, 11.98542, 18.97708, 37.08958 (xmin, xmax, ymin, ymax)
> coord. ref. : +proj=longlat +datum=WGS84 +no_defs +ellps=WGS84 +towgs84=0,0,0
> data source : in memory
> names : layer
> values : -4.60517, 9.519959 (min, max)
и данные, из которых я создаю модель:
> str(rdata)
'data.frame': 1659 obs. of 3 variables:
$ x: num 9.39 9.12 8.53 10.83 8.03 ...
$ y: num 8.81 8.77 9.25 9.24 9.17 ...
$ c: Factor w/ 198 levels "ABW","AFG","AGO",..: 190 190 147 147 147 147 147 147 147 147 ...