使用 lmer 预测新数据是固定效应的栅格堆栈

predict with glmer where new data is a Raster Stack of fixed efefcts

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

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

如您所见,我有空间层没有的随机效果 - 例如 'year'。因此,当您没有随机效应数据随机效应层时,问题实际上是在 rasterStacks 上预测 glmer。如果我开箱即用而不添加随机效果,我会收到错误消息。

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

你的问题很简短,没有说明你遇到了什么麻烦。这似乎有效 'out of the box',但可能不适用于您的情况。有关选项,请参阅 ?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)))

如果您没有随机效应,只需在 predict 调用中使用 re.form=~0 来预测总体水平:

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

使用@RobertH 的示例对我来说毫无怨言(虽然我不知道是否正确)