使用 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 的示例对我来说毫无怨言(虽然我不知道是否正确)
我在 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 的示例对我来说毫无怨言(虽然我不知道是否正确)