首页 > 解决方案 > 无法使用包 DHARMa 生成 glmmTMB 诊断图

问题描述

我试图为glmmTMB使用包的模型制作诊断图,DHARMa但没有成功。此小插图中的示例 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对象。为了重点和清晰起见,我删除了对 package 的引用performance,从而使这个问题特定于glmmTMBand DHARMa

标签: rdiagnosticsglmmtmb

解决方案


看起来这是R <= 4.0.1 中存在的错误。从版本 4.0.2的R NEWS 文件中:

on.exit() 现在可以正确匹配命名参数,这要归功于 Brodie Gaslam 的 PR#17815(包括补丁)。

我试图修复 glmmTMB 代码,以便它可以解决该错误。

你可以试试

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

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


推荐阅读