Results from 76 studies examining the effectiveness of cognitive behavioral therapy (CBT) for depression in adults.

dat.lopez2019

Format

The data frame contains the following columns:

studycharacter(first) author and year of study
treatmentcharactertreatment provided (see ‘Details’)
scalecharacterscale used to measure depression symptoms
nnumericgroup size
diffnumericstandardized mean change
senumericcorresponding standard error
groupnumerictype of therapy (0 = individual, 1 = group therapy)
tailorednumericwhether the intervention was tailored to each patient (0 = no, 1 = yes)
sessionsnumericnumber of sessions
lengthnumericaverage session length (in minutes)
intensitynumericproduct of sessions and length
multinumericintervention included multimedia elements (0 = no, 1 = yes)
cognumericintervention included cognitive techniques (0 = no, 1 = yes)
banumericintervention included behavioral activation (0 = no, 1 = yes)
psednumericintervention included psychoeducation (0 = no, 1 = yes)
homenumericintervention included homework (0 = no, 1 = yes)
probnumericintervention included problem solving (0 = no, 1 = yes)
socnumericintervention included social skills training (0 = no, 1 = yes)
relaxnumericintervention included relaxation (0 = no, 1 = yes)
goalnumericintervention included goal setting (0 = no, 1 = yes)
finalnumericintervention included a final session (0 = no, 1 = yes)
mindnumericintervention included mindfulness (0 = no, 1 = yes)
actnumericintervention included acceptance and commitment therapy (0 = no, 1 = yes)

Details

The dataset includes the results from 76 studies examining the effectiveness of cognitive behavioral therapy (CBT) for treating depression in adults. Studies included two or more of the following treatments/conditions:

  1. treatment as usual (TAU),

  2. no treatment,

  3. wait list,

  4. psychological or attention placebo,

  5. face-to-face CBT,

  6. multimedia CBT,

  7. hybrid CBT (i.e., multimedia CBT with one or more face-to-face sessions).

Multimedia CBT was defined as CBT delivered via self-help books, audio/video recordings, telephone, computer programs, apps, e-mail, or text messages.

Variable diff is the standardized mean change within each group, with negative values indicating a decrease in depression symptoms.

Source

Personal communication.

References

López-López, J. A., Davies, S. R., Caldwell, D. M., Churchill, R., Peters, T. J., Tallon, D., Dawson, S., Wu, Q., Li, J., Taylor, A., Lewis, G., Kessler, D. S., Wiles, N., & Welton, N. J. (2019). The process and delivery of CBT for depression in adults: A systematic review and network meta-analysis. Psychological Medicine, 49(12), 1937–1947. https://doi.org/10.1017/S003329171900120X

Concepts

psychiatry, standardized mean changes, network meta-analysis

Examples

### copy data into 'dat' and examine data
dat <- dat.lopez2019
dat[1:10,1:6]
#>                 study      treatment scale  n    diff     se
#> 1    Andersson (2005)        Placebo   BDI 49 -0.2140 0.0208
#> 2    Andersson (2005) Multimedia CBT   BDI 36 -1.5529 0.0425
#> 3        Arean (1993)      Wait list   BDI 20 -0.4032 0.0531
#> 4        Arean (1993)        F2F CBT   BDI 19 -1.5505 0.0831
#> 5  Beckenridge (1985)      Wait list   BDI 19  0.2131 0.0542
#> 6  Beckenridge (1985)        F2F CBT   BDI 17 -1.5438 0.0934
#> 7       Berger (2011)      Wait list   BDI 22 -0.1787 0.0465
#> 8       Berger (2011) Multimedia CBT   BDI 22 -0.8963 0.0557
#> 9       Berger (2011) Multimedia CBT   BDI 25 -1.5130 0.0613
#> 10     Besyner (1979)      Wait list   BDI 11 -0.2115 0.0952

### load metafor package
library(metafor)

### create network graph ('igraph' package must be installed)
library(igraph, warn.conflicts=FALSE)
pairs <- data.frame(do.call(rbind,
   sapply(split(dat$treatment, dat$study), function(x) t(combn(x,2)))), stringsAsFactors=FALSE)
pairs$X1 <- factor(pairs$X1, levels=sort(unique(dat$treatment)))
pairs$X2 <- factor(pairs$X2, levels=sort(unique(dat$treatment)))
tab <- table(pairs[,1], pairs[,2])
tab # adjacency matrix
#>                 
#>                  F2F CBT Hybrid CBT Multimedia CBT No treatment Placebo TAU Wait list
#>   F2F CBT             17          3              5            0       0   0         0
#>   Hybrid CBT           0          0              0            0       0   0         0
#>   Multimedia CBT       0          0              5            0       0   0         0
#>   No treatment         6          0              0            0       0   0         0
#>   Placebo             10          1              1            0       0   0         0
#>   TAU                 16          3             11            0       1   0         0
#>   Wait list           31          1             10            0       0   0         0
g <- graph_from_adjacency_matrix(tab, mode = "plus", weighted=TRUE, diag=FALSE)
plot(g, edge.curved=FALSE, edge.width=E(g)$weight/2,
     layout=layout_in_circle(g, order=c("Wait list", "No treatment", "TAU", "Multimedia CBT",
                                        "Hybrid CBT", "F2F CBT", "Placebo")),
     vertex.size=45, vertex.color="lightgray", vertex.label.color="black", vertex.label.font=2)


### restructure data into wide format
dat <- to.wide(dat, study="study", grp="treatment", ref="TAU",
               grpvars=c("diff","se","n"), postfix=c("1","2"))

### compute contrasts between treatment pairs and corresponding sampling variances
dat$yi <- with(dat, diff1 - diff2)
dat$vi <- with(dat, se1^2 + se2^2)

### calculate the variance-covariance matrix for multitreatment studies
calc.v <- function(x) {
   v <- matrix(x$se2[1]^2, nrow=nrow(x), ncol=nrow(x))
   diag(v) <- x$vi
   v
}
V <- bldiag(lapply(split(dat, dat$study), calc.v))

### add contrast matrix to the dataset
dat <- contrmat(dat, grp1="treatment1", grp2="treatment2")

### network meta-analysis using a contrast-based random-effects model
### by setting rho=1/2, tau^2 reflects the amount of heterogeneity for all treatment comparisons
### the treatment left out (TAU) becomes the reference level for the treatment comparisons
res <- rma.mv(yi, V, data=dat,
         mods = ~ 0 + No.treatment + Wait.list + Placebo + F2F.CBT + Hybrid.CBT + Multimedia.CBT,
         random = ~ comp | study, rho=1/2)
res
#> 
#> Multivariate Meta-Analysis Model (k = 96; method: REML)
#> 
#> Variance Components:
#> 
#> outer factor: study (nlvls = 76)
#> inner factor: comp  (nlvls = 14)
#> 
#>             estim    sqrt  fixed 
#> tau^2      1.6262  1.2752     no 
#> rho        0.5000            yes 
#> 
#> Test for Residual Heterogeneity:
#> QE(df = 90) = 18276.4524, p-val < .0001
#> 
#> Test of Moderators (coefficients 1:6):
#> QM(df = 6) = 74.8404, p-val < .0001
#> 
#> Model Results:
#> 
#>                 estimate      se     zval    pval    ci.lb    ci.ub      
#> No.treatment      0.1975  0.5905   0.3344  0.7381  -0.9599   1.3548      
#> Wait.list         0.7030  0.3471   2.0253  0.0428   0.0227   1.3834    * 
#> Placebo          -0.3699  0.4623  -0.8002  0.4236  -1.2760   0.5362      
#> F2F.CBT          -1.1177  0.2730  -4.0943  <.0001  -1.6527  -0.5826  *** 
#> Hybrid.CBT       -1.0781  0.5190  -2.0775  0.0378  -2.0953  -0.0610    * 
#> Multimedia.CBT   -0.6017  0.3399  -1.7700  0.0767  -1.2679   0.0646    . 
#> 
#> ---
#> Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
#> 

### forest plot of the contrast estimates (treatments versus TAU)
forest(coef(res), diag(vcov(res)), slab=sub(".", " ", names(coef(res)), fixed=TRUE),
       xlim=c(-5,5), alim=c(-3,3), psize=1, header="Treatment", top=2,
       xlab="Difference in Standardized Mean Change (compared to TAU)")


### fit random inconsistency effects model (might have to switch optimizer to get convergence)
res <- rma.mv(yi, V, data=dat,
         mods = ~ 0 + No.treatment + Wait.list + Placebo + F2F.CBT + Hybrid.CBT + Multimedia.CBT,
         random = list(~ comp | study, ~ comp | design), rho=1/2, phi=1/2,
         control=list(optimizer="BFGS"))
res
#> 
#> Multivariate Meta-Analysis Model (k = 96; method: REML)
#> 
#> Variance Components:
#> 
#> outer factor: study (nlvls = 76)
#> inner factor: comp  (nlvls = 14)
#> 
#>             estim    sqrt  fixed 
#> tau^2      1.6262  1.2752     no 
#> rho        0.5000            yes 
#> 
#> outer factor: design (nlvls = 20)
#> inner factor: comp   (nlvls = 14)
#> 
#>             estim    sqrt  fixed 
#> gamma^2    0.0000  0.0054     no 
#> phi        0.5000            yes 
#> 
#> Test for Residual Heterogeneity:
#> QE(df = 90) = 18276.4524, p-val < .0001
#> 
#> Test of Moderators (coefficients 1:6):
#> QM(df = 6) = 74.8281, p-val < .0001
#> 
#> Model Results:
#> 
#>                 estimate      se     zval    pval    ci.lb    ci.ub      
#> No.treatment      0.1975  0.5905   0.3344  0.7380  -0.9599   1.3549      
#> Wait.list         0.7030  0.3471   2.0252  0.0429   0.0226   1.3834    * 
#> Placebo          -0.3699  0.4623  -0.8000  0.4237  -1.2760   0.5362      
#> F2F.CBT          -1.1177  0.2730  -4.0938  <.0001  -1.6528  -0.5826  *** 
#> Hybrid.CBT       -1.0781  0.5190  -2.0774  0.0378  -2.0953  -0.0610    * 
#> Multimedia.CBT   -0.6017  0.3399  -1.7700  0.0767  -1.2680   0.0646    . 
#> 
#> ---
#> Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
#>