Psychotherapies for Generalized Anxiety Disorder
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 “Generalized Anxiety Disorder: Psychotherapy vs. Control” dataset. The code used to simplify the data for this application can be downloaded here.
This database is maintained by a researcher team lead by Davide Papola (Harvard Medical School, University of Verona).
Outcome Selection
In the tab "Select outcome" you can decide which of our three outcome variables you are interested in: generalized anxiety disorder (GAD) symptoms, anxiety symptoms or worrying.
Not all studies in our database report all of these outcome variables. Once you have selected in which outcome you are interested, only the studies that report on this outcome will be shown in the table on this page. All the filters that you select in this sidebar will also only affect those studies. You can always go back to "Select Outcome" to select another outcome.
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 Restricted Maximum-Likelihood 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 Psychotherapies for Generalized Anxiety Disorder Web App
This application 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 maintained by a researcher team that is lead by Davide Papola (Harvard Medical School, University of Verona).
More details about the development of this database can be read in a published paper.
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 Restricted Maximum-Likelihood estimator (Viechtbauer, 2005) is used to estimate the between-study heterogeneity/variance τ2 in a random-effects model; REML is also 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 also hosted here.
Here is an example:
library(metapsyData)
library(dplyr)
d <- getData("gad-psyctr")
glimpse(d$data)
#> Rows: 126
#> Columns: 78
#> $ study <chr> "Alavi, 2020", "Andersson, 2012", "Andersson, 2012"…
#> $ condition_arm1 <chr> "cbt", "cbt", "dyn", "cbt", "dyn", "cbt", "dyn", "c…
#> $ condition_arm2 <chr> "cau", "wl", "wl", "wl", "wl", "wl", "wl", "other c…
#> $ multi_arm1 <chr> NA, "cbt", "dyn", "cbt", "dyn", "cbt", "dyn", NA, N…
#> $ multi_arm2 <chr> NA, "wl", "wl", "wl", "wl", "wl", "wl", NA, NA, "wl…
#> $ descr_ig <chr> "Computer-based CBT presented through Microsoft Pow…
#> $ descr_cg <chr> "The control group completed BAIs at the same timep…
#> $ comparison <chr> "PSYvsCTR", "PSYvsCTR", "PSYvsCTR", "PSYvsCTR", "PS…
#> $ outcome_type <chr> "msd", "msd", "msd", "msd", "msd", "msd", "msd", "m…
#> $ sample <chr> "co", "co", "co", "co", "co", "co", "co", "co", "co…
#> $ outcome_domain <chr> "gen anx", "worry", "worry", "GAD", "GAD", "gen anx…
#> $ instrument <chr> "BAI", "PSWQ", "PSWQ", "GAD-Q-IV", "GAD-Q-IV", "BAI…
#> $ rating <chr> "sr", "sr", "sr", "sr", "sr", "sr", "sr", "sr", "sr…
#> $ time <chr> "post", "post", "post", "post", "post", "post", "po…
#> $ time_weeks <dbl> 12, 8, 8, 8, 8, 8, 8, 8, 8, 15, 15, 15, 15, 15, 15,…
#> $ mean_arm1 <dbl> 25.38, 60.78, 61.88, 8.53, 8.34, 15.09, 15.88, 11.4…
#> $ sd_arm1 <dbl> 7.03, 9.83, 7.73, 2.37, 3.31, 6.99, 8.87, 3.30, 3.3…
#> $ n_arm1 <dbl> 36, 23, 26, 23, 26, 23, 26, 7, 7, 13, 10, 11, 13, 1…
#> $ mean_arm2 <dbl> 37.10, 62.88, 62.88, 8.52, 8.52, 19.52, 19.52, 9.86…
#> $ sd_arm2 <dbl> 6.81, 9.39, 9.39, 3.70, 3.70, 10.34, 10.34, 5.03, 7…
#> $ n_arm2 <dbl> 38, 26, 26, 26, 26, 26, 26, 7, 6, 10, 10, 10, 10, 1…
#> $ dich <chr> NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA,…
#> $ dich_type <dbl> NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA,…
#> $ event_arm1 <dbl> NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA,…
#> $ event_arm2 <dbl> NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA,…
#> $ totaln_arm1 <dbl> 40, 27, 27, 27, 27, 27, 27, 7, 7, 17, 16, 12, 17, 1…
#> $ totaln_arm2 <dbl> 40, 27, 27, 27, 27, 27, 27, 7, 7, 20, 20, 20, 20, 2…
#> $ dropout_n_arm1 <dbl> 4, 4, 1, 4, 1, 4, 1, 0, 0, 4, 6, 1, 4, 6, 1, 4, 6, …
#> $ dropout_n_arm2 <dbl> 2, 1, 1, 1, 1, 1, 1, 0, 1, 10, 10, 10, 10, 10, 10, …
#> $ mean_change_arm1 <dbl> NA, NA, 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, NA, NA,…
#> $ sd_change_arm1 <dbl> NA, NA, 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, NA, NA,…
#> $ n_change_arm1 <dbl> NA, NA, 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, NA, NA,…
#> $ other_statistic <dbl> NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA,…
#> $ precalc_g <dbl> NA, NA, 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, NA, NA,…
#> $ precalc_log_rr <dbl> NA, NA, 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, NA, NA,…
#> $ year <dbl> 2020, 2012, 2012, 2012, 2012, 2012, 2012, 2007, 200…
#> $ comorbid_mental <chr> "n", "n", "n", "n", "n", "n", "n", "n", "n", "n", "…
#> $ format <chr> "gsh", "gsh", "gsh", "gsh", "gsh", "gsh", "gsh", "i…
#> $ format_details <chr> "gsh", "gsh", "gsh", "gsh", "gsh", "gsh", "gsh", "i…
#> $ n_sessions_ig <chr> "12", "8", "8", "8", "8", "8", "8", "8", "8", "15",…
#> $ country <chr> "oth", "eu", "eu", "eu", "eu", "eu", "eu", "oth", "…
#> $ age_group <chr> "adul", "adul", "adul", "adul", "adul", "adul", "ad…
#> $ mean_age <chr> "31.1", "40.130000000000003", "40.130000000000003",…
#> $ percent_women <chr> "58.75", "77.77", "77.77", "77.77", "77.77", "77.77…
#> $ recruitment <chr> "com", "com", "com", "com", "com", "com", "com", "c…
#> $ diagnosis <chr> "gad", "gad", "gad", "gad", "gad", "gad", "gad", "g…
#> $ target_group <chr> "adul", "adul", "adul", "adul", "adul", "adul", "ad…
#> $ d1 <chr> "some concerns", "low risk", "low risk", "low risk"…
#> $ d2 <chr> "some concerns", "high risk", "high risk", "high ri…
#> $ d3 <chr> "low risk", "some concerns", "some concerns", "some…
#> $ d4 <chr> "low risk", "low risk", "low risk", "low risk", "lo…
#> $ d5 <chr> "some concerns", "low risk", "low risk", "low risk"…
#> $ ROB <chr> "some concerns", "high risk", "high risk", "high ri…
#> $ itt <dbl> 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, …
#> $ no.arms <dbl> 2, 3, 3, 3, 3, 3, 3, 2, 2, 4, 4, 4, 4, 4, 4, 4, 4, …
#> $ is.multiarm <dbl> 0, 1, 1, 1, 1, 1, 1, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, …
#> $ full_ref <chr> "Alavi, N., & Hirji, A. (2020). The Efficacy of Pow…
#> $ rob <dbl> 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, …
#> $ .id <chr> "Alavi_2020_msd_BAI_post_12_sr_cbt_cau_NA_NA", "And…
#> $ .g <dbl> -1.676466576, -0.215274979, -0.114524183, 0.0031254…
#> $ .g_se <dbl> 0.2710849, 0.2871032, 0.2775844, 0.2862515, 0.27739…
#> $ .log_rr <dbl> NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA,…
#> $ .log_rr_se <dbl> NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA,…
#> $ .event_arm1 <dbl> NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA,…
#> $ .event_arm2 <dbl> NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA,…
#> $ .totaln_arm1 <dbl> NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA,…
#> $ .totaln_arm2 <dbl> NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA,…
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 preferred citation.