簡體   English   中英

使用newdata進行零膨脹GAM預測

[英]zero-inflated GAM prediction with newdata

在零膨脹的GAM( ziplss )中,當1)我使用新數據並且2)計數部分具有ziplss零膨脹部分中的分類變量時,我得到警告。 對於零通貨膨脹部分中未表示的每個分類變量都有警告。

這是一個可重現的示例:

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變量的對比,但這僅在為模型的零通脹部分建立模型矩陣時才會發生。 計數部分正確使用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"

已經顯示出一些冗余。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM