Psychotherapies for Depression

Meta-Analytic Database of Randomized Controlled Trials /

© The Metapsy Collaboration

Additional Information

This online meta-analysis tool allows to explore a simplified version of the “Depression Psychotherapy vs. Control Groups” dataset. It is part of the meta-analytic research domain (MARD) on psychotherapy for depression. The code used to simplify the data for this application can be downloaded here.



Meta-Analysis Results

This tab shows you the results of the meta-analysis conducted for your selected data. In the grey window below, you can switch from one panel to another to see various results, including the main effect size and heterogeneity, the forest plot, results of outlier analyses, publication bias analyses and moderator analyses.

By default, the web application automatically makes a few decisions concerning the analysis settings. These analysis settings can be seen below under "Analysis Settings". By default, the application uses a Random-Effects Pooling Model for your meta-analysis. This is nearly always the correct choice when one is analyzing data in mental health research. In addition, the Paule-Mandel estimator is used by default to calculate the between-study heterogeneity of your meta-analysis. However, when clicking on the dropdown menu "Pooling Model", you can see that there are various estimators available when assuming a Random-Effects (RE) model. Sometimes, the choice of the between-study heterogeneity estimator can have an impact on the pooled results, and not every estimator is optimal under all circumstances. If you want to learn more about this, you can consult Harrer, Cuijpers, Furukawa & Ebert, 2020. It is also possible to calculate effects using a Fixed-Effect Model; but this model should only be used if you have good reasons for applying it.

Under "Analyzed Moderators", the moderating variables which are currently inspected in meta-regression/subgroup analyses in the "Moderator Analysis" tab are shown. By default, the publication year is used for a meta-regression on your selected data, and the country/region of a study is used as a subgroup analysis. You can easily add more moderator analyses by clicking on the white box. A dropdown will then appear, showing you more variables which are available. You can then add those variables by clicking on them. It is also possible to remove variables. To do that, again click on the white box and use the backspace ← key.

By default, the application also uses Knapp-Hartung adjustments to calculate the confidence interval for your meta-analysis result. It is possible to disable this method by unchecking the "Use Knapp-Hartung Adjustments" checkbox. You can learn more about this method in Harrer, Cuijpers, Furukawa & Ebert, 2020.

Finally, after you have completed the reconfiguration of your meta-analysis settings, simply click the "Re-run Meta-Analysis" button. This will reculate the results of your meta-analysis, using the new settings you have provided. Please note that the reanalysis may take some time before it is finished.

Analysis Settings





Main Results

 
Overall Effect (Hedges' g)

 
 
 
 
 
Between-Study Heterogeneity

 
 
 
It may take a few seconds until the forest plot has been generated.


It may take a few seconds until the drapery plot has been generated.
Drapery plots allow to assess how the confidence and prediction interval of a meta-analysis changes with different significance thresholds. The blue line signifies the p-value function of the pooled effect; the funnel shaded in light blue signifies the prediction region for a future study. For a more detailed explanation, see Rücker & Schwarzer, 2020.


Overall Effect (outliers removed)

Heterogeneity:

 

Removed as outliers:

 

As a sensitivity analysis, it can be helpful to identify potentially outlying studies and how they might affect the pooled result. This is particularly helpful when the heterogeneity of a meta-analysis is high. In this tab, the pooled effect without outlying studies is presented. Especially if the pooled effect without outliers has a lower heterogeneity than the original one, it can be helpful to also take this estimate into account for further decision making. If no outliers are detected, the results in this tab will be identical to the ones in the main analysis.
Baujat Plot
 
It may take a few seconds until the plots have been generated.
For an explanation of the publication bias methods described here, see Harrer, Cuijpers, Furukawa & Ebert, 2020.
Funnel Plot Asymmetry
P-Curve
Please note that a p-curve will only be generated when at least k=3 significant effect sizes were entered into the meta-analysis.


 
Meta-Regression





Subgroup Analysis

 

About the Depression Psychotherapy Database Web App

This website was developed by researchers at the Vrije Universiteit Amsterdam, The Netherlands, the Friedrich-Alexander-Universität Erlangen-Nürnberg, Germany, and the Technical University Munich, Germany. The data are based on a meta-analytic database that was developed by researchers at the Vrije Universiteit Amsterdam in the past 14 years.

This project, led by Prof. Pim Cuijpers and Dr. Eirini Karyotaki, has resulted in a long series of published studies in peer-reviewed journals. Researchers from the Friedrich-Alexander-Universität in Germany, led by Mathias Harrer, MSc and Dr. David Ebert (Technical University Munich), have developed the web application and the automated analyses that are conducted online.

 

Additional Information

More information about the METAPSY project can be found in the following documents:

 

About the METAPSY Web Application

This web application serves as an interface to the METAPSY meta-analytic database. The application uses a Shiny server instance to access the database, enable data downloads, and handle computations using state-of-the-art meta-analytic techniques.

The meta (Balduzzi, Rücker & Schwarzer, 2019) and dmetar (Harrer, Cuijpers, Furukawa & Ebert, 2020) R packages are used to perform the meta-analyses.

The metagen function is used internally to perform the meta-analytic pooling. By default, the Paule-Mandel estimator (DerSimonian & Kacker, 2007) is used to estimate the between-study heterogeneity/variance τ2 in a random-effects model; Restricted Maximum-Likelihood (REML) is used for meta-regressions. To calculate the Number Needed to Treat (NNT), the method by Furukawa and Leucht (Furukawa & Leucht, 2011) is used, assuming Control Event Rate (CER) of 0.19, which is derived from Cuijpers et al., 2014. For subgroup analyses, the subgroup.analysis.mixed.effects function is used, implementing a mixed-effect model for which results within subgroups are pooled using a random-effects model (inheriting the τ2-estimator specified for the overall analysis), and results between subgroups are compared assuming a fixed-effects model.

To generate forest plots, the forest function in meta is used.

Outlier selection is conducted using the find.outliers function in dmetar. The function implements a simple outlier removal algorithm where all results for which the 95% confidence interval is outside the 95% confidence interval of the pooled effect are removed as outliers. Due to high computational costs, sensitivity analyses based on the “Leave-One-Out” paradigm are not conducted for large meta-analyses (k>50). For smaller meta-analyses, a Baujat plot (Baujat et al., 2002) is created using the baujat function in meta.

Publication bias analyses are conducted using the eggers.test function in dmetar (which is a wrapper for the metabias function in meta). A P-curve is created using the pcurve function in dmetar. Please note that several prerequisites should be considered before P-curves can be interpreted (Simonsohn et al., 2014).

For the risk of bias overview, the rob.summary function in dmetar is used.

 

 

The metapsyData Package

DOI GitHub GitHub license

 

The metapsyData package allows you to access the meta-analytic psychotherapy databases in R. To install the package, use the following code:

if (!require("devtools"))
  install.packages("devtools")

devtools::install_github("metapsy-project/metapsyData")

The metapsyData package allows to access the Metapsy meta-analytic psychotherapy databases direct in your R environment. Once installed, simply run the getData() function to save the data locally. The documentation of the package is hosted here.

Here is an example:

library(metapsyData)
library(dplyr)

d <- getData("depression-psyctr")
glimpse(d$data)
#> Rows: 826
#> Columns: 79
#> $ study                     <chr> "Aagaard, 2017", "Abas, 2018", "Abas, 2018"…
#> $ condition_arm1            <chr> "cbt", "pst", "pst", "other psy", "3rd", "p…
#> $ condition_arm2            <chr> "cau", "cau", "cau", "cau", "cau", "other c…
#> $ multi_arm1                <chr> NA, NA, NA, "other psy (smt)", "3rd wave (m…
#> $ multi_arm2                <chr> NA, NA, NA, "cau", "cau", NA, "cau", "other…
#> $ .g                        <dbl> 0.0000000, 0.7104178, 0.5516490, 1.7788677,…
#> $ .g_se                     <dbl> 0.23145502, 0.39134509, 0.38646463, 0.43479…
#> $ outcome_type              <chr> "msd", "msd", "msd", "msd", "msd", "respons…
#> $ instrument                <chr> "bdi-1", "phq-9", "dssq", "bdi-1", "bdi-1",…
#> $ rating                    <chr> "self-report", "self-report", "self-report"…
#> $ mean_arm1                 <dbl> 17.50, 3.10, 3.80, 14.93, 16.26, NA, 13.60,…
#> $ sd_arm1                   <dbl> 12.60, 3.10, 3.30, 4.29, 3.83, NA, 5.14, 5.…
#> $ n_arm1                    <dbl> 40, 13, 13, 15, 15, NA, 30, 30, 30, 61, 22,…
#> $ mean_arm2                 <dbl> 17.50, 5.70, 5.50, 23.33, 23.33, NA, 34.10,…
#> $ sd_arm2                   <dbl> 12.40, 3.90, 2.70, 4.88, 4.88, NA, 8.76, 9.…
#> $ n_arm2                    <dbl> 35, 15, 15, 15, 15, NA, 30, 30, 30, 41, 16,…
#> $ mean_change_arm1          <dbl> NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA,…
#> $ mean_change_arm2          <dbl> NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA,…
#> $ sd_change_arm1            <dbl> NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA,…
#> $ sd_change_arm2            <dbl> NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA,…
#> $ n_change_arm1             <dbl> NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA,…
#> $ n_change_arm2             <dbl> NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA,…
#> $ dich_paper                <chr> NA, NA, NA, NA, NA, "Response (50% decline …
#> $ event_arm1                <dbl> NA, NA, NA, NA, NA, 28, NA, NA, NA, NA, NA,…
#> $ event_arm2                <dbl> NA, NA, NA, NA, NA, 37, NA, NA, NA, NA, NA,…
#> $ totaln_arm1               <dbl> NA, NA, NA, NA, NA, 84, NA, NA, 30, NA, 37,…
#> $ totaln_arm2               <dbl> NA, NA, NA, NA, NA, 87, NA, NA, 30, NA, 36,…
#> $ precalc_g                 <dbl> NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA,…
#> $ precalc_g_se              <dbl> NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA,…
#> $ precalc_log_rr            <dbl> NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA,…
#> $ precalc_log_rr_se         <dbl> NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA,…
#> $ other_stat                <dbl> NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA,…
#> $ baseline_m_arm1           <dbl> 21.50, 13.80, 8.50, 20.20, 24.26, NA, 39.87…
#> $ baseline_sd_arm1          <dbl> 14.10, 2.20, 1.90, 5.12, 5.12, NA, 7.90, 7.…
#> $ baseline_n_arm1           <dbl> 42, 14, 14, 15, 15, NA, 30, 30, 30, 61, 27,…
#> $ baseline_m_arm2           <dbl> 24.10, 9.20, 9.30, 22.00, 22.00, NA, 30.93,…
#> $ baseline_sd_arm2          <dbl> 12.30, 3.30, 1.20, 5.53, 5.53, NA, 7.07, 7.…
#> $ baseline_n_arm2           <dbl> 38, 18, 18, 15, 15, NA, 30, 30, 30, 41, 27,…
#> $ year                      <dbl> 2017, 2018, 2018, 2016, 2016, 2016, 2009, 2…
#> $ time_weeks                <dbl> 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0…
#> $ time_weeks_needs_cleaning <chr> "2 year", NA, NA, "2 month", "2 month", "6 …
#> $ time                      <chr> "post", "post", "post", "post", "post", "po…
#> $ comorbid_mental           <chr> "n", "n", "n", "n", "n", "n", "n", "n", "n"…
#> $ format                    <chr> "grp", "ind", "ind", "grp", "ind", "ind", "…
#> $ format_details            <chr> "grp", "ind", "ind", "grp", "ind", "ind", "…
#> $ n_sessions_arm1           <dbl> 8, 5, 5, 8, 8, 11, 5, 5, 5, 12, 9, 11, 11, …
#> $ country                   <chr> "eu", "oth", "oth", "oth", "oth", "us", "eu…
#> $ age_group                 <chr> "adul", "adul", "adul", "adul", "adul", "ol…
#> $ mean_age                  <dbl> 48.00, 37.80, 37.80, 36.49, 36.49, 74.90, 7…
#> $ percent_women             <dbl> 0.71, 0.66, 0.66, 1.00, 1.00, NA, 0.79, 0.7…
#> $ recruitment               <chr> "clin", "oth", "oth", "oth", "oth", "oth", …
#> $ diagnosis                 <chr> "mdd", "cut", "cut", "sub", "sub", "mdd", "…
#> $ target_group              <chr> "adul", "med", "med", "med", "med", "med", …
#> $ sg                        <dbl> 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1…
#> $ ac                        <dbl> 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1…
#> $ ba                        <chr> "sr", "sr", "sr", "sr", "sr", "1", "1", "1"…
#> $ itt                       <dbl> 0, 1, 1, 0, 0, 1, 0, 0, 0, 0, 1, 1, 1, 1, 0…
#> $ rob                       <dbl> 3, 4, 4, 3, 3, 3, 1, 1, 1, 1, 2, 3, 3, 3, 3…
#> $ condition_legacy_arm1     <chr> "ct-based psychoeducation+cau", "pst", "pst…
#> $ condition_legacy_arm2     <chr> "cau", "cau", "cau", "cau", "cau", "cm", NA…
#> $ number_instruments        <dbl> 1, 2, 2, 1, 1, 1, 1, 1, 1, 1, 1, 4, 4, 4, 2…
#> $ number_arms               <dbl> 2, 2, 2, 3, 3, 2, 3, 3, 2, 2, 2, 2, 2, 2, 2…
#> $ is_multiarm               <dbl> 0, 0, 0, 1, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0…
#> $ outcome_rank              <dbl> 2, 4, 99, 2, 2, 1, 5, 5, 10, 2, 10, 2, 10, …
#> $ primary                   <dbl> 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 1, 1…
#> $ .log_rr                   <dbl> NA, NA, NA, NA, NA, -0.2436221, NA, NA, NA,…
#> $ .log_rr_se                <dbl> NA, NA, NA, NA, NA, 0.1983489, NA, NA, NA, …
#> $ .event_arm1               <dbl> NA, NA, NA, NA, NA, 28, NA, NA, NA, NA, NA,…
#> $ .event_arm2               <dbl> NA, NA, NA, NA, NA, 37, NA, NA, NA, NA, NA,…
#> $ .totaln_arm1              <dbl> NA, NA, NA, NA, NA, 84, NA, NA, NA, NA, NA,…
#> $ .totaln_arm2              <dbl> NA, NA, NA, NA, NA, 87, NA, NA, NA, NA, NA,…
#> $ full_ref                  <chr> "Aagaard, J., Foldager, L., Makki, A., Hans…
#> $ doi                       <dbl> 101080, 101007, 101007, 101177, 101177, 101…
#> $ abstract                  <chr> "AIMS: This randomized study tests the effi…
#> $ title                     <chr> "The efficacy of psychoeducation on recurre…
#> $ url                       <chr> "http://onlinelibrary.wiley.com/o/cochrane/…
#> $ journal                   <chr> "Nordic journal of psychiatry", "AIDS and B…
#> $ id_study                  <chr> "Aagaard, 2017", "Abas, 2018", "Abas, 2018"…
#> $ .id                       <chr> "Aagaard_2017_cbt_cau_NA_NA_msd_bdi-1_self-…

The interactive Metapsy web application (metapsy.org) uses metapsyData in the background.

The raw data files can be accessed in the associated GitHub repository under data. To search for available databases in metapsyData, run the listData() function.

 

Citation

You can run citation("metapsyData") to retrieve the latest citation.