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

Я пытаюсь предсказать отрицательную биномиальную модель для стека растров, используя функцию 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 создает поверхности прогноза, но все значения равны.

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


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


Ответы (1)


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

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

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

person Jeffrey Evans    schedule 08.03.2016