【问题标题】:Failing to produce glmmTMB diagnostics plots with package DHARMa无法使用包 DHARMa 生成 glmmTMB 诊断图
【发布时间】:2021-04-23 11:20:44
【问题描述】:

我尝试使用包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 不是最理想的,可以改进)。

我正在使用:

  • glmmTMB 1.0.2.9000 版从 github 全新安装;
  • DHARMa 0.4.1 版;
  • R 3.6.3 版;
  • MacOS Sierra 版本 10.12.6。

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


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

【问题讨论】:

  • 这是在 clean R 会话中吗?示例 1 在 DHARMa 0.4.1、devel glmmTMB 对我来说工作正常(我可能没有安装 master 分支;我会再试一次,但如果这有什么不同我会感到惊讶)。我有 R (4.1.0+) 的开发版本,但如果这很重要,我会再次感到惊讶。最好的猜测是您在环境中定义了一个变量,在评估过程中会以某种方式混淆DHARMa
  • ...当我尝试运行 performance::check_model(unicorns_glmmTMB) 时,我得到“没有适用于 '影响' 的方法应用于 'glmmTMB' 类的对象”
  • 我重新启动了 R,确保用rm(list=ls()) 擦除它的内存,并加载了glmmTMBDHARMaperformance。运行上面的代码后,我仍然得到同样神秘的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


【解决方案1】:

看起来这是 R bug。来自R NEWS file 4.0.2 版:

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

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

你可以试试

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

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

【讨论】:

  • ...或者我可能只是更新 R :-) 早期 R 4 版本的 gremlins 让我望而却步,但我想它们现在都已经解决了。感谢您研究它,我无法理解它。
  • remotes::install_github 不起作用(可能与私有包的问题有关)但 devtools::install_github 起作用了,所以我能够在 R 3.6 上使用 DHARMa 0.4.1 测试 glmmTMB@on_exit_order .3.它就像一个魅力。没有错误,没有警告,只是纯粹的图形幸福。谢谢!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-05-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多