Results from studies examining the treatment of fibromyalgia syndrome with various antidepressants.

dat.haeuser2009

Format

The data frame contains the following columns:

studycharacterstudy authors
refnumericreference number as in article
yearnumericpublication year
countrycharactercountry where study was conducted
femalenumericpercent of female participants
whitenumericpercent of white participants
magenumericmean age of participants
durationnumericstudy / treatment duration
medcharacterantidepressant medication
jadadnumericJadad score
vantuldernumericvan Tulder score
tgrpcharactertreatment group identifier
cgrpcharactercontrol group identifier
outcomecharacteroutcome variable (pain, fatigue, sleep, mood, qol)
typecharacterwhether means reflect raw means of mean changes
ntinumericnumber of participants in the treatment group
mtinumericmean (change) in the treatment group
sdtinumericstandard deviation in the treatment group
ncinumericnumber of participants in the control group
mcinumericmean (change) in the control group
sdcinumericstandard deviation in the control group

Details

The meta-analysis by Häuser et al. (2009) examined the efficacy of antidepressants in the treatment of fibromyalgia syndrome. Several outcomes were assessed in the studies, including pain, fatigue, sleep disturbances, (depressed) mood, and health-related quality of life (variable outcome). For all outcomes, a higher mean reflects a more negative outcome.

Riley et al. (2011) used part of these data in their discussion of prediction intervals in the context of the random-effects model for meta-analysis.

Note

Some studies compared multiple treatment groups against a common control group. This induces dependency between the observed standardized mean differences, which was not accounted for in the analyses conducted in the original meta-analysis.

If a range was given in the dataset (e.g., for variable female), then the midpoint of the range was entered in the dataset.

Some typos were discovered and corrected during data entry. For Heymann et al. (2001), the mean in the nortiptyline group for was 48.78, not 49.78. For Hannonen et al. (1998), the sample size of the treatment group for outcome sleep was 30, not 39.

Source

Häuser, W., Bernardy, K., Üçeyler, N., & Sommer, C. (2009). Treatment of fibromyalgia syndrome with antidepressants: A meta-analysis. Journal of the American Medical Association, 301(2), 198–209. https://doi.org/10.1001/jama.2008.944

References

Riley, R. D., Higgins, J. P. T., & Deeks, J. J. (2011). Interpretation of random effects meta-analyses. British Medical Journal, 342, d549. https://doi.org/10.1136/bmj.d549

Concepts

medicine, standardized mean differences, multilevel models, cluster-robust inference, multivariate models

Examples

### copy data to 'dat' and examine the data
dat <- dat.haeuser2009
head(dat)
#>             study ref year country female white mage duration           med jadad vantulder tgrp cgrp
#> 1  Carette et al.  51 1986  Canada   92.6    NA 41.8        9 amitriptyline     4         9   t1   c1
#> 2  Carette et al.  52 1995  Canada   95.5    NA 43.8        8 amitriptyline     4         8   t2   c2
#> 3  Carette et al.  52 1995  Canada   95.5    NA 43.8        8 amitriptyline     4         8   t2   c2
#> 4  Carette et al.  52 1995  Canada   95.5    NA 43.8        8 amitriptyline     4         8   t2   c2
#> 5 Ginsberg et al.  53 1998 Belgium   87.9    NA 39.7        4    pirlindole     3         7   t3   c3
#> 6 Ginsberg et al.  54 1996 Belgium   83.0    92 46.0        8 amitriptyline     4         8   t4   c4
#>   outcome type nti  mti sdti nci  mci sdci
#> 1    pain  raw  27 4.30 3.00  32 5.00 3.00
#> 2    pain  raw  22 5.07 3.22  22 7.13 2.41
#> 3 fatigue  raw  22 5.62 3.07  20 7.64 1.80
#> 4   sleep  raw  22 3.93 3.14  20 6.51 2.69
#> 5    pain  raw  33 4.85 2.11  28 6.79 1.53
#> 6    pain  raw  20 3.80 2.40  20 7.00 1.30

### load metafor package
library(metafor)

### compute the SMD values for the outcome pain
dat.pain <- escalc(measure="SMD", m1i=mti, sd1i=sdti, n1i=nti,
                                  m2i=mci, sd2i=sdci, n2i=nci,
                                  data=dat, subset=outcome=="pain")
dat.pain
#> 
#>                study ref year       country female white mage duration           med jadad vantulder 
#> 1     Carette et al.  51 1986        Canada   92.6    NA 41.8        9 amitriptyline     4         9 
#> 2     Carette et al.  52 1995        Canada   95.5    NA 43.8        8 amitriptyline     4         8 
#> 5    Ginsberg et al.  53 1998       Belgium   87.9    NA 39.7        4    pirlindole     3         7 
#> 6    Ginsberg et al.  54 1996       Belgium   83.0  92.0 46.0        8 amitriptyline     4         8 
#> 9  Goldenberg et al.  55 1996 United States   90.0 100.0 43.2        6    fluoxetine     5         7 
#> 14 Goldenberg et al.  55 1996 United States   90.0 100.0 43.2        6 amitriptyline     5         7 
#> 19   Hannonen et al.  56 1998       Finland  100.0    NA 49.7       12   moclobemide     5        10 
#> 22   Hannonen et al.  56 1998       Finland  100.0    NA 49.7       12 amitriptyline     5        10 
#> 25 Kempenaers et al.  63 1994       Belgium  100.0    NA 38.7        8 amitriptyline     3         7 
#> 27      Wolfe et al.  61 1994 United States  100.0 100.0 48.0        6    fluoxetine     3         7 
#> 31    Yavuzer et al.  62 1998        Turkey   58.3    NA 33.2        6   moclobemide     1         6 
#> 35  Anderberg et al.  47 2000        Sweden  100.0    NA 48.6       16    citalopram     4         9 
#> 39     Arnold et al.  50 2005 United States  100.0  89.5 49.6       12    duloxetine     3         7 
#> 43     Arnold et al.  50 2005 United States  100.0  89.5 49.6       12    duloxetine     3         7 
#> 47     Arnold et al.  49 2004 United States   88.5  88.5 49.9       12    duloxetine     5         8 
#> 51     Arnold et al.  48 2002 United States  100.0  90.0 46.0       12    fluoxetine     4         7 
#> 55 Nørregaard et al.  58 1995       Denmark     NA    NA 48.0        8    citalopram     4         6 
#> 60     Patkar et al.  59 2007 United States   94.0    NA 47.9       12    paroxetine     5         9 
#> 61    Russell et al.  64 2008 United States   94.8  84.2 51.0       28    duloxetine     4         8 
#> 64    Russell et al.  64 2008 United States   94.8  84.2 51.0       28    duloxetine     4         8 
#> 67    Russell et al.  64 2008 United States   94.8  84.2 51.0       28    duloxetine     4         8 
#> 70     Vitton et al.  60 2004 United States   97.0  47.0 84.0       12   milnacipran     3         7 
#>    tgrp cgrp outcome   type nti    mti  sdti nci   mci  sdci      yi     vi 
#> 1    t1   c1    pain    raw  27   4.30  3.00  32  5.00  3.00 -0.2302 0.0687 
#> 2    t2   c2    pain    raw  22   5.07  3.22  22  7.13  2.41 -0.7113 0.0967 
#> 5    t3   c3    pain    raw  33   4.85  2.11  28  6.79  1.53 -1.0258 0.0746 
#> 6    t4   c4    pain    raw  20   3.80  2.40  20  7.00  1.30 -1.6250 0.1330 
#> 9    t5   c5    pain    raw  22   5.75  2.57  19  8.15  1.65 -1.0728 0.1121 
#> 14   t6   c5    pain    raw  21   6.40  2.83  19  8.15  1.65 -0.7310 0.1069 
#> 19   t7   c7    pain    raw  30   4.50  2.70  30  5.20  2.70 -0.2559 0.0672 
#> 22   t8   c7    pain    raw  32   4.50  2.80  30  5.20  2.70 -0.2512 0.0651 
#> 25   t9   c9    pain    raw   6   3.20  3.10   8  3.70  2.80 -0.1598 0.2926 
#> 27  t10  c10    pain    raw  15   1.60  0.79   9  1.60  0.79  0.0000 0.1778 
#> 31  t11  c11    pain    raw  26   1.57  0.88  22  1.88  0.83 -0.3556 0.0852 
#> 35  t14  c14    pain change  17  -1.00  1.86  18  0.00  2.47 -0.4450 0.1172 
#> 39  t15  c15    pain change 116  -2.39  2.37 118 -1.16  2.28 -0.5273 0.0177 
#> 43  t16  c15    pain change 114  -2.40  2.35 118 -1.16  2.28 -0.5340 0.0179 
#> 47  t17  c17    pain change 101  -1.98  3.01 103 -1.35  2.94 -0.2110 0.0197 
#> 51  t18  c18    pain change  19  -2.30  2.40  18 -0.10  2.50 -0.8789 0.1186 
#> 55  t19  c19    pain change  21   1.00  2.10  21  0.70  1.10  0.1756 0.0956 
#> 60  t20  c20    pain change  38 -12.20 18.50  48 -8.80 16.60 -0.1930 0.0474 
#> 61  t21  c21    pain change  79  -2.22  2.49 144 -1.43  2.52 -0.3137 0.0198 
#> 64  t22  c21    pain change 150  -1.98  2.57 144 -1.43  2.52 -0.2155 0.0137 
#> 67  t23  c21    pain change 147  -2.26  2.55 144 -1.43  2.52 -0.3265 0.0139 
#> 70  t24  c24    pain change  97  -2.30  3.00  28 -0.90  2.90 -0.4672 0.0469 
#> 

### fit a random-effects model
res <- rma(yi, vi, data=dat.pain, method="DL", digits=2)
res
#> 
#> Random-Effects Model (k = 22; tau^2 estimator: DL)
#> 
#> tau^2 (estimated amount of total heterogeneity): 0.03 (SE = 0.03)
#> tau (square root of estimated tau^2 value):      0.19
#> I^2 (total heterogeneity / total variability):   44.97%
#> H^2 (total variability / sampling variability):  1.82
#> 
#> Test for Heterogeneity:
#> Q(df = 21) = 38.16, p-val = 0.01
#> 
#> Model Results:
#> 
#> estimate    se   zval  pval  ci.lb  ci.ub      
#>    -0.43  0.06  -6.68  <.01  -0.55  -0.30  *** 
#> 
#> ---
#> Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
#> 
predict(res)
#> 
#>   pred   se ci.lb ci.ub pi.lb pi.ub 
#>  -0.43 0.06 -0.55 -0.30 -0.81 -0.04 
#> 

### calculate the prediction interval as suggested by Riley et al. (2011)
predict(res, predtype="riley")
#> 
#>   pred   se ci.lb ci.ub pi.lb pi.ub 
#>  -0.43 0.06 -0.55 -0.30 -0.84 -0.02 
#> 

### note: reported as -0.83 to -0.02 in Riley et al. (2011); the discrepancy is due to rounding

############################################################################

### construct an approximate var-cov matrix of the SMD values accounting for
### the dependency in the estimates due to the use of shared control groups
V <- vcalc(vi, cluster=ref, grp1=tgrp, grp2=cgrp, data=dat.pain)
V
#> 
#>         1      2      3      4      5      6      7      8      9     10     11     12     13     14 
#> 1  0.0687      .      .      .      .      .      .      .      .      .      .      .      .      . 
#> 2       . 0.0967      .      .      .      .      .      .      .      .      .      .      .      . 
#> 3       .      . 0.0746      .      .      .      .      .      .      .      .      .      .      . 
#> 4       .      .      . 0.1330      .      .      .      .      .      .      .      .      .      . 
#> 5       .      .      .      . 0.1121 0.0547      .      .      .      .      .      .      .      . 
#> 6       .      .      .      . 0.0547 0.1069      .      .      .      .      .      .      .      . 
#> 7       .      .      .      .      .      . 0.0672 0.0331      .      .      .      .      .      . 
#> 8       .      .      .      .      .      . 0.0331 0.0651      .      .      .      .      .      . 
#> 9       .      .      .      .      .      .      .      . 0.2926      .      .      .      .      . 
#> 10      .      .      .      .      .      .      .      .      . 0.1778      .      .      .      . 
#> 11      .      .      .      .      .      .      .      .      .      . 0.0852      .      .      . 
#> 12      .      .      .      .      .      .      .      .      .      .      . 0.1172      .      . 
#> 13      .      .      .      .      .      .      .      .      .      .      .      . 0.0177 0.0089 
#> 14      .      .      .      .      .      .      .      .      .      .      .      . 0.0089 0.0179 
#> 15      .      .      .      .      .      .      .      .      .      .      .      .      .      . 
#> 16      .      .      .      .      .      .      .      .      .      .      .      .      .      . 
#> 17      .      .      .      .      .      .      .      .      .      .      .      .      .      . 
#> 18      .      .      .      .      .      .      .      .      .      .      .      .      .      . 
#> 19      .      .      .      .      .      .      .      .      .      .      .      .      .      . 
#> 20      .      .      .      .      .      .      .      .      .      .      .      .      .      . 
#> 21      .      .      .      .      .      .      .      .      .      .      .      .      .      . 
#> 22      .      .      .      .      .      .      .      .      .      .      .      .      .      . 
#>        15     16     17     18     19     20     21     22 
#> 1       .      .      .      .      .      .      .      . 
#> 2       .      .      .      .      .      .      .      . 
#> 3       .      .      .      .      .      .      .      . 
#> 4       .      .      .      .      .      .      .      . 
#> 5       .      .      .      .      .      .      .      . 
#> 6       .      .      .      .      .      .      .      . 
#> 7       .      .      .      .      .      .      .      . 
#> 8       .      .      .      .      .      .      .      . 
#> 9       .      .      .      .      .      .      .      . 
#> 10      .      .      .      .      .      .      .      . 
#> 11      .      .      .      .      .      .      .      . 
#> 12      .      .      .      .      .      .      .      . 
#> 13      .      .      .      .      .      .      .      . 
#> 14      .      .      .      .      .      .      .      . 
#> 15 0.0197      .      .      .      .      .      .      . 
#> 16      . 0.1186      .      .      .      .      .      . 
#> 17      .      . 0.0956      .      .      .      .      . 
#> 18      .      .      . 0.0474      .      .      .      . 
#> 19      .      .      .      . 0.0198 0.0082 0.0083      . 
#> 20      .      .      .      . 0.0082 0.0137 0.0069      . 
#> 21      .      .      .      . 0.0083 0.0069 0.0139      . 
#> 22      .      .      .      .      .      .      . 0.0469 
#> 

### fit a multilevel random-effects model
res <- rma.mv(yi, V, random = ~ 1 | ref/tgrp, data=dat.pain, digits=2)
res
#> 
#> Multivariate Meta-Analysis Model (k = 22; method: REML)
#> 
#> Variance Components:
#> 
#>            estim  sqrt  nlvls  fixed    factor 
#> sigma^2.1   0.06  0.24     17     no       ref 
#> sigma^2.2   0.00  0.00     22     no  ref/tgrp 
#> 
#> Test for Heterogeneity:
#> Q(df = 21) = 35.59, p-val = 0.02
#> 
#> Model Results:
#> 
#> estimate    se   zval  pval  ci.lb  ci.ub      
#>    -0.45  0.09  -5.26  <.01  -0.62  -0.28  *** 
#> 
#> ---
#> Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
#> 
predict(res)
#> 
#>   pred   se ci.lb ci.ub pi.lb pi.ub 
#>  -0.45 0.09 -0.62 -0.28 -0.95  0.05 
#> 

### use cluster-robust inference methods
robust(res, cluster=ref, clubSandwich=TRUE)
#> 
#> Multivariate Meta-Analysis Model (k = 22; method: REML)
#> 
#> Variance Components:
#> 
#>            estim  sqrt  nlvls  fixed    factor 
#> sigma^2.1   0.06  0.24     17     no       ref 
#> sigma^2.2   0.00  0.00     22     no  ref/tgrp 
#> 
#> Test for Heterogeneity:
#> Q(df = 21) = 35.59, p-val = 0.02
#> 
#> Number of estimates:   22
#> Number of clusters:    17
#> Estimates per cluster: 1-3 (mean: 1.29, median: 1)
#> 
#> Model Results:
#> 
#> estimate    se¹   tval¹     df¹  pval¹  ci.lb¹  ci.ub¹      
#>    -0.45  0.08   -5.30   13.62   <.01   -0.63   -0.27   *** 
#> 
#> ---
#> Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
#> 
#> 1) results based on cluster-robust inference (var-cov estimator: CR2,
#>    approx t-test and confidence interval, df: Satterthwaite approx)
#> 

############################################################################

### frequency table for the different outcomes
table(dat$outcome)
#> 
#> fatigue    mood    pain     qol   sleep 
#>      14      10      22      12      13 

### compute the SMD values for all outcomes
dat <- escalc(measure="SMD", m1i=mti, sd1i=sdti, n1i=nti,
                             m2i=mci, sd2i=sdci, n2i=nci,
                             data=dat)

### approximate correlation matrix for the 5 outcomes
R <- read.table(header=TRUE, text = "
outcome  fatigue  mood  pain   qol sleep
fatigue     1.00  0.60  0.65  0.70  0.60
mood        0.60  1.00  0.55  0.75  0.60
pain        0.65  0.55  1.00  0.70  0.55
qol         0.70  0.75  0.70  1.00  0.60
sleep       0.60  0.60  0.55  0.60  1.00")
R <- as.matrix(R[,-1])
rownames(R) <- colnames(R)
R
#>         fatigue mood pain  qol sleep
#> fatigue    1.00 0.60 0.65 0.70  0.60
#> mood       0.60 1.00 0.55 0.75  0.60
#> pain       0.65 0.55 1.00 0.70  0.55
#> qol        0.70 0.75 0.70 1.00  0.60
#> sleep      0.60 0.60 0.55 0.60  1.00

### construct an approximate var-cov matrix of the SMD values accounting for
### the dependency in the estimates due to the use of shared control groups
### and for multiple outcomes measured in the same sample
V <- vcalc(vi, cluster=ref, type=outcome, rho=R,
           grp1=tgrp, grp2=cgrp, data=dat)
dat[dat$ref == 64,]
#> 
#>             study ref year       country female white mage duration        med jadad vantulder tgrp 
#> 61 Russell et al.  64 2008 United States   94.8  84.2   51       28 duloxetine     4         8  t21 
#> 62 Russell et al.  64 2008 United States   94.8  84.2   51       28 duloxetine     4         8  t21 
#> 63 Russell et al.  64 2008 United States   94.8  84.2   51       28 duloxetine     4         8  t21 
#> 64 Russell et al.  64 2008 United States   94.8  84.2   51       28 duloxetine     4         8  t22 
#> 65 Russell et al.  64 2008 United States   94.8  84.2   51       28 duloxetine     4         8  t22 
#> 66 Russell et al.  64 2008 United States   94.8  84.2   51       28 duloxetine     4         8  t22 
#> 67 Russell et al.  64 2008 United States   94.8  84.2   51       28 duloxetine     4         8  t23 
#> 68 Russell et al.  64 2008 United States   94.8  84.2   51       28 duloxetine     4         8  t23 
#> 69 Russell et al.  64 2008 United States   94.8  84.2   51       28 duloxetine     4         8  t23 
#>    cgrp outcome   type nti    mti  sdti nci    mci  sdci      yi     vi 
#> 61  c21    pain change  79  -2.22  2.49 144  -1.43  2.52 -0.3137 0.0198 
#> 62  c21 fatigue change  79  -1.79  3.91 144  -1.69  4.08 -0.0248 0.0196 
#> 63  c21     qol change  79 -14.77 16.71 144 -10.42 17.52 -0.2515 0.0197 
#> 64  c21    pain change 150  -1.98  2.57 144  -1.43  2.52 -0.2155 0.0137 
#> 65  c21 fatigue change 150  -1.83  4.16 144  -1.69  4.08 -0.0339 0.0136 
#> 66  c21     qol change 150 -12.28 17.64 144 -10.42 17.52 -0.1055 0.0136 
#> 67  c21    pain change 147  -2.26  2.55 144  -1.43  2.52 -0.3265 0.0139 
#> 68  c21 fatigue change 147  -2.12  4.00 144  -1.69  4.08 -0.1062 0.0138 
#> 69  c21     qol change 147 -13.86 17.10 144 -10.42 17.52 -0.1982 0.0138 
#> 
blsplit(V, dat$ref, cov2cor)[["64"]]
#> 
#>       1     2     3     4     5     6     7     8     9 
#> 1 1.000 0.650 0.700 0.500 0.325 0.350 0.500 0.325 0.350 
#> 2 0.650 1.000 0.700 0.325 0.500 0.350 0.325 0.500 0.350 
#> 3 0.700 0.700 1.000 0.350 0.350 0.500 0.350 0.350 0.500 
#> 4 0.500 0.325 0.350 1.000 0.650 0.700 0.500 0.325 0.350 
#> 5 0.325 0.500 0.350 0.650 1.000 0.700 0.325 0.500 0.350 
#> 6 0.350 0.350 0.500 0.700 0.700 1.000 0.350 0.350 0.500 
#> 7 0.500 0.325 0.350 0.500 0.325 0.350 1.000 0.650 0.700 
#> 8 0.325 0.500 0.350 0.325 0.500 0.350 0.650 1.000 0.700 
#> 9 0.350 0.350 0.500 0.350 0.350 0.500 0.700 0.700 1.000 
#> 

### fit a multivariate random-effects model allowing for different amounts
### of heterogeneity for the different outcomes
res <- rma.mv(yi, V, mods = ~ 0 + outcome,
              random = list(~ outcome | ref, ~ outcome | tgrp),
              struct="HCS", data=dat, digits=2)
res
#> 
#> Multivariate Meta-Analysis Model (k = 71; method: REML)
#> 
#> Variance Components:
#> 
#> outer factor: ref     (nlvls = 18)
#> inner factor: outcome (nlvls = 5)
#> 
#>            estim  sqrt  k.lvl  fixed    level 
#> tau^2.1     0.01  0.12     10     no  fatigue 
#> tau^2.2     0.00  0.02      8     no     mood 
#> tau^2.3     0.05  0.21     17     no     pain 
#> tau^2.4     0.02  0.14      7     no      qol 
#> tau^2.5     0.01  0.09     10     no    sleep 
#> rho         1.00                  no          
#> 
#> outer factor: tgrp    (nlvls = 24)
#> inner factor: outcome (nlvls = 5)
#> 
#>              estim  sqrt  k.lvl  fixed    level 
#> gamma^2.1     0.00  0.00     14     no  fatigue 
#> gamma^2.2     0.00  0.06     10     no     mood 
#> gamma^2.3     0.00  0.00     22     no     pain 
#> gamma^2.4     0.00  0.03     12     no      qol 
#> gamma^2.5     0.03  0.17     13     no    sleep 
#> phi          -1.00                  no          
#> 
#> Test for Residual Heterogeneity:
#> QE(df = 66) = 88.38, p-val = 0.03
#> 
#> Test of Moderators (coefficients 1:5):
#> QM(df = 5) = 40.81, p-val < .01
#> 
#> Model Results:
#> 
#>                 estimate    se   zval  pval  ci.lb  ci.ub      
#> outcomefatigue     -0.19  0.07  -2.89  <.01  -0.32  -0.06   ** 
#> outcomemood        -0.25  0.07  -3.44  <.01  -0.39  -0.11  *** 
#> outcomepain        -0.43  0.08  -5.50  <.01  -0.58  -0.28  *** 
#> outcomeqol         -0.36  0.07  -5.25  <.01  -0.49  -0.23  *** 
#> outcomesleep       -0.30  0.09  -3.39  <.01  -0.48  -0.13  *** 
#> 
#> ---
#> Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
#> 
predict(res, newmods=diag(5), tau2.levels=1:5, gamma2.levels=1:5)
#> 
#>    pred   se ci.lb ci.ub pi.lb pi.ub tau2.level gamma2.level 
#> 1 -0.19 0.07 -0.32 -0.06 -0.45  0.07    fatigue      fatigue 
#> 2 -0.25 0.07 -0.39 -0.11 -0.43 -0.06       mood         mood 
#> 3 -0.43 0.08 -0.58 -0.28 -0.87  0.01       pain         pain 
#> 4 -0.36 0.07 -0.49 -0.23 -0.68 -0.04        qol          qol 
#> 5 -0.30 0.09 -0.48 -0.13 -0.71  0.11      sleep        sleep 
#> 

### use cluster-robust inference methods
robust(res, cluster=ref, clubSandwich=TRUE)
#> 
#> Multivariate Meta-Analysis Model (k = 71; method: REML)
#> 
#> Variance Components:
#> 
#> outer factor: ref     (nlvls = 18)
#> inner factor: outcome (nlvls = 5)
#> 
#>            estim  sqrt  k.lvl  fixed    level 
#> tau^2.1     0.01  0.12     10     no  fatigue 
#> tau^2.2     0.00  0.02      8     no     mood 
#> tau^2.3     0.05  0.21     17     no     pain 
#> tau^2.4     0.02  0.14      7     no      qol 
#> tau^2.5     0.01  0.09     10     no    sleep 
#> rho         1.00                  no          
#> 
#> outer factor: tgrp    (nlvls = 24)
#> inner factor: outcome (nlvls = 5)
#> 
#>              estim  sqrt  k.lvl  fixed    level 
#> gamma^2.1     0.00  0.00     14     no  fatigue 
#> gamma^2.2     0.00  0.06     10     no     mood 
#> gamma^2.3     0.00  0.00     22     no     pain 
#> gamma^2.4     0.00  0.03     12     no      qol 
#> gamma^2.5     0.03  0.17     13     no    sleep 
#> phi          -1.00                  no          
#> 
#> Test for Residual Heterogeneity:
#> QE(df = 66) = 88.38, p-val = 0.03
#> 
#> Number of estimates:   71
#> Number of clusters:    18
#> Estimates per cluster: 1-10 (mean: 3.94, median: 3.5)
#> 
#> Test of Moderators (coefficients 1:5):¹
#> F(df1 = 5, df2 = 2.79) = 11.89, p-val = 0.04
#> 
#> Model Results:
#> 
#>                 estimate    se¹   tval¹     df¹  pval¹  ci.lb¹  ci.ub¹      
#> outcomefatigue     -0.19  0.06   -3.43    7.29   0.01   -0.32   -0.06     * 
#> outcomemood        -0.25  0.05   -4.64    4.42   <.01   -0.39   -0.10    ** 
#> outcomepain        -0.43  0.08   -5.63   13.94   <.01   -0.59   -0.27   *** 
#> outcomeqol         -0.36  0.07   -4.95    8.25   <.01   -0.53   -0.19    ** 
#> outcomesleep       -0.30  0.06   -5.45    7.27   <.01   -0.43   -0.17   *** 
#> 
#> ---
#> Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
#> 
#> 1) results based on cluster-robust inference (var-cov estimator: CR2,
#>    approx t/F-tests and confidence intervals, df: Satterthwaite approx)
#>