无法使用包 DHARMa 生成 glmmTMB 诊断图

Failing to produce glmmTMB diagnostics plots with package DHARMa

我尝试使用包 DHARMaglmmTMB 模型生成诊断图,但没有成功。 vignette 中的示例 1.1 给出:

owls_nb1 <- glmmTMB(SiblingNegotiation ~ FoodTreatment*SexParent +
                         (1|Nest)+offset(log(BroodSize)),
                         contrasts=list(FoodTreatment="contr.sum",
                         SexParent="contr.sum"),
                         family = nbinom1,
                         zi = ~1,
                         data=Owls)
plot(owls_nb1_simres <- simulateResiduals(owls_nb1) )

# Error in on.exit(add = TRUE, { : invalid 'add' argument

同样的情况发生在:

if (!require(RCurl)) install.packages('RCurl'); library(RCurl)
unicorns <- read.csv(text= RCurl::getURL("https://raw.githubusercontent.com/marcoplebani85/datasets/master/unicorns.csv")) 
# simulated data, obviously
unicorns_glmmTMB <- glmmTMB(Herd_size_n ~ food.quantity
                        + (1 + food.quantity | Locality)
                        + (1 + food.quantity | Year_Month),
                        family="poisson",
                        data=unicorns)

plot(simulateResiduals(unicorns_glmmTMB))
# Error in on.exit(add = TRUE, { : invalid 'add' argument

如果我运行同型号lme4::glmer:

unicorns_glmer <- glmer(Herd_size_n ~ food.quantity
                        + (1 + food.quantity | Locality)
                        + (1 + food.quantity | Year_Month),
                        family="poisson",
                        data=unicorns)

...并将其“喂”给:

plot(simulateResiduals(unicorns_glmer))

我获得了没有问题的诊断图(顺便说一句,我知道模型 unicorns_glmer 不是最优的,可以改进)。

我正在使用:

有没有人遇到过同样的问题?有人知道怎么解决吗?


编辑: 我的问题最初是关于包 performanceDHARMa 如何处理 glmmTMB 对象。为了重点和清晰起见,我删除了对包 performance 的引用,从而使这个问题特定于 glmmTMBDHARMa

看起来这是一个 bug that was present in R <= 4.0.1. From the R NEWS file 版本 4.0.2:

on.exit() now correctly matches named arguments, thanks to PR#17815 (including patch) by Brodie Gaslam.

我已尝试修复 glmmTMB 代码以解决该错误。

你可以试试

remotes::install_github("glmmTMB/glmmTMB/glmmTMB@on_exit_order")

看看是否有帮助(如果没有出错,这个分支应该很快合并到 master 中......)