Skip to content
Prev 5456 / 5632 Next

[R-meta] Meta-analysis of intra class correlation coefficients

Dear Wolfgang,

Many thanks! This is really helpful, indeed! For clarification, related traits refer to traits that are likely to reflect a single shared underlying domain (e.g. assuming a musicality phenotype: singing, pitch, tapping a beat etc). These scores are available in MZ and DZ twins in the same cohort, and multiple analyses using these related phenotypes have been carried out with the same study, and multiple studies have analysed the same cohort, and multiple cohorts are available for analysis.

I adjusted the code as you suggested. I excluded the DZ_factor as it is redundant and just an opposite coding of the MZ_factor.
+   zi,
+   vzi,
+   random = list(~ MZDZ_factor | Study_ID, ~ MZDZ_factor | ESID), struct="UN",
+   data = data,
+   mods = ~ 0 + MZDZ_factor,
+   method = "REML",
+   tdist = TRUE)

This provides now estimates for MZDZ_factor0 and MZDZ_factor1. 
As heritability can only be estimated with raw ICC (twin correlations), I reverted back: 

#i.e. approximating heritability (which is usually carried out with established twin analysis methodology using ML)
#Reverting back to r from Z scores
rMZ <- FisherZInv(model$b[2])
rDZ <- FisherZInv(model$b[1])
h2 <- 2*(rMZ - rDZ)

#or equivalently
h2_v2 <- 2*((exp(2*model$b[2]) - 1) / (exp(2*model$b[2]) + 1) - (exp(2*model$b[1]) - 1) / (exp(2*model$b[1]) + 1))

#with SE:
h2_se <- deltamethod(~ 2*((exp(2*x2) - 1) / (exp(2*x2) + 1) - (exp(2*x1) - 1) / (exp(2*x1) + 1)), coef(model), vcov(model))

#This is now the SE for the h2 reverting back from Z scores, and I slightly adjusted for the order of the coefficients.

There is indeed covariance between zrMZ and zrDZ, which may arise due to the meta-analytic character of the estimates (study effects?). The covariance between rMZ and rDZ is assumed to be absent within a single study, but here, indeed, it is not. We will now look into possibilities to derive more sophisticated twin estimates using specialised software and ML estimations. Ideally, these analyses are carried out on the raw scale.

To simplify the calculation (avoiding the Fisher transformation), do you think we could transform rma estimates and vcov back from Z to the raw scale (still using the delta method)? There is a remarkable stability in the vcov, for z and raw r estimates:
MZDZ_factor0 MZDZ_factor1
MZDZ_factor0   0.01522759   0.03257534
MZDZ_factor1   0.03257534   0.07674611
MZDZ_factor0 MZDZ_factor1
MZDZ_factor0   0.01522877   0.03258687
MZDZ_factor1   0.03258687   0.07689732

Thanks again for your insight and help,
Beate










Beate St Pourcain, PhD
Senior Investigator & Group Leader
Room A207
Max Planck Institute for Psycholinguistics | Wundtlaan 1 | 6525 XD Nijmegen | The Netherlands


@bstpourcain
Tel:?+31 24 3521964
Fax:?+31 24 3521213
ORCID: https://orcid.org/0000-0002-4680-3517
Web: https://www.mpi.nl/departments/language-and-genetics/projects/population-variation-and-human-communication/
Further affiliations with:
MRC Integrative Epidemiology Unit | University of Bristol | UK
Donders Institute for Brain, Cognition and Behaviour | Radboud University | The Netherlands

My working hours may not be your working hours. Please do not feel obligated to reply outside of your normal working schedule.

-----Original Message-----
From: Viechtbauer, Wolfgang (NP) <wolfgang.viechtbauer at maastrichtuniversity.nl> 
Sent: Wednesday, October 16, 2024 10:21 PM
To: St Pourcain, Beate <Beate.StPourcain at mpi.nl>; R Special Interest Group for Meta-Analysis <r-sig-meta-analysis at r-project.org>
Subject: RE: Meta-analysis of intra class correlation coefficients

I don't understand what you mean by 'related traits'. Also, if multiple estimates are extracted from the same cohort, you may need to account for this as well. But leaving this aside, you should fit a single bivariate model to the z(rMZ) and z(rDZ) values. Maybe something like this:

model <- rma.mv(
  zi,
  vzi,
  random = list(~ MZDZ_factor | Study_ID, ~ MZDZ_factor | ESID), struct="UN",
  data = data,
  mods = ~ 0 + MZDZ_factor + DZMZ_factor,
  method = "REML",
  tdist = TRUE)

although not sure whether this will converge.

coef(model) then gives you the two coefficients and vcov(model) the corresponding var-cov matrix thereof. The multivariate delta method is described here:

https://en.wikipedia.org/wiki/Delta_method#Multivariate_delta_method

This is implemented, for example in msm::deltamethod(). Double-check this, but:

deltamethod(~ 2*((exp(2*x1) - 1) / (exp(2*x1) + 1) - (exp(2*x2) - 1) / (exp(2*x2) + 1)), coef(model), vcov(model))

should then give you the SE of 2*(rMZ - rDZ).

Best,
Wolfgang