首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >基于新数据的零膨胀GAM预测

基于新数据的零膨胀GAM预测
EN

Stack Overflow用户
提问于 2018-10-28 18:14:16
回答 1查看 311关注 0票数 1

在零膨胀的GAM (ziplss)中,当我使用新的数据和2)计数部分有不属于零通货膨胀部分的分类变量时,我得到了一个警告。对于零通胀部分中没有表示的每一个范畴变量都有一个警告。

下面是一个可重复的例子:

代码语言:javascript
复制
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")

我在任何地方都没有见过这种情况,这很奇怪,并告诉我,我可能做错了什么(否则,这将在搜索结果中得到)。会很感激你的洞见。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-11-02 16:45:52

我认为这只是实施过程中的一种违法行为。我所看到的警告是:

代码语言:javascript
复制
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变量的对比,但只有在为模型的零通胀部分构建模型矩阵时才会发生这种情况。计数部分正确地使用mined变量和正确的对比。

您可能会说,如果$contrasts是一个列表,那么每个线性预测器中的一个将是一个更好的设计,然后使用以下方法创建模型矩阵:

代码语言:javascript
复制
model.matrix.default(Terms[[i]], mf, contrasts = object$contrasts[[i]])

但我不知道这是否会破坏mgcv中的其他一切。

目前,该模型的$contrasts只是:

代码语言:javascript
复制
> zipgam$contrasts
$spp
[1] "contr.treatment"

$mined
[1] "contr.treatment"

$spp
[1] "contr.treatment"

已经显示了一些冗余。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53034669

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档