I would like to perform a meta-regression of utility weights for two health states (1st state - overall, with specific condition; the second - with additional conditions, comorbidities).

Some studies report outcome for only one state, while others - for both. I've would like to treat the comorbidities as a moderator of overall outcome (a improvement or reduction in overall outcome due to comorbidities).

Is there a way to create such model in metafor R package (to obtain one var-cov matrix for all studies combined)?

Here is a example of dataset:

 dat = data.frame(study=c(1, 1, 2, 3, 3, 3, 4, 4), group=c("all", "with", "all", "all", "with", "without", "all", "without"), stype=c(1, 1, 2, 2, 3, 3, 2, 2), meth=c(1, 1, 2, 2, 2, 2, 1, 1),char=c(0.5, 0.4, 0.5, 0.4, 0.5, 0.3, 0.6, 0.5), yi=c(0.7, 0.6, 0.8, 0.5, 0.2, 0.6, 0.5, 0.45),vi=c(0.0575, 0.0686, 0.1675, 0.432, 0.448, 0.405, 0.2754, 0.12))

where: study is a study number, group is a patients group (with/without comorbidities or all combined), stype is a study type, meth is a method of utility calculation, and char can be additional patients' characteristics (eq. percent of women). The variances are calculated from SEM. The covariance within study is not available.

This is an simplified example, I will have much more complex dataset (more outcomes from one study - several methods in one study; additional subgroups).

My main problems (apart from being novice in such statistical analysis) are:

  • handle the correlation of outcomes within study, eg. to estimate V matrix for rma.mv procedure, and/or

  • select appropriate methods for calculation (I've read about 'Robust variance estimation with dependent effect sizes', but I'm not sure that will be appropriate and if it is included in metafor)

  • generate var-cov matrix for full model, which could be incorporated in the subsequent stages of my dissertation (probabilistic analysis; get random values from multivariate distribution described by means and var-covar matrix)

My first guess was:

rma.mv(yi, vi, mods= ~relevel(group, ref="all") + relevel(factor(stype),ref=1) + relevel(factor(meth),ref=1) + char, random = ~ group | study, data=dat)

However without V matrix as an input, this always will generate rho at 1.

  • $\begingroup$ I don't understand what kind of data you have and its structure. Could you elaborate on that? Ideally provide a small reproducible example (with code). $\endgroup$
    – Wolfgang
    Commented Mar 9, 2015 at 9:13

1 Answer 1


I won't be able to provide a "here is how you do it answer". This sounds like a pretty novel (but as far as I can tell appropriate) application of meta-analytic methods, but doing so may require input from a local statistician well-versed in meta-analytic methodology, or more broadly, mixed-effects models. But here are some thoughts that may be helpful.

  1. Choice of outcome measure: You say that these are utility weights. So, I take it that these are bounded between 0 and 1, but yet they are probably not proportions that arose from binomial distributions. In that case, they are more properly thought of as compositional data (for two components). At any rate, the boundedness of the outcomes pretty much implies that the sampling distributions from which these values have arisen are not approximately normal (as assumed by the model). Some transformation may be necessary to make the assumption of normal sampling distributions more appropriate. While they are not proportions, you could still consider the logit or arcsine-square-root transformation. Using the delta method, the sampling variance of the transformed values can then be approximated. You may also have to deal with cases where the weights are equal to 0 or 1. Some adjustment to the values may then be necessary for certain transformations.

  2. Correlated sampling errors: Regardless of what kind of values you end up analyzing, there is not only the issue of how to compute the variance of the sampling errors, but also the fact that they may be correlated. If I understand your data correctly, the group with and the group without comorbidities consist of different individuals (i.e., they are mutually exclusive). In that case, the sampling errors of the (possibly transformed) utility weights can be assumed to be independent. However, if you have a weight value for the combined group plus a weight for one subgroup (or even both) (i.e., a value for all and a value for with and/or without within the same study), then those sampling errors will be correlated, since they are based on partially overlapping groups of individuals. Computing the covariance for the sampling errors will then be rather tricky. You may have to restrict yourself to only the set of data with independent sampling errors.

  3. Meta-analytic model: Even if sampling errors are uncorrelated (and hence V is diagonal), the true underlying (possibly transformed) utility weights may be correlated within studies. Some multilevel/multivariate meta-analytic model is therefore appropriate. The crucial part is modeling the random effects correctly. Your suggestion of using random = ~ group | study is pretty much what I would suggest. If you have enough data, you can also try struct="UN", which then allows the amount of (residual) heterogeneity to differ across the three levels of the group factor and allows for different degrees of correlation among the three levels (i.e., an unstructured var-cov matrix for the random effects).

  4. Alternative models: For bounded outcomes with a 0 to 1 range, you could also consider using beta regression for analyzing your data. See, for example, the betareg package. Since the sampling variances of the values you have differ quite a bit, you may have consider carefully how to incorporate that information into the model (I see that the betareg() function has a weights argument, but I don't know off the top of my head how exactly that is used in the model). Also, you would really need some kind of random-effects version of a beta regression model if you want to model the multilevel structure of these data. Or you may have to consider using robust methods for estimating the var-cov matrix of your fixed effects (if you are primarily interested in the fixed effects). See the sandwich package for this. Since both of these packages have been coauthored by Achim Zeileis, they interoperate quite nicely 'out of the box' (see their respective vignettes).

  • $\begingroup$ It seems that it more complicated than I thought :) Thank you for the valuable advices! $\endgroup$
    – PrzemekH
    Commented Mar 12, 2015 at 13:29

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.