Search code examples
rdiagnosticsglmmtmb

Failing to produce glmmTMB diagnostics plots with package DHARMa


I have tried to produce diagnostics plots for glmmTMB models using package DHARMa without success. Example 1.1 in this vignette gives:

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

The same happens with:

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

If I run the same model in lme4::glmer:

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

...and "feed" it to:

plot(simulateResiduals(unicorns_glmer))

I obtain diagnostics plots without issues (by the way I am aware that model unicorns_glmer is suboptimal and can be improved).

I'm using:

  • glmmTMB version 1.0.2.9000 freshly installed from github;
  • DHARMa version 0.4.1;
  • R version 3.6.3;
  • MacOS Sierra version 10.12.6.

Has anyone encountered the same problem? Does anyone know how to solve it?


EDIT: my question was originally on how packages performance and DHARMa handle glmmTMB objects. For the sake of focus and clarity I removed the references to package performance, thus making this question specific to glmmTMB and DHARMa.


Solution

  • It looks like this is a bug that was present in R <= 4.0.1. From the R NEWS file for version 4.0.2:

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

    I have attempted to fix the glmmTMB code so it works around the bug.

    You could try

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

    and see if that helps (provided nothing goes wrong, this branch should be merged into master shortly ...)