Задачи с предсказанием растра по линейной модели в r - PullRequest
0 голосов
/ 30 апреля 2019

У меня проблемы с предсказанием растра с использованием линейной модели.

Сначала я создаю свою модель из данных, найденных в моих полигонах.

  # create model
  poly <- st_read("polygon.shp")
  df <- na.omit(poly)
  df <- df[df$gdp > 0 & df$ntl2 > 0 & df$pop2 > 0,]

  x <- log(df$ntl2)
  y <- log(df$gdp*df$pop2)
  c <- df$iso
  d <- data.frame(x,y,c)

  m <- lm(y~x+c,data=d)

Тогда я хочу использовать растр :: прогнозирование для оценки выходного растра

  # raster data
  iso <- raster("iso.tif")
  viirs <- raster("viirs.tif")

  x <- log(viirs)
  c <- iso

  ## predict with models
  s <- stack(x,c)
  predicted <- raster::predict(x,model=m)

однако я получаю следующий ответ:

Error in model.frame.default(Terms, newdata, na.action = na.action, xlev = object$xlevels) : 
  object is not a matrix

Я не знаю, в чем проблема и как ее исправить. В настоящее время я считаю, что это связано с факторами / кодами стран:

Моя модель включает коды стран, так как я хотел бы включить некоторые страновые фиксированные эффекты. Может быть, есть проблемы с включением этих. Однако даже при исключении кодов стран из модели и всего фрейма данных я получаю то же сообщение об ошибке.

Кроме того, моя модель основана на региональных значениях со всего мира, а наборы данных прогноза включают только протяженность Турции. Может в этом проблема?

А вот данные: https://drive.google.com/open?id=16cy7CJFrxQCTLhx-hXDNHJz8ej3vTEED

1 Ответ

0 голосов
/ 30 апреля 2019

Возможно, это сработает, если вы сделаете так:

iso <- raster("iso.tif")
viirs <- raster("viirs.tif")
s <- stack(log(viirs), iso)
names(s) <- c("x", "c")

predicted <- raster::predict(s, model=m)

Это не сработает, если значения в df $ iso и iso.tif не совпадают (один фактор, а другой числовой?). Пожалуйста, настройте небольшой пример с кодом ...

...