用glmer预测新数据是固定效果的光栅堆栈

时间:2015-06-14 12:09:49

标签: r raster glm lme4

我在glmer中构建了模型,并希望在代表模型中固定效果的rasterStack上预测这些模型。我的glmer模型采用以下形式:

m1<-glmer(Severity ~ x1 + x2 + x3 + (1 | Year) + (1 | Ecoregion), family=binomial( logit ))

正如你所看到的,我有随机效果,我没有作为空间层 - 例如&#39;年&#39;。因此,当您没有随机效果数据随机效果图层时,问题实际上是预测glmer rasterStacks。如果我在没有添加随机效果的情况下使用它,我会收到错误。

 m1.predict=predict(object=all.var, model=m1, type='response',  progress="text", format="GTiff") 
Error in predict.averaging(model, blockvals, ...) :       

2 个答案:

答案 0 :(得分:2)

您的问题非常简短,并未说明您遇到的问题(如果有)。这看似开箱即用,但可能不适用于你的情况。有关选项,请参阅?raster::predict

library(raster)   
# example data. See ?raster::predict
logo <- brick(system.file("external/rlogo.grd", package="raster"))
p <- matrix(c(48, 48, 48, 53, 50, 46, 54, 70, 84, 85, 74, 84, 95, 85, 
   66, 42, 26, 4, 19, 17, 7, 14, 26, 29, 39, 45, 51, 56, 46, 38, 31, 
   22, 34, 60, 70, 73, 63, 46, 43, 28), ncol=2)
a <- matrix(c(22, 33, 64, 85, 92, 94, 59, 27, 30, 64, 60, 33, 31, 9,
   99, 67, 15, 5, 4, 30, 8, 37, 42, 27, 19, 69, 60, 73, 3, 5, 21,
   37, 52, 70, 74, 9, 13, 4, 17, 47), ncol=2)
xy <- rbind(cbind(1, p), cbind(0, a))
v <- data.frame(cbind(pa=xy[,1], extract(logo, xy[,2:3])))
v$Year <- sample(2000:2001, nrow(v), replace=TRUE) 


library(lme4)
m <- lmer(pa ~ red + blue + (1 | Year), data=v)

# here adding Year as a constant, as it is not a variable (RasterLayer) in the RasterStack object
x <- predict(logo, m, const=(data.frame(Year=2000)))

答案 1 :(得分:1)

如果您没有随机效果,只需在re.form=~0来电中使用predict来预测人口级别:

x <- predict(logo, m, re.form=~0) 

在没有投诉的情况下使用@ RobertH的例子(虽然我不知道是否正确)