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
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
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.
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:
- The full protocol of the METAPSY project ↗
- The search strings that were used for the searches in bibliographic databases ↗
- Description of the variables that were extracted from the included randomized trials ↗
- Definitions of types of psychotherapies that are included in the METAPSY database ↗
- A general manual for doing meta-analyses (free e-book) ↗
- The METAPSY database flowchart ↗
- References of the 661 studies in the METAPSY database ↗
- The depression database 1 January, 2019 (categorisation of all included studies) ↗
- The data on the included studies comparing psychotherapy with control conditions, including the effect sizes ↗
- Published meta-analyses using the METAPSY database ↗
- A paper summarizing main results of the METAPSY database ↗
- Published 'individual participant data' meta-analyses, based on the METAPSY database ↗
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
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.