# Meta-regression of utility weights (hierarchical linear model)

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.

• 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). – Wolfgang Mar 9 '15 at 9:13

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).