Bezdepbonusu7Программирование: статьи и ответы

Вопрос

Прогнозирование отрицательной биномиальной модели для растра со смещением

Автор вопроса: Holly CopelandОтветов: 1

Я пытаюсь предсказать отрицательную биномиальную модель для стека растров, используя функцию predict в пакете raster. Мне нужно включить смещение, чтобы нормализовать мою переменную счетчика. Я безуспешно пытался заставить это работать, используя метод, в котором член смещения включен в модель следующим образом:

condor.glm <- glm.nb(y_count ~ logsafefood + logpigharvest +
                       logintdist + houseden + pubforest + pubrange +
                       privforest + privrange + offset(log(offset)),
                     data=merge.Hex, control=glm.control(maxit=1000))

predict(rasStack2, condor.glm, filename="cencal_predictlow_model15.img",
        overwrite=TRUE, type="response", progress="text",na.rm=TRUE)

R выдает эту ошибку:

Error in log(offset) : non-numeric argument to mathematical function

Если вместо этого я передам offset в качестве аргумента:

condor.glm <- glm.nb(y_count ~ logsafefood + logpigharvest +
                       logintdist + houseden + pubforest + pubrange +
                       privforest + privrange,
                     offset=log(offset),
                     data=merge.Hex, control=glm.control(maxit=1000))

predict(rasStack2, condor.glm, filename="cencal_predictlow_model15.img",
        overwrite=TRUE, type="response", progress="text",na.rm=TRUE)

R создает поверхности прогноза, но все значения равны.

Есть предложения, как это сделать правильно?

  • Добро пожаловать в SO. У вас есть воспроизводимый пример для вашего вопроса? Richard Erickson 26.02.2016
  • Включите в свой вопрос несколько примеров данных, чтобы вам было проще помочь. Кроме того, чем более минималистичен пример, тем лучше. Используйте только столбцы, необходимые для воспроизведения проблемы. MrFlick 27.02.2016
  • Что это возвращает: str(offset)? IRTFM 27.02.2016
  • ›Str (merge.Hex $ offset) num [1: 287] 1807 1807 1807 1807 1807 ... Holly Copeland 28.02.2016
  • Вот копия моих образцов данных для модели ввода: Holly Copeland 28.02.2016
  • Я совершенно уверен, что источником ошибки является stats :: predic.glm, а не raster :: pred. Не могли бы вы проверить это, сделав обратный прогноз для матрицы x, используемой в модели? При использовании растрового прогнозирования вы вызываете две функции прогнозирования. Растровое предсказание - это оболочка для любой модели, которую вы ему передаете. Из-за этого вы должны убедиться, что ваш вызов прогноза для модели работает, прежде чем вызывать raster :: pred. В этом случае отредактируйте свой ответ, чтобы удалить растровую часть, так как она сводит к нулю проблему. Кстати, уникальна ли. Jeffrey Evans 29.02.2016

rpredictraster

Ответы

Ответ 1 · рейтинг 1 · Jeffrey Evans

Проблема не связана с функцией raster :: Forecast, а скорее с вашими данными. Если вы вернетесь к предсказанию данных, вы увидите, что это приводит к единообразным значениям.

Проблема в том, что у вас есть столбец "смещение", названный так же, как функция "stats :: offset". Если вы просто переименуете столбец "смещение", вызов модели будет работать как для вашего синтаксиса + log(offsets), так и offset = log(offsets).

Чтобы функция raster :: pred работал, вам нужно будет либо возиться с аргументом "const", либо создать постоянный растр, который можно добавить в ваш стек растров, с постоянным значением log (1807), который будет самый простой подход.

Перевод вопроса и ответов сообщества Stack Overflow, лицензия CC BY-SA. Оригинал на Stack Overflow.

Похожие материалы