Skip to content
Prev 4449 / 5636 Next

[R-meta] Problem with sigma-square in 3-level meta-analysis

Dear Sebastian,

Just a general note when posting to this list: Please do not reply to a message and then change the subject to something new. There is information stored in the email header that is used to create threads in email clients and the mailing list archives and when doing this, it messes things up. See https://stat.ethz.ch/pipermail/r-sig-meta-analysis/2023-March/thread.html and note how your message is considered a reply to the 'margins command' thread, which is obviously not what you intended. (I am making this reply in an entirely new post, so this should hopefully show up in a proper new thread, although of course your post won't show up at the beginning of this thread, so let me just put the archive URL here: https://stat.ethz.ch/pipermail/r-sig-meta-analysis/2023-March/004447.html).

Moving on to your actual questions:

(a) The observed variances are a combination of the variance in the underlying true effects (apparently r-to-z transformed correlations based on 'zr') and the sampling variances and hence cannot be directly used to examine whether something has gone wrong here.

I would examine profile(overall_mod_cc) to see if the likelihood profile plots are properly peaked at the estimates (which could very well also happen around 0).

(b) I wouldn't put it this way, but yes, in general (and this is not specific to rma.mv()) it is difficult to estimate variance components when the number of levels is small. The REML estimates should still be approximately unbiased, but will then tend to high variance themselves.

(c) Again, I wouldn't automatically conclude here that something is off. It might very well be that the variance in the underlying true effects is due to difference between rows within samples and not between samples.

Speaking of that -- are different rows for the same level of 'Sample_ID' based on the same subjects? In this case, those (r-to-z transformed) correlations are not independent and should not be treated as such. rcalc() is a function that allows to construction of the appropriate var-cov matrix to account for this (but requires information about correlations that may not be available). Alternatively, vcalc() could be used to construct a rough approximation.

And finally -- if you still think something is off here, a possible way forward would be to use a Bayesian model where you can use priors on the variance components to push their posterior distributions in the desired direction (more or less, depending on how much information there is in the data).

Best,
Wolfgang