[R-sig-ME] problem running mixed model including a phylogeny suggested in vignette "Covariance structure"

Pablo Inchausti p@b|o@|nch@u@t|@| @end|ng |rom gm@||@com
Thu Mar 20 13:45:16 CET 2025


Hi,
First, thanks again for your quick response.
I have sorted the dataframe carnidat to match the order of  rows and
columns of species names of the var-covar matrix obtained from the
phylogeny. Nevertheless, there is still a problem that I cannot solve.
--------------------------------
For completeness, I recopy the entire set of commands that I have used.

data(carni70)  #loads the data
carnidat <- data.frame(species = rownames(carni70$tab), carni70$tab) #
generate the data frame
phylo <- read.tree(text=carni70$tre)  # the phylogeny
A <- vcv(phylo) # var-covar matrix from the phylogeny

# verifies if names of species are the same in rows of var-covar
phylogenetic matrix and in the data frame
setdiff(carnidat$species, rownames(A))
carnidat$species=gsub("_", ".", carnidat$species) # corrects all species
names
setdiff(colnames(A), rownames(A)) # final check
setdiff(carnidat$species, rownames(A))  # another final check
row.names(carnidat)=NULL # deletes the row names from the data frame

# checks that the order of levels in carnidat$Species is the same as in
rows and columns of  var-covar matrix from phylogeny
carnidat=carnidat[match(carnidat$species, rownames(A)),] # sorts the
dataframe in the order given by species from the var-covar matrix

> row.names(A)==carnidat$species [1] TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE
[22] TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE
TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE
[43] TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE
TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE
[64] TRUE TRUE TRUE TRUE TRUE TRUE TRUE

carnidat$dummy <- factor(1) # a dummy grouping variable must be added to
the dataset

I show just a few species names in the data frame and in the var-covar
matrix A:

> rownames(A) [1] "Puma.concolor"            "Herpailurus.yaguaroundi"  "Leopardus.wiedii"
 [4] "Leopardus.pardalis"       "Oreailurus.jacobita"
"Oncifelis.colocolo"
 [7] "Oncifelis.guigna"         "Oncifelis.geoffroyi"
"Leopardus.tigrinus"
[10] "Lynx.rufus"               "Lynx.canadensis"          "Panthera.onca"


> carnidat$species [1] "Puma.concolor"            "Herpailurus.yaguaroundi"  "Leopardus.wiedii"
 [4] "Leopardus.pardalis"       "Oreailurus.jacobita"
"Oncifelis.colocolo"
 [7] "Oncifelis.guigna"         "Oncifelis.geoffroyi"
"Leopardus.tigrinus"
[10] "Lynx.rufus"               "Lynx.canadensis"
"Panthera.onca"


When fitting the model, I obtained the same error message as before:

> fit_phylo <- glmmTMB(log(range) ~ log(size) + propto(0 + species | dummy, A),data = carnidat)Error: column or row names of the matrix do not match the terms. Expecting names:‘speciesAtelocynus.microtis’‘speciesBassariscus.alleni’‘speciesBassariscus.astutus’‘speciesBassariscus.beddardi’‘speciesBassariscus.gabbii’‘speciesB

(the error message is longer but you can get the idea)
------------------

Again, any suggestion would be appreciated.
Cheers

Pablo


On Mon, 17 Mar 2025 at 11:47, Ben Bolker <bbolker using gmail.com> wrote:

>   The short answer is that the *values* of the names are OK, but the
> *order* is wrong (setdiff() only checks that the values are
> equivalent, not the order).  I will try to add some better
> tests/diagnostics to the code.
>
> On Thu, Mar 13, 2025 at 12:10 PM Pablo Inchausti
> <pablo.inchausti.f using gmail.com> wrote:
> >
> > Hi,
> > I have been trying to run the mixed model incorporating a phylogeny that
> is
> > suggested in
> > https://cran.r-project.org/web/packages/glmmTMB/vignettes/covstruct.html
> > (section Proptional). I have encountered errors that I cannot resolve and
> > hence this post.
> >
> > This is what I did:
> > require(ade4); require(ape); require(glmmTMB)
> >
> > data(carni70) # loads the data
> >
> > carnidat <- data.frame(species = rownames(carni70$tab), carni70$tab)
> >
> > phylo <- read.tree(text=carni70$tre) # reads the phylogeny
> >
> > A <- vcv(phylo) # uses package ape to calculate the var-covar matrix from
> > the phylogeny
> >
> > # verifies whether the species names of  rows and columns of var-covar
> > phylogenetic matrix are the same as those in the dataframe
> >
> > setdiff(carnidat$species, rownames(A)) # No!. I then correct them.
> >
> > carnidat$species=gsub("_", ".", carnidat$species) # corrects all species
> > names
> >
> > setdiff(colnames(A), rownames(A)) # final check. All is fine.
> >
> > setdiff(carnidat$species, rownames(A)) # another final check. All is
> fine.
> >
> > carnidat$dummy <- factor(1) # a dummy grouping variable must be added to
> > the dataset
> >
> > Then I ran the model:
> >
> > fit_phylo=glmmTMB(log(range)~log(size)+propto(0+species|dummy, A),
> > data= carnidat)
> >
> > And I obtain the following error message:
> >
> > Error: column or row names of the matrix do not match the terms.
> > Expecting names:
> > ‘speciesAtelocynus.microtis’‘speciesBassariscus.alleni’‘
> > speciesBassariscus.astutus’‘
> >
> speciesBassariscus.beddardi’‘speciesBassariscus.gabbii’‘speciesBassariscus.lasius’‘speciesBassariscus.pauli’‘
> >
> speciesBassariscus.sumichrasti’‘speciesCanis.latrans’‘speciesCanis.lupus’‘speciesCerdocyon.
> >
> > (This is much longer, but one can get the idea)
> >
> > Just in case, the same model does run using the package brms.
> >
> > I would appreciate very much any suggestion that you might have.
> > Thanks in advance.
> > Cheers
> > Pablo
> >
> > > sessionInfo()R version 4.4.3 (2025-02-28)
> > Platform: x86_64-pc-linux-gnu
> > Running under: Ubuntu 22.04.5 LTS
> >
> >
> > Attached base packages:
> >
> > [1] stats     graphics  grDevices utils     datasets  methods   base
> >
> > other attached packages:
> > [1] glmmTMB_1.1.10 ape_5.8
> >
> > loaded via a namespace (and not attached):
> >  [1] nlme_3.1-166        TH.data_1.1-2       estimability_1.5.1
> > reformulas_0.3.0    xtable_1.8-4
> >  [6] minqa_1.2.8         zoo_1.8-12          TMB_1.9.15
> > lme4_1.1-35.5       grid_4.4.3
> > [11] MASS_7.3-61         mvtnorm_1.3-1       numDeriv_2016.8-1.1
> > compiler_4.4.3      multcomp_1.4-26
> > [16] codetools_0.2-20    sandwich_3.1-1      emmeans_1.10.5
> > coda_0.19-4.1       Rcpp_1.0.13
> > [21] mgcv_1.9-1          rstudioapi_0.16.0   lattice_0.22-6
> > digest_0.6.37       nloptr_2.1.1
> > [26] Rdpack_2.6.1        parallel_4.4.3      splines_4.4.3
> > rbibutils_2.3       Matrix_1.7-0
> > [31] tools_4.4.3         boot_1.3-31         survival_3.7-0
> >
> >
> > >
> >
> > --
> > *Pablo Inchausti*
> > Profesor de Ecología
> > Centro Universitario Regional del Este
> > Universidad de la República,
> > Avenida Cachimba del Rey
> > Maldonado, Departamento de Maldonado CP 20100
> > Uruguay
> > *Phone*: +598.42.25.53.26 interno 602
> >
> > *Website*: https://sites.google.com/view/pablo-inchausti/iniciostart
> > <https://sites.google.com/view/pablo-inchausti//iniciostart>
> >
> > *Book/Libro Statistical Modeling with R websites: *
> >
> > *https://sites.google.com/view/statistical-modeling-with-r/home
> > <https://sites.google.com/view/statistical-modeling-with-r/home>*
> > *https://global.oup.com/booksites/content/9780192859013/
> > <https://global.oup.com/booksites/content/9780192859013/>*
> >
> > *Canal YouTube* Pablo Inchausti Estadistica: @PabloIEstadistica
> > https://www.youtube.com/channel/UCKCknL2o8rzr7uumT-GDi7Q/a
> >
> >         [[alternative HTML version deleted]]
> >
> > _______________________________________________
> > R-sig-mixed-models using r-project.org mailing list
> > https://stat.ethz.ch/mailman/listinfo/r-sig-mixed-models
>


-- 
*Pablo Inchausti*
Profesor de Ecología
Centro Universitario Regional del Este
Universidad de la República,
Avenida Cachimba del Rey
Maldonado, Departamento de Maldonado CP 20100
Uruguay
*Phone*: +598.42.25.53.26 interno 602

*Website*: https://sites.google.com/view/pablo-inchausti/iniciostart
<https://sites.google.com/view/pablo-inchausti//iniciostart>

*Book/Libro Statistical Modeling with R websites: *

*https://sites.google.com/view/statistical-modeling-with-r/home
<https://sites.google.com/view/statistical-modeling-with-r/home>*
*https://global.oup.com/booksites/content/9780192859013/
<https://global.oup.com/booksites/content/9780192859013/>*

*Canal YouTube* Pablo Inchausti Estadistica: @PabloIEstadistica
https://www.youtube.com/channel/UCKCknL2o8rzr7uumT-GDi7Q/a

	[[alternative HTML version deleted]]



More information about the R-sig-mixed-models mailing list