[R-meta] multi-level, multiple timepoint model

Marianne DEBUE m@r|@nne@debue @end|ng |rom mnhn@|r
Fri Feb 19 10:02:29 CET 2021

Dear Wolfgang,

Thank you for your answer and ideas.

I tried some of your propositions and obtained sometimes quite different results from my first model so I will have to think about it.
But something like random = list(~ Timepoint | Species, ~ 1 | ID_study), struct="CAR" seems to be a good compromise to take into account the spatial correlation and temporal correlation at the species level, instead of taking into account the temporal correlation at the study level as I did first.

Just one last question: when I applied your models, depending on the moderator I choose, I sometimes have a convergence problem, which is solved by switching to 'optim' for the optimizer and using either the 'BFGS' or 'Nelder-Mead' methods as you suggested elsewhere. But I was wondering what the cause of this is. Can it be due to a lack of data ?
I indeed don't have many studies (18) but as I have data for different species and different time points in each study, I still have more than 300 effect sizes (but more effect sizes are related one population level (no convergence problem) than to a species level (convergence problem)).


----- Mail original -----
De: "Wolfgang Viechtbauer, SP" <wolfgang.viechtbauer using maastrichtuniversity.nl>
À: "Marianne DEBUE" <marianne.debue using mnhn.fr>, "r-sig-meta-analysis" <r-sig-meta-analysis using r-project.org>
Envoyé: Jeudi 18 Février 2021 10:47:58
Objet: RE: multi-level, multiple timepoint model

Dear Marianne,

Let me just preface my response by saying that with this level of complexity, giving advice is very difficult. In cases like this, it could easily take me days to decide on an appropriate modeling approach, possibly testing out ideas in simulated data after lengthy discussions about the data structure, design of the studies, information reported, research hypotheses, etc. etc. with the primary investigator. You also write that you don't have a high number of studies, so trying to fit whatever model I might propose could be pointless.

This aside, and without knowing more about the details, I would consider adding the autocorrelated random effects at the lowest level where there are actually repeated observations (which is the species level). So that would imply:

random = ~ Timepoint | Species, struct="CAR"

To account for heterogeneity due to the multilevel structure, I would consider adding random effects for studies and population within studies as well:

random = list(~ Timepoint | Species, ~ 1 | ID_study/Population), struct="CAR"

Not sure to what extent one can add further random effects at the species and effect size. So, one could even consider models such as:

random = list(~ Timepoint | Species, ~ 1 | ID_study/Population/Species), struct="CAR"
random = list(~ Timepoint | Species, ~ 1 | ID_study/Population/Species/Timepoint), struct="CAR"

But you also have 'mods = ~ Species'. That might preclude adding random effects for species.

One could also consider adding additional autocorrelated random effects at the population or study levels. Given that the response of species to the treatment might be more similar for species that are phylogenetically more related to each other, one could also consider adding phylogenetically correlated random effects for species to the model.

I'll stop here. At least I hope to have given you some ideas.


>-----Original Message-----
>From: R-sig-meta-analysis [mailto:r-sig-meta-analysis-bounces using r-project.org] On
>Behalf Of Marianne DEBUE
>Sent: Thursday, 18 February, 2021 9:29
>To: r-sig-meta-analysis
>Subject: [R-meta] multi-level, multiple timepoint model
>Hi everyone,
>I am conducting a meta-analysis in ecology. I am confronted to several
>dependencies and I am not sure how to write the model.
>I have several studies, each corresponding to a specific study site.
>The studies can concern one or several populations (bird, fish, vegetation,
>In each study, I have measures of abundance of the different species seen in the
>site at different timepoints.
>Species, Populations and Timepoints can be common or different between studies.
>So I have this type of structure :
>                                       T=0          T=1           T=2
>Study 1 _ Population 1 _ Species 1.1    x            x             x
>                         Species 1.2    x            x             x
>                         Species 1.3    x            x             x
>          Population 2 _ Species 2.1    x                          x
>                         Species 2.2    x                          x
>                         Species 2.3    x                          x
>Study 2 _ Population 1 _ Species 1.1    x            x
>                         Species 1.4    x            x
>                         Species 1.5    x            x
>          Population 3 _ Species 3.1                 x             x
>                         Species 3.2                 x             x
>                         Species 2.3                 x             x
>The effect size is a standardized mean difference between pre- and post-
>I don't know the correlation between the different timepoints.
>1. I first wrote this model :
>res=rma.mv(ES, V, mods= ~ Species, random = ~Timepoint|ID_study,struct="CAR",
>But I was wondering if a Species-level is not lacking ?
>The ID_study allows me to take into account the spatial correlation between all
>the species of a same site but shouldn't the temporal correlation be linked to
>each species ?
>2. Is the following model a better approach ? Am I not losing the advantage of the
>"struct="CAR"" argument ?
>res=rma.mv(ES, V, mods= ~ Species, random =
>coef_test(res,vcov="CR2") #I am using the clubSandwich package as I don't have a
>high number of studies
>3. And last question: is it better to make a meta-analysis per population or to
>keep all the population in one meta-analysis ?
>Thank you for you help

More information about the R-sig-meta-analysis mailing list