使用新数据进行零膨胀 GAM 预测
zero-inflated GAM prediction with newdata
在零膨胀的 GAM (ziplss
) 中,当 1) 我使用新数据和 2) 计数部分具有不在零 inflation 部分。对于未在零 inflation 部分中表示的每个分类变量都有一个警告。
这是一个可重现的例子:
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")
我在任何地方都没有看到这个,这很奇怪,告诉我我可能做错了什么(否则这将在搜索结果中可用)。将不胜感激。
我认为这只是实现中的一个不恰当之处。我看到的警告是:
Warning message:
In model.matrix.default(Terms[[i]], mf, contrasts = object$contrasts) :
variable 'mined' is absent, its contrast will be ignored
这是无害的(至少在这种情况下;我没有检查其他情况)并且是因为只有一个object$contrasts
而生成的,并且它包含有关 mined
的详细信息,但此变量不存在于第二个线性预测变量中,因此 R 警告它将忽略 mined
变量的对比,但这仅在为模型的零 inflation 部分。计数部分正确使用 mined
变量和正确的对比。
您可能会争辩说,让 $contrasts
成为一个列表,每个线性预测变量一个将是一个更好的设计,然后将使用以下方法创建模型矩阵:
model.matrix.default(Terms[[i]], mf, contrasts = object$contrasts[[i]])
但我不知道这是否会破坏 mgcv.
中的其他所有内容
目前 $contrasts
此模型只是:
> zipgam$contrasts
$spp
[1] "contr.treatment"
$mined
[1] "contr.treatment"
$spp
[1] "contr.treatment"
这已经显示出一些冗余。
在零膨胀的 GAM (ziplss
) 中,当 1) 我使用新数据和 2) 计数部分具有不在零 inflation 部分。对于未在零 inflation 部分中表示的每个分类变量都有一个警告。
这是一个可重现的例子:
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")
我在任何地方都没有看到这个,这很奇怪,告诉我我可能做错了什么(否则这将在搜索结果中可用)。将不胜感激。
我认为这只是实现中的一个不恰当之处。我看到的警告是:
Warning message:
In model.matrix.default(Terms[[i]], mf, contrasts = object$contrasts) :
variable 'mined' is absent, its contrast will be ignored
这是无害的(至少在这种情况下;我没有检查其他情况)并且是因为只有一个object$contrasts
而生成的,并且它包含有关 mined
的详细信息,但此变量不存在于第二个线性预测变量中,因此 R 警告它将忽略 mined
变量的对比,但这仅在为模型的零 inflation 部分。计数部分正确使用 mined
变量和正确的对比。
您可能会争辩说,让 $contrasts
成为一个列表,每个线性预测变量一个将是一个更好的设计,然后将使用以下方法创建模型矩阵:
model.matrix.default(Terms[[i]], mf, contrasts = object$contrasts[[i]])
但我不知道这是否会破坏 mgcv.
中的其他所有内容目前 $contrasts
此模型只是:
> zipgam$contrasts
$spp
[1] "contr.treatment"
$mined
[1] "contr.treatment"
$spp
[1] "contr.treatment"
这已经显示出一些冗余。