【发布时间】:2021-04-23 11:20:44
【问题描述】:
我尝试使用包DHARMa 为glmmTMB 模型生成诊断图,但没有成功。 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 不是最理想的,可以改进)。
我正在使用:
-
glmmTMB1.0.2.9000 版从 github 全新安装; -
DHARMa0.4.1 版; -
R3.6.3 版; - MacOS Sierra 版本 10.12.6。
有人遇到过同样的问题吗?有人知道怎么解决吗?
编辑:我的问题最初是关于包 performance 和 DHARMa 如何处理 glmmTMB 对象。为了集中和清晰起见,我删除了对包performance 的引用,从而使这个问题特定于glmmTMB 和DHARMa。
【问题讨论】:
-
这是在 clean R 会话中吗?示例 1 在
DHARMa0.4.1、develglmmTMB对我来说工作正常(我可能没有安装 master 分支;我会再试一次,但如果这有什么不同我会感到惊讶)。我有 R (4.1.0+) 的开发版本,但如果这很重要,我会再次感到惊讶。最好的猜测是您在环境中定义了一个变量,在评估过程中会以某种方式混淆DHARMa。 -
...当我尝试运行
performance::check_model(unicorns_glmmTMB)时,我得到“没有适用于 '影响' 的方法应用于 'glmmTMB' 类的对象” -
我重新启动了 R,确保用
rm(list=ls())擦除它的内存,并加载了glmmTMB、DHARMa和performance。运行上面的代码后,我仍然得到同样神秘的Error in on.exit(add = TRUE, { : invalid 'add' argument。然后我重复了该过程,但确保加载了小插图开头列出的所有包并且结果相同。 -
好的,我至少可以看到问题出在哪里(并且是最近的问题)。相关代码在这里:github.com/glmmTMB/glmmTMB/blob/master/glmmTMB/R/…。如果您恢复到
glmmTMB的 CRAN 版本,您能否确认问题会消失? -
@BenBolker 我确认当使用 CRAN DHARMa 0.4.1 中的 glmmTMB 1.0.2.1 处理 glmmTMB 模型时没有问题,
Error in on.exit(add = TRUE, { : invalid 'add' argument消失了。相反,会出现一个不相关的错误(重新):Error in .Call("FreeADFunObject", ptr, PACKAGE = DLL) : "FreeADFunObject" not available for .Call() for package "glmmTMB"这仅仅是因为 github 问题 #615 (github.com/glmmTMB/glmmTMB/issues/615) 已在 glmmTMB 1.0.2.9000 上得到解决,但尚未在 glmmTMB 1.0.2.1 上得到解决。
标签: r diagnostics glmmtmb