---
title: "Network Meta-Analysis of Glutathione Measurements in Schizophrenia Spectrum Disorders"
author: "Danilo Assis Pereira, Ph.D."
date: "January 28, 2025"
output:
html_document:
toc: true
toc_depth: 3
code_folding: "show"
---
# Load required packages
library(netmeta)
library(meta)
library(dplyr)
library(tidyr)
# Create dataset for NMA focusing on positive symptoms with unique study IDs
nma_data <- tibble(
study = c(
# Imaging
"Matsuzawa 2008_img", "Reyes-Madrigal 2019_img", "Iwata 2021_img",
"Coughlin 2021_img", "Lesh 2021_img", "Ravanfar 2022_img",
# GSHt
"Raffa 2011_gsht", "Tsai 2013_gsht", "Nucifora 2017_gsht",
"Hendouei 2018a_gsht", "Hendouei 2018b_gsht", "Hendouei 2018c_gsht",
"Chien 2020a_gsht", "Chien 2020b_gsht", "Coughlin 2021_gsht",
"Gares-Caballer 2022_gsht", "Lin 2023a_gsht", "Lin 2023b_gsht",
"Fathy 2015_gsht", "Kizilpinar 2023_gsht",
# GSHr
"Raffa 2011_gshr", "Guidara 2020_gshr", "Cruz 2021_gshr",
"Piatoikina 2023_gshr", "Altuntas 2000_gshr",
# GSSG
"Raffa 2011_gssg", "Tao 2020_gssg"
),
treatment = c(
rep("Imaging", 6),
rep("GSHt", 14),
rep("GSHr", 5),
rep("GSSG", 2)
),
correlation = c(
# Imaging correlations
-0.43, 0.96, -0.08, 0.14, -0.266, -0.348,
# GSHt correlations
0.5, -0.304, -0.359, -0.1, -0.2, 0.2,
0.03, 0.22, -0.21, -0.06, 0.078, 0.071,
0.316, -0.139,
# GSHr correlations
0.51, -0.147, 0.082, 0.11, -0.18,
# GSSG correlations
0.16, 0.119
),
n = c(
# Imaging sample sizes
20, 10, 67, 16, 33, 12,
# GSHt sample sizes
23, 41, 51, 34, 34, 32, 43, 19, 24, 30, 92, 219, 30, 26,
# GSHr sample sizes
23, 66, 85, 125, 48,
# GSSG sample sizes
23, 90
)
) %>%
# Calculate effect sizes and standard errors
mutate(
TE = atanh(correlation), # Fisher's Z transformation
seTE = sqrt(1/(n - 3)), # Standard error
treat1 = treatment,
treat2 = "control"
) %>%
# Remove any rows with NA values (if any)
filter(!is.na(TE), !is.na(seTE))
# Perform Network Meta-Analysis
net <- netmeta(
TE = TE,
seTE = seTE,
treat1 = treat1,
treat2 = treat2,
studlab = study,
data = nma_data,
sm = "SMD",
fixed = FALSE,
random = TRUE,
reference.group = "control"
)
# Print summary
print(summary(net))
## Original data:
##
## treat1 treat2 TE seTE
## Matsuzawa 2008_img control Imaging 0.4599 0.2425
## Reyes-Madrigal 2019_img control Imaging -1.9459 0.3780
## Iwata 2021_img control Imaging 0.0802 0.1250
## Coughlin 2021_img control Imaging -0.1409 0.2774
## Lesh 2021_img control Imaging 0.2726 0.1826
## Ravanfar 2022_img control Imaging 0.3632 0.3333
## Raffa 2011_gsht control GSHt -0.5493 0.2236
## Tsai 2013_gsht control GSHt 0.3139 0.1622
## Nucifora 2017_gsht control GSHt 0.3757 0.1443
## Hendouei 2018a_gsht control GSHt 0.1003 0.1796
## Hendouei 2018b_gsht control GSHt 0.2027 0.1796
## Hendouei 2018c_gsht control GSHt -0.2027 0.1857
## Chien 2020a_gsht control GSHt -0.0300 0.1581
## Chien 2020b_gsht control GSHt -0.2237 0.2500
## Coughlin 2021_gsht control GSHt 0.2132 0.2182
## Gares-Caballer 2022_gsht control GSHt 0.0601 0.1925
## Lin 2023a_gsht control GSHt -0.0782 0.1060
## Lin 2023b_gsht control GSHt -0.0711 0.0680
## Fathy 2015_gsht control GSHt -0.3272 0.1925
## Kizilpinar 2023_gsht control GSHt 0.1399 0.2085
## Raffa 2011_gshr control GSHr -0.5627 0.2236
## Guidara 2020_gshr control GSHr 0.1481 0.1260
## Cruz 2021_gshr control GSHr -0.0822 0.1104
## Piatoikina 2023_gshr control GSHr -0.1104 0.0905
## Altuntas 2000_gshr control GSHr 0.1820 0.1491
## Raffa 2011_gssg control GSSG -0.1614 0.2236
## Tao 2020_gssg control GSSG -0.1196 0.1072
##
## Number of treatment arms (by study):
## narms
## Matsuzawa 2008_img 2
## Reyes-Madrigal 2019_img 2
## Iwata 2021_img 2
## Coughlin 2021_img 2
## Lesh 2021_img 2
## Ravanfar 2022_img 2
## Raffa 2011_gsht 2
## Tsai 2013_gsht 2
## Nucifora 2017_gsht 2
## Hendouei 2018a_gsht 2
## Hendouei 2018b_gsht 2
## Hendouei 2018c_gsht 2
## Chien 2020a_gsht 2
## Chien 2020b_gsht 2
## Coughlin 2021_gsht 2
## Gares-Caballer 2022_gsht 2
## Lin 2023a_gsht 2
## Lin 2023b_gsht 2
## Fathy 2015_gsht 2
## Kizilpinar 2023_gsht 2
## Raffa 2011_gshr 2
## Guidara 2020_gshr 2
## Cruz 2021_gshr 2
## Piatoikina 2023_gshr 2
## Altuntas 2000_gshr 2
## Raffa 2011_gssg 2
## Tao 2020_gssg 2
##
## Results (random effects model):
##
## treat1 treat2 SMD 95%-CI
## Matsuzawa 2008_img control Imaging -0.0048 [-0.2684; 0.2589]
## Reyes-Madrigal 2019_img control Imaging -0.0048 [-0.2684; 0.2589]
## Iwata 2021_img control Imaging -0.0048 [-0.2684; 0.2589]
## Coughlin 2021_img control Imaging -0.0048 [-0.2684; 0.2589]
## Lesh 2021_img control Imaging -0.0048 [-0.2684; 0.2589]
## Ravanfar 2022_img control Imaging -0.0048 [-0.2684; 0.2589]
## Raffa 2011_gsht control GSHt 0.0048 [-0.1444; 0.1541]
## Tsai 2013_gsht control GSHt 0.0048 [-0.1444; 0.1541]
## Nucifora 2017_gsht control GSHt 0.0048 [-0.1444; 0.1541]
## Hendouei 2018a_gsht control GSHt 0.0048 [-0.1444; 0.1541]
## Hendouei 2018b_gsht control GSHt 0.0048 [-0.1444; 0.1541]
## Hendouei 2018c_gsht control GSHt 0.0048 [-0.1444; 0.1541]
## Chien 2020a_gsht control GSHt 0.0048 [-0.1444; 0.1541]
## Chien 2020b_gsht control GSHt 0.0048 [-0.1444; 0.1541]
## Coughlin 2021_gsht control GSHt 0.0048 [-0.1444; 0.1541]
## Gares-Caballer 2022_gsht control GSHt 0.0048 [-0.1444; 0.1541]
## Lin 2023a_gsht control GSHt 0.0048 [-0.1444; 0.1541]
## Lin 2023b_gsht control GSHt 0.0048 [-0.1444; 0.1541]
## Fathy 2015_gsht control GSHt 0.0048 [-0.1444; 0.1541]
## Kizilpinar 2023_gsht control GSHt 0.0048 [-0.1444; 0.1541]
## Raffa 2011_gshr control GSHr -0.0566 [-0.2884; 0.1751]
## Guidara 2020_gshr control GSHr -0.0566 [-0.2884; 0.1751]
## Cruz 2021_gshr control GSHr -0.0566 [-0.2884; 0.1751]
## Piatoikina 2023_gshr control GSHr -0.0566 [-0.2884; 0.1751]
## Altuntas 2000_gshr control GSHr -0.0566 [-0.2884; 0.1751]
## Raffa 2011_gssg control GSSG -0.1355 [-0.5199; 0.2488]
## Tao 2020_gssg control GSSG -0.1355 [-0.5199; 0.2488]
##
## Number of studies: k = 27
## Number of pairwise comparisons: m = 27
## Number of treatments: n = 5
## Number of designs: d = 4
##
## Random effects model
##
## Treatment estimate (sm = 'SMD', comparison: other treatments vs 'control'):
## SMD 95%-CI z p-value
## control . . . .
## GSHr 0.0566 [-0.1751; 0.2884] 0.48 0.6321
## GSHt -0.0048 [-0.1541; 0.1444] -0.06 0.9492
## GSSG 0.1355 [-0.2488; 0.5199] 0.69 0.4895
## Imaging 0.0048 [-0.2589; 0.2684] 0.04 0.9718
##
## Quantifying heterogeneity / inconsistency:
## tau^2 = 0.0507; tau = 0.2252; I^2 = 67.4% [50.1%; 78.7%]
##
## Tests of heterogeneity (within designs) and inconsistency (between designs):
## Q d.f. p-value
## Total 70.48 23 < 0.0001
## Within designs 70.48 23 < 0.0001
## Between designs 0.00 0 --
##
## Details of network meta-analysis methods:
## - Frequentist graph-theoretical approach
## - DerSimonian-Laird estimator for tau^2
## - Calculation of I^2 based on Q
# Forest plot
forest(net,
sortvar = TE,
smlab = "Fisher's Z-transformed correlation")
# Network graph
netgraph(net,
plastic = FALSE,
thickness = "number.of.studies",
points = TRUE,
number.of.studies = TRUE)
# League table with specific treatment ordering
league <- netleague(net,
seq = c("control", "Imaging", "GSHt", "GSHr", "GSSG"),
ci = TRUE)
print(league)
## League table (random effects model):
##
## control -0.0048 [-0.2684; 0.2589] 0.0048 [-0.1444; 0.1541]
## -0.0048 [-0.2684; 0.2589] Imaging .
## 0.0048 [-0.1444; 0.1541] 0.0096 [-0.2933; 0.3125] GSHt
## -0.0566 [-0.2884; 0.1751] -0.0519 [-0.4029; 0.2991] -0.0615 [-0.3371; 0.2142]
## -0.1355 [-0.5199; 0.2488] -0.1308 [-0.5969; 0.3353] -0.1404 [-0.5527; 0.2719]
##
## -0.0566 [-0.2884; 0.1751] -0.1355 [-0.5199; 0.2488]
## . .
## . .
## GSHr .
## -0.0789 [-0.5278; 0.3699] GSSG
##
## Lower triangle: results from network meta-analysis (column vs row)
## Upper triangle: results from direct comparisons (row vs column)
# Treatment ranking
ranking <- netrank(net, small.values = "good")
print(ranking)
## P-score
## GSHt 0.6167
## control 0.6070
## Imaging 0.5710
## GSHr 0.4170
## GSSG 0.2884
# Heterogeneity assessment
print(decomp.design(net))
## Q statistics to assess homogeneity / consistency
##
## Q df p-value
## Total 70.48 23 < 0.0001
## Within designs 70.48 23 < 0.0001
## Between designs 0.00 0 --
##
## Design-specific decomposition of within-designs Q statistic
##
## Design Q df p-value
## control:Imaging 33.62 5 < 0.0001
## control:GSHt 26.17 13 0.0161
## control:GSHr 10.66 4 0.0307
## control:GSSG 0.03 1 0.8661
##
## Q statistic to assess consistency under the assumption of
## a full design-by-treatment interaction random effects model
##
## Q df p-value tau.within tau2.within
## Between designs 0.00 0 -- 0.2252 0.0507
# Save results to file
sink("nma_results.txt")
cat("Network Meta-Analysis Results for GSH Measurements\n\n")
cat("1. Summary of Network Meta-Analysis:\n")
print(summary(net))
cat("\n2. League Table:\n")
print(league)
cat("\n3. Treatment Rankings:\n")
print(ranking)
cat("\n4. Heterogeneity Assessment:\n")
print(decomp.design(net))
sink()
# Load required packages (assumes they're already loaded, shown again for clarity)
library(netmeta)
library(meta)
library(dplyr)
library(tidyr)
# Create primary outcomes dataset
nma_data <- tibble(
# Structure data based on primary outcomes:
# 1. Total symptoms
# 2. Positive symptoms
# 3. Negative symptoms
# 4. General symptoms
# 5. Cognitive outcomes
# 6. Functional outcomes
study = c(
# MRS Studies
"Matsuzawa_2008", "Reyes-Madrigal_2019", "Iwata_2021",
"Coughlin_2021", "Lesh_2021", "MacKinley_2022", "Ravanfar_2022",
# Blood GSHt Studies
# [Additional studies based on article data]
),
measurement = c(
rep("MRS", 7),
rep("Blood_GSHt", n),
rep("Blood_GSHr", n),
rep("Blood_GSSG", n)
),
outcome_domain = c(
"Positive", "Negative", "Total", "Cognitive", "Functional"
),
correlation = c(
# [Correlations from article]
),
sample_size = c(
# [Sample sizes from article]
)
)
# Transform correlations
nma_data <- nma_data %>%
mutate(
TE = atanh(correlation),
seTE = sqrt(1/(sample_size - 3)),
treat1 = measurement,
treat2 = "control"
)
# Perform separate NMAs for each outcome domain
# 1. Symptom Networks
net_symptoms <- netmeta(
TE = TE,
seTE = seTE,
treat1 = treat1,
treat2 = treat2,
studlab = study,
data = filter(nma_data, outcome_domain %in% c("Positive", "Negative", "Total")),
sm = "SMD",
fixed = FALSE,
random = TRUE,
reference.group = "control"
)
# 2. Cognitive Network
net_cognitive <- NA # [Similar structure for cognitive outcomes]
# 3. Functional Network
net_functional <- NA # [Similar structure for functional outcomes]
# Assess heterogeneity and inconsistency
decomp.design(net_symptoms)
Network meta-analysis was conducted following the article’s methodological framework:
Based on the article’s findings:
The NMA confirms the article’s main findings:
End of Document