使用newdata进行零膨胀GAM预测

时间:2018-10-28 18:14:17

标签: r predict gam

在零充气GAM(ziplss)中,当1)我使用新数据并且2)计数部分具有不在零充气部分中的分类变量时,我得到警告。对于零通货膨胀部分中未表示的每个分类变量,都有警告。

这是一个可重复的示例:

library(mgcv)
library(glmmTMB)
data(Salamanders)   
Salamanders$x <- rnorm(nrow(Salamanders), 0, 10)

zipgam <- gam(list(count ~ spp * mined + s(x) + s(site, bs = "re"),
                ~ spp),
           data = Salamanders, family = ziplss, method = "REML")

preds.response <- data.frame(Predict = predict(zipgam, type = "response"))

nd <- data.frame(x = 0, spp = "GP", mined = "yes", site = Salamanders$site[1])      
nd$pred <- predict(zipgam, newdata = nd, exclude="site")

我在任何地方都没有提到此内容,这很奇怪,告诉我我可能做错了什么(否则,它将在搜索结果中显示)。不胜感激。

1 个答案:

答案 0 :(得分:2)

我认为这只是实施过程中的一个小问题。我看到的警告是:

Warning message:
In model.matrix.default(Terms[[i]], mf, contrasts = object$contrasts) :
  variable 'mined' is absent, its contrast will be ignored

这是无害(至少在这种情况下;我没有检查其他情况),并且由于仅存在一个object$contrasts而产生,并且其中包含有关{{ 1}},但第二个线性预测变量中不存在此变量,因此R警告它将忽略mined变量的对比度,但这仅在为零膨胀部分的模型矩阵建立时才会发生该模型。计数部分正确使用mined变量和正确的对比度。

您可能会争辩说,以mined作为列表,每个线性预测变量一个将是更好的设计,然后使用以下方法创建模型矩阵:

$contrasts

但是我不知道这是否会破坏 mgcv 中的所有其他内容。

此模型的当前model.matrix.default(Terms[[i]], mf, contrasts = object$contrasts[[i]]) 只是:

$contrasts

已经显示出一些冗余。