glmmTMB_phylo: Error in Matrix::rankMatrix(TMBStruc$data.tmb[[whichX]]) : length(d <- dim(x)) == 2 is not TRUE

192 views Asked by At

I am trying to run the following model:

mod1<- phylo_glmmTMB(response ~ sv1 + # sampling variables
sv2 + sv3 + sv4 + sv5 + 
sv6 + sv7 +  
(1|phylo) + (1|reference_id), #random effects
ziformula = ~ 0,
#ar1(pos + 0| group) # spatial autocorrelation structure; group is a dummy variable
phyloZ = supertreenew,
phylonm = "phylo",
family = "binomial",
data = data)
              

But I keep getting the error:

Error in Matrix::rankMatrix(TMBStruc$data.tmb[[whichX]]) : 
length(d <- dim(x)) == 2 is not TRUE

This error is also occurring with other reproducible example (data) that I found.

Before I run the model, I just loaded my data (data and supertree) and computed a Z matrix from supertree:

#Compute Z matrix
#supertreenew <- vcv.phylo(supertreenew) 
#or
supertreenew <- phylo.to.Z(supertreenew)
#enforced match between
supertreenew <- supertreenew[levels(factor(data$phylo)), ]

I have installed the development version via:

remotes::install_github("wzmli/phyloglmm/pkg") 

But no success.

The dimension of my supertree are:

[[1]] ... [351]
[[2]] ... [645]

Any guess?

My session info:

R version 4.2.2 (2022-10-31 ucrt) Platform: x86_64-w64-mingw32/x64 (64-bit) Running under: Windows 10 x64 (build 22621) Matrix products: default attached base packages: [1] stats graphics grDevices utils datasets methods base
other attached packages: [1] phyloglmm_0.1.0.9001 brms_2.18.0 cpp_1.0.9 performance_0.10. DHARMa_0.4.6
[6] phytools_1.2-0 maps_3.4.0 ape_5.6-2 lme4_1.1-31 Matrix_1.5-1
[11] TMB_1.9.1 glmmTMB_1.1.5.9000 remotes_2.4.2

1

There are 1 answers

6
Ben Bolker On BEST ANSWER
  • (First error, "Error in Matrix::rankMatrix") This is a consequence of the addition of a check of the rank of the fixed-effects matrix in recent versions of glmmTMB. For now, adding
control = glmmTMB::glmmTMBControl(rank_check = "skip")

to your phylo_glmmTMB call should work around the problem.

  • (Second error, "Error in getParameterOrder(data, parameters, new.env(), DLL = DLL) ...") I just updated the refactor branch to handle this problem [caused by internal changes in glmmTMB]. Use remotes::install_github("wzmli/phyloglmm/pkg@refactor") to install this version, then try your example again.