我正在尝试使用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创建预测曲面,但值都相等。
有关如何正确执行此操作的任何建议吗?
答案 0 :(得分:1)
问题与raster :: predict函数无关,而是与您的数据有关。如果您回溯预测数据,您将看到它会产生统一的值。
问题是你有一个列&#34;偏移&#34;命名与函数&#34; stats :: offset相同。如果您只是重命名&#34;偏移&#34;列调整您的语法+ log(offsets)
或offset = log(offsets)
的模型调用。
要使raster :: predict函数正常工作,您将不得不摆弄“const”参数或创建一个常量栅格,可以添加到栅格堆栈中,使用统一的log值(1807),这将是最简单的方法。