【问题标题】:predict with glmer where new data is a Raster Stack of fixed efefcts使用 lmer 进行预测,其中新数据是固定效果的栅格堆栈
【发布时间】:2015-06-14 12:09:49
【问题描述】:

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

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

如您所见,我有一些随机效果,但空间层没有这些效果 - 例如“年份”。因此,当您没有随机效应数据随机效应层时,问题实际上是在 rasterStacks 上预测 glmer。如果我在不添加随机效果的情况下直接使用它,我会收到错误消息。

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

【问题讨论】:

  • predict.merMod 接受一个数据框并返回一个向量。你能举一个可重现的例子吗?我对rasterStacks 不是很熟悉;也许其他人可以告诉你如何来回转换。
  • PS:你使用glmer而不是lmer的任何特殊原因(因为你没有family参数,所有最新版本的glmer都应该给你一个警告)
  • 您可以使用 as.data.frame 隐藏 RasterStack,但这对于非常大的栅格数据集可能不是一个好方法。在这种情况下,使用raster::predict 会更好(但有时会更复杂)(请参阅下面的答案)

标签: r raster glm lme4


【解决方案1】:

您的问题非常简短,并没有说明您遇到了什么问题(如果有的话)。这似乎“开箱即用”,但可能不适用于您的情况。有关选项,请参阅?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)))

【讨论】:

  • 我已经更新了我的问题。当您没有随机效应层时,问题是使用预测随机效应模型
【解决方案2】:

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

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

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

【讨论】:

  • 两个答案都适用于我的数据,正是我想要的。我想接下来会出现一个问题,即在预测中不包括随机效应是否会显着影响结果图/预测。我知道这可能是一个不同的问题..但会感谢您的想法...无论多么简短
  • 如果一个人只想使用两种随机效应中的一种..例如,在我的情况下,如果在预测中我想使用“生态区域”随机效应而不是“年份”,我将如何配置re.form 参数?
  • 我已经尝试过了,但 re.form = ~ ecoregion 不起作用,而 re.form = (~1|ecoregion) 起作用。但是,我在glmer 中的随机效果配置是这样的……(0+x1|ecoregion) + (1 | Ecoregion)。关于你将如何表示的任何 odea [在“预测”中表示这一点..考虑到“生态区域”中的水平是因素
  • 你说得对,我应该说~1|ecoregion。如果您使用re.form=NULL(它的默认设置),则您将使用所有随机效果。 (如果您有比这更详细的问题,您可能想发布一个新问题......)
  • re.form=NULL 会起作用,就像上面在这种特殊情况下解释的那样,我只想使用两个随机效果中的一个..两者的构造都如上所述..在这种情况下我想要使用“生态区”随机效应而不是“年份”..
猜你喜欢
  • 2017-12-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-10-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多