Skip to content

[R-meta] H2 in the context of rma.mv

3 messages · Wolfgang Viechtbauer, Werner, M.A. (Marlene)

#
Dear all,

I have a question about retrieving or calculating the H2 statistic in the context of fitting a multilevel (random effects) model with rma.mv.
Can the H2 statistic be calculated or retrieved based on rma.mv output? I cannot seem to find it in the rma.mv output. My apologies if I am just plainly overseeing it.
Or does it actually not make sense to calculate it in the context of a multilevel model, considering it is not straightforward which heterogeneity variance to use?

To provide a reproducible example:

library(metafor)
dat <- dat.konstantopoulos2011

res2 <- rma.mv(yi, vi, random = ~ 1 | district/study, data=dat)

vs <- ((res2$k-1)* sum(1/res2$vi, na.rm = TRUE))/((sum(1/res2$vi, na.rm = TRUE))^2-sum((1/res2$vi)^2, na.rm = TRUE))
H2 <- (res2$sigma2[1] + vs)/vs

Does the above make sense (I followed the equation on p. 250 of the metafor reference manual)? Or is the H2 easily retrievable in another way?

Thank you and all the best,

Marlene



______________________________________________________
VUmc disclaimer : www.vumc.nl/disclaimer
AMC disclaimer : www.amc.nl/disclaimer
#
Dear Marlene,

It's not there, but you can calculate it manually. You can find a discussion on computing I^2 for more complex models here:

https://www.metafor-project.org/doku.php/tips:i2_multilevel_multivariate

Using the same principles discussed there, one can also compute H^2. And yes, your calculation below is doing just that. Using the notation in the page above, H^2 for the Konstantopoulos example would be:

W <- diag(1/res$vi)
X <- model.matrix(res)
P <- W - W %*% X %*% solve(t(X) %*% W %*% X) %*% t(X) %*% W
(sum(res$sigma2) + (res$k-res$p)/sum(diag(P))) / ((res$k-res$p)/sum(diag(P)))

Note that I put sum(res$sigma2) in the numerator instead of just res$sigma2[1]. I think for H^2, that is more sensible, since we are asking how much larger the *total variance* is compared to the amount of variance expected based on sampling variability alone. Just putting part of the variance components in the numerator leads to a rather convoluted interpretation of what the H^2 value represents.

Best,
Wolfgang
#
Thank you Wolfgang!

The reference and rewritten calculation are very helpful.

All the best,
Marlene

-----Oorspronkelijk bericht-----
Van: Viechtbauer, Wolfgang (SP) <wolfgang.viechtbauer at maastrichtuniversity.nl>
Verzonden: vrijdag 18 maart 2022 10:58
Aan: Werner, M.A. (Marlene) <m.a.werner at amsterdamumc.nl>; r-sig-meta-analysis at r-project.org
Onderwerp: RE: H2 in the context of rma.mv

Dear Marlene,

It's not there, but you can calculate it manually. You can find a discussion on computing I^2 for more complex models here:

https://eur04.safelinks.protection.outlook.com/?url=https%3A%2F%2Fwww.metafor-project.org%2Fdoku.php%2Ftips%3Ai2_multilevel_multivariate&amp;data=04%7C01%7Cm.a.werner%40amsterdamumc.nl%7Ce44e912f5cbd4865757008da08c5e292%7C68dfab1a11bb4cc6beb528d756984fb6%7C0%7C0%7C637831943240660937%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C3000&amp;sdata=eXYGwfpD5lzaehVitYQjgFMIi7nAGEOyvvYUhOPnkMg%3D&amp;reserved=0

Using the same principles discussed there, one can also compute H^2. And yes, your calculation below is doing just that. Using the notation in the page above, H^2 for the Konstantopoulos example would be:

W <- diag(1/res$vi)
X <- model.matrix(res)
P <- W - W %*% X %*% solve(t(X) %*% W %*% X) %*% t(X) %*% W
(sum(res$sigma2) + (res$k-res$p)/sum(diag(P))) / ((res$k-res$p)/sum(diag(P)))

Note that I put sum(res$sigma2) in the numerator instead of just res$sigma2[1]. I think for H^2, that is more sensible, since we are asking how much larger the *total variance* is compared to the amount of variance expected based on sampling variability alone. Just putting part of the variance components in the numerator leads to a rather convoluted interpretation of what the H^2 value represents.

Best,
Wolfgang
______________________________________________________
VUmc disclaimer : www.vumc.nl/disclaimer
AMC disclaimer : www.amc.nl/disclaimer