[R-meta] How to conduct a meta-analysis on multiple-treatment studies with a repeated measure designs?
Koenraad van Meerbeek
koenr@@d@v@nmeerbeek @ending from bio@@@u@dk
Fri May 18 15:55:20 CEST 2018
Dear all,
The units of analysis stay the same across the years, so we´ll definitely want to add this to the model. We already succeeded in doing the analysis according to Gabriele´s suggestions. I will have a look at those new examples you mentioned.
Thanks for all the help.
Koenraad
-----Original Message-----
From: Viechtbauer, Wolfgang (SP) <wolfgang.viechtbauer at maastrichtuniversity.nl>
Sent: vrijdag 18 mei 2018 15:47
To: r-sig-meta-analysis at r-project.org
Cc: Koenraad van Meerbeek <koenraad.vanmeerbeek at bios.au.dk>; Gabriele Midolo <gabriele.midolo at gmail.com>
Subject: RE: [R-meta] How to conduct a meta-analysis on multiple-treatment studies with a repeated measure designs?
Hi Koenraad,
With this type of data structure, you ideally would not just account for the covariances in the sampling errors due to repeated use of the control group information, but also due to measurements taken over multiple years. The former induces covariance for sure. Whether the latter is also an issue for your data is hard to say without knowing more about what you are studying. For example, if I measure the same patients multiple times, then these measurements will tend to be correlated, which in turn induces correlation between effect size measures computed with these measurements. But it sounds like you are in ecology, in which case you are probably taking rather different types of measurements. If the units of analysis are actually different across the years, then there might not be covariance in the sampling errors over time after all. However, one would still want to allow for covariance in the underlying true effects. This can be accomplished by adding appropriate random effects to the model. As Gabriele mentioned, for example something like 'random = ~ Study / Year / ID' (where ID is just a unique value for each row in the dataset). One could also do fancier things allowing for autocorrelation in the random effects over time, since one commonly sees decaying correlation as the time difference increases. In rma.mv(), there are the "AR", "HAR", and "CAR" structures for this purpose. Examples based on this can be found under help(dat.fine1993) and help(dat.ishak2007). There is also:
Musekiwa, A., Manda, S. O., Mwambi, H. G., & Chen, D. G. (2016). Meta-analysis of effect sizes reported at multiple time points using general linear mixed model. PLOS ONE, 11(10), e0164898.
which walks you through these types of models.
Best,
Wolfgang
-----Original Message-----
From: R-sig-meta-analysis [mailto:r-sig-meta-analysis-bounces at r-project.org] On Behalf Of Koenraad van Meerbeek
Sent: Tuesday, 15 May, 2018 20:37
To: Gabriele Midolo; r-sig-meta-analysis at r-project.org
Subject: Re: [R-meta] How to conduct a meta-analysis on multiple-treatment studies with a repeated measure designs?
Hi,
The data is just a simplified version of the actual dataset. I included it to show the structure of the data. We also thought of only using the last sampling year, but then you´ll lose a lot of information. So I was looking for a way to include all data. So if I only have to include it in the random structure of the model, as you suggest, then I don´t see any further problems.
Thanks a lot!
Koenraad
From: Gabriele Midolo <gabriele.midolo at gmail.com>
Sent: dinsdag 15 mei 2018 18:42
To: Koenraad van Meerbeek <koenraad.vanmeerbeek at bios.au.dk>; r-sig-meta-analysis at r-project.org
Subject: Re: [R-meta] How to conduct a meta-analysis on multiple-treatment studies with a repeated measure designs?
Hi Koenraad,
I've put r-sig-meta-analysis back in the discussion too.
Data are fine to me but I don't see the number of replicates and sd values, so I can't calculate the variance-covariance matrix myself. However, assuming you have these values, you should be able to easly calculate it with the code I've sent you?
Note that I still think it could be worthy to account for replication due to different years as I wrote in the previous email (with random effect accounting for different year levels nested within each study). Something I saw quite often in ecological meta-analysis is to drop all "previous" observation from experiments and compare treatment and control of the last year only for each experiment reported by the study to avoid replication, but this can lead to important loss of information, I think. Of course, this also depend on the context of your study?
Maybe some of the other people will have better inputs on this.
With my best,
Gabriele
On 15 May 2018 at 13:34, Koenraad van Meerbeek <koenraad.vanmeerbeek at bios.au.dk<mailto:koenraad.vanmeerbeek at bios.au.dk>> wrote:
Hi Gabriele,
Thanks for the reply. I will look at the paper you mentioned.
So in response to Michael´s mail, should I post my example data table like this:
structure(list(Study = c(1L, 1L, 1L, 1L, 1L, 1L, 2L, 2L, 2L, 2L, 2L, 2L), Treatment = structure(c(1L, 2L, 3L, 1L, 2L, 3L, 1L, 4L, 5L, 1L, 4L, 5L), .Label = c("Control", "TR1", "TR2", "TRa", "TRb"), class = "factor"), Year = c(1L, 1L, 1L, 2L, 2L, 2L, 1L, 1L, 1L, 2L, 2L, 2L), Species_div = c(1.35, 0.78, 0.23, 1.3, 0.65, 0.2, 1.74, 1.34, 1.12, 1.69, 1.21, 0.98), Magnitude = c(0, 0.75, 1.5, 0, 0.75, 1.5, 0, 0.5, 1, 0, 0.5, 1), Duration = c(1L, 1L, 1L, 2L, 2L, 2L, 1L, 1L, 1L, 2L, 2L, 2L)), class = "data.frame", row.names = c(NA,
-12L))
This is the output of the dput I get.
Best,
Koenraad
From: Gabriele Midolo <gabriele.midolo at gmail.com<mailto:gabriele.midolo at gmail.com>>
Sent: dinsdag 15 mei 2018 13:25
To: Koenraad van Meerbeek <koenraad.vanmeerbeek at bios.au.dk<mailto:koenraad.vanmeerbeek at bios.au.dk>>
Cc: r-sig-meta-analysis at r-project.org<mailto:r-sig-meta-analysis at r-project.org>
Subject: Re: [R-meta] How to conduct a meta-analysis on multiple-treatment studies with a repeated measure designs?
Hi Koenraad,
I agree with what Michael put above.
Not sure this is what you are looking for, but I posted a similar question some time ago and got a code from Wolfgang to build variance-covariance matrix based on Lajeunesse (2011) Ecology, 92(11), pp. 2049–2055:
calc.v <- function(x) {
v <- matrix(x$SD_C[1]^2 / (x$N_C[1] * x$X_C[1]^2), nrow=nrow(x), ncol=nrow(x))
diag(v) <- x$vi
v
}
V <- bldiag(lapply(split(dat, dat$common_ID), calc.v)) V Where 'common_ID' is the column that codes groups of effect sizes that share the mean ( 'X_C' ), standard deviation ( 'SD_C' ),and n ('N_C') of a control group.
When calling rma.mv<http://rma.mv>(), V is what you should then give as the second argument instead of vi.
You should also be able to deal with repeated measure over time by adding a nested element ( e.g. "sampling year") to the multi-level structure of your model in rma.mv<http://rma.mv> (something like "random = ~ Study / year / ID "), but I could be wrong here...
Cheers,
Gabriele
More information about the R-sig-meta-analysis
mailing list