library(dplyr)
## Warning: package 'dplyr' was built under R version 4.3.3
## 
## Attaching package: 'dplyr'
## The following objects are masked from 'package:stats':
## 
##     filter, lag
## The following objects are masked from 'package:base':
## 
##     intersect, setdiff, setequal, union
library(meta)
## Warning: package 'meta' was built under R version 4.3.3
## Loading required package: metadat
## Warning: package 'metadat' was built under R version 4.3.3
## Loading 'meta' package (version 7.0-0).
## Type 'help(meta)' for a brief overview.
## Readers of 'Meta-Analysis with R (Use R!)' should install
## older version of 'meta' package: https://tinyurl.com/dt4y5drs

Total treatment duration

# Cargar las librerías necesarias
library(dplyr)
library(meta)

# Crear un dataframe con los datos
treatment_duration_data <- data.frame(
  Author = c("Dulhunty", "Hagel", "Dulhunty", "Landoni", "Dulhunty", "Abdul-Aziz"),
  Year = c(2015, 2022, 2024, 2023, 2013, 2016),
  Me_Intervention = c(5.3, 4.8, 6.2, 11.5, 4.5, 9.5),  # Media del grupo de intervención
  Se_Intervention = c(1.4, 3, 2.06, 3.4, 1.2, 4.06),  # Error estándar del grupo de intervención
  Ne_Intervention = c(212, 125, 3474, 303, 30, 70),    # Tamaño de muestra del grupo de intervención
  Mc_Control = c(5.2, 4.8, 6.2, 11.25, 4.5, 9.5),      # Media del grupo de control
  Sc_Control = c(1.4, 2.8, 2.07, 3.1, 1.4, 4.06),      # Error estándar del grupo de control
  Nc_Control = c(220, 124, 3507, 304, 30, 70)           # Tamaño de muestra del grupo de control
)

# Meta-análisis de duración total del tratamiento
treatment_duration_meta <- metacont(
  n.e = treatment_duration_data$Ne_Intervention, 
  mean.e = treatment_duration_data$Me_Intervention, 
  sd.e = treatment_duration_data$Se_Intervention, 
  n.c = treatment_duration_data$Nc_Control, 
  mean.c = treatment_duration_data$Mc_Control, 
  sd.c = treatment_duration_data$Sc_Control, 
  studlab = paste(treatment_duration_data$Author, treatment_duration_data$Year),  
  data = treatment_duration_data,
  sm = "SMD",                           # Utilizar la diferencia de medias estandarizada
  method.tau = "PM"                     # Método de DerSimonian-Laird
)

# Resumen 
summary(treatment_duration_meta)
##                    SMD            95%-CI %W(common) %W(random)
## Dulhunty 2015   0.0713 [-0.1174; 0.2600]        5.1        5.1
## Hagel 2022      0.0000 [-0.2484; 0.2484]        2.9        2.9
## Dulhunty 2024   0.0000 [-0.0469; 0.0469]       82.4       82.4
## Landoni 2023    0.0768 [-0.0824; 0.2359]        7.2        7.2
## Dulhunty 2013   0.0000 [-0.5061; 0.5061]        0.7        0.7
## Abdul-Aziz 2016 0.0000 [-0.3313; 0.3313]        1.7        1.7
## 
## Number of studies: k = 6
## Number of observations: o = 8469 (o.e = 4214, o.c = 4255)
## 
##                         SMD            95%-CI    z p-value
## Common effect model  0.0091 [-0.0335; 0.0517] 0.42  0.6744
## Random effects model 0.0091 [-0.0335; 0.0517] 0.42  0.6744
## 
## Quantifying heterogeneity:
##  tau^2 = 0 [0.0000; 0.0018]; tau = 0 [0.0000; 0.0424]
##  I^2 = 0.0% [0.0%; 74.6%]; H = 1.00 [1.00; 1.99]
## 
## Test of heterogeneity:
##     Q d.f. p-value
##  1.27    5  0.9385
## 
## Details on meta-analytical method:
## - Inverse variance method
## - Paule-Mandel estimator for tau^2
## - Q-Profile method for confidence interval of tau^2 and tau
## - Hedges' g (bias corrected standardised mean difference; using exact formulae)
# Gráfico de bosque 
forest(treatment_duration_meta,
       lab.e = "Intervention Group",
       lab.c = "Control Group",
       smlab = "Total Treatment Duration",             
       common = FALSE,                      
       col.diamond = "lightblue",           
       col.square = "darkblue",             
       addrow = FALSE,                      
       label.right = "Favors Control",       
       label.left = "Favors Intervention",   
       bottom.lr = TRUE,                    
       ff.lr = "bold",                      
       colgap = "10mm",                     
       pooled.events = TRUE,                
       addrow.overall = TRUE,               
       overall = TRUE,                      
       col.by = "black",                    
       xlim = c(-2, 2))  # Ajustar límites según sea necesario

All-cause mortality

# Crear el dataframe para la mortalidad por todas las causas
mortality_data <- data.frame(
  Author = c("Dulhunty", "Hagel", "Dulhunty", "Landoni", "Dulhunty", "Abdul-Aziz"),
  Year = c(2015, 2022, 2024, 2023, 2013, 2016),
  EE = c(32, 27, 864, 127, 28, 18),   # Eventos en el grupo de intervención
  TE = c(212, 125, 3474, 303, 30, 70), # Total en el grupo de intervención
  EC = c(38, 32, 939, 127, 26, 26),   # Eventos en el grupo de control
  TC = c(220, 127, 3507, 304, 30, 70)  # Total en el grupo de control
)

# Verificar la estructura del dataframe
str(mortality_data)
## 'data.frame':    6 obs. of  6 variables:
##  $ Author: chr  "Dulhunty" "Hagel" "Dulhunty" "Landoni" ...
##  $ Year  : num  2015 2022 2024 2023 2013 ...
##  $ EE    : num  32 27 864 127 28 18
##  $ TE    : num  212 125 3474 303 30 ...
##  $ EC    : num  38 32 939 127 26 26
##  $ TC    : num  220 127 3507 304 30 ...
# Realizar el meta-análisis para mortalidad por todas las causas
mortality_meta <- metabin(
  event.e = mortality_data$EE,    # Eventos en el grupo de intervención
  n.e = mortality_data$TE,         # Total en el grupo de intervención
  event.c = mortality_data$EC,     # Eventos en el grupo de control
  n.c = mortality_data$TC,         # Total en el grupo de control
  sm = "OR",                       # Medida de efecto, puedes cambiar a "RR" si es necesario
  studlab = paste(mortality_data$Author, mortality_data$Year),  # Etiquetas de los estudios
  data = mortality_data,
  method = "inverse",
  method.tau = "PM",
  method.tau.ci = "PL"
)

# Resumen del meta-análisis para mortalidad por todas las causas
summary(mortality_meta)
##                     OR            95%-CI %W(common) %W(random)
## Dulhunty 2015   0.8515 [0.5096;  1.4228]        3.6        3.6
## Hagel 2022      0.8179 [0.4558;  1.4678]        2.8        2.8
## Dulhunty 2024   0.9053 [0.8132;  1.0078]       82.4       82.4
## Landoni 2023    1.0057 [0.7284;  1.3885]        9.1        9.1
## Dulhunty 2013   2.1538 [0.3635; 12.7635]        0.3        0.3
## Abdul-Aziz 2016 0.5858 [0.2844;  1.2068]        1.8        1.8
## 
## Number of studies: k = 6
## Number of observations: o = 8472 (o.e = 4214, o.c = 4258)
## Number of events: e = 2284
## 
##                          OR           95%-CI     z p-value
## Common effect model  0.9046 [0.8207; 0.9972] -2.02  0.0437
## Random effects model 0.9046 [0.8207; 0.9972] -2.02  0.0437
## 
## Quantifying heterogeneity:
##  tau^2 = 0 [0.0000; 0.5892]; tau = 0 [0.0000; 0.7676]
##  I^2 = 0.0% [0.0%; 74.6%]; H = 1.00 [1.00; 1.99]
## 
## Test of heterogeneity:
##     Q d.f. p-value
##  2.88    5  0.7179
## 
## Details on meta-analytical method:
## - Inverse variance method
## - Paule-Mandel estimator for tau^2
## - Q-Profile method for confidence interval of tau^2 and tau
# Gráfico de bosque para visualizar los resultados
forest(mortality_meta,
       lab.e = "Intervention Group",
       lab.c = "Control Group",
       smlab = "All-cause Mortality",  # Etiqueta para la medida de efecto
       common = FALSE,                  # No usar un efecto común
       col.diamond = "lightblue",       # Color del diamante
       col.square = "darkblue",         # Color del cuadrado
       addrow = FALSE,                  # No agregar filas adicionales
       label.right = "Favors Control",  # Etiqueta derecha
       label.left = "Favors Intervention",  # Etiqueta izquierda
       bottom.lr = TRUE,                # Poner la leyenda en la parte inferior
       ff.lr = "bold",                  # Negrita para la leyenda
       colgap = "10mm",                 # Espacio entre columnas
       pooled.events = TRUE,            # Mostrar eventos combinados
       addrow.overall = TRUE,           # Agregar fila para el total
       overall = TRUE,                  # Mostrar resultados generales
       col.by = "black",                # Color de la columna general
       xlim = c(0.1, 10))               # Limites del eje x (ajustar según sea necesario)

Survival at study completion

# Crear el dataframe para la supervivencia al finalizar el estudio
survival_data <- data.frame(
  Author = c("Dulhunty", "Hagel", "Dulhunty", "Landoni", "Dulhunty", "Abdul-Aziz"),
  Year = c(2015, 2022, 2024, 2023, 2013, 2016),
  EE = c(180, 98, 2610, 176, 2, 52),    # Eventos en el grupo de intervención (supervivientes)
  TE = c(212, 125, 3474, 303, 30, 70),  # Total en el grupo de intervención
  EC = c(174, 93, 2535, 176, 4, 44),     # Eventos en el grupo de control (supervivientes)
  TC = c(220, 127, 3507, 304, 30, 70)    # Total en el grupo de control
)

# Verificar la estructura del dataframe
str(survival_data)
## 'data.frame':    6 obs. of  6 variables:
##  $ Author: chr  "Dulhunty" "Hagel" "Dulhunty" "Landoni" ...
##  $ Year  : num  2015 2022 2024 2023 2013 ...
##  $ EE    : num  180 98 2610 176 2 52
##  $ TE    : num  212 125 3474 303 30 ...
##  $ EC    : num  174 93 2535 176 4 ...
##  $ TC    : num  220 127 3507 304 30 ...
# Realizar el meta-análisis para supervivencia al finalizar el estudio
survival_meta <- metabin(
  event.e = survival_data$EE,   # Eventos en el grupo de intervención
  n.e = survival_data$TE,        # Total en el grupo de intervención
  event.c = survival_data$EC,    # Eventos en el grupo de control
  n.c = survival_data$TC,        # Total en el grupo de control
  sm = "OR",                     # Medida de efecto: Odds Ratio
  studlab = paste(survival_data$Author, survival_data$Year),  # Etiquetas de los estudios
  data = survival_data,
  method = "inverse",
  method.tau = "PM",
  method.tau.ci = "PL"
)

# Resumen del meta-análisis para supervivencia al finalizar el estudio
summary(survival_meta)
##                     OR           95%-CI %W(common) %W(random)
## Dulhunty 2015   1.4871 [0.9047; 2.4443]        3.8        3.8
## Hagel 2022      1.3270 [0.7434; 2.3687]        2.8        2.8
## Dulhunty 2024   1.1583 [1.0411; 1.2887]       82.3       82.3
## Landoni 2023    1.0079 [0.7301; 1.3912]        9.0        9.0
## Dulhunty 2013   0.4643 [0.0783; 2.7513]        0.3        0.3
## Abdul-Aziz 2016 1.7071 [0.8287; 3.5167]        1.8        1.8
## 
## Number of studies: k = 6
## Number of observations: o = 8472 (o.e = 4214, o.c = 4258)
## Number of events: e = 6144
## 
##                          OR           95%-CI    z p-value
## Common effect model  1.1641 [1.0567; 1.2824] 3.08  0.0021
## Random effects model 1.1641 [1.0567; 1.2824] 3.08  0.0021
## 
## Quantifying heterogeneity:
##  tau^2 = 0 [0.0000; 0.7350]; tau = 0 [0.0000; 0.8573]
##  I^2 = 0.0% [0.0%; 74.6%]; H = 1.00 [1.00; 1.99]
## 
## Test of heterogeneity:
##     Q d.f. p-value
##  4.01    5  0.5483
## 
## Details on meta-analytical method:
## - Inverse variance method
## - Paule-Mandel estimator for tau^2
## - Q-Profile method for confidence interval of tau^2 and tau
# Gráfico de bosque para visualizar los resultados
forest(survival_meta,
       lab.e = "Intervention Group",
       lab.c = "Control Group",
       smlab = "Survival at Study Completion",  # Etiqueta para la medida de efecto
       common = FALSE,                  # No usar un efecto común
       col.diamond = "lightblue",       # Color del diamante
       col.square = "darkblue",         # Color del cuadrado
       addrow = FALSE,                  # No agregar filas adicionales
       label.right = "Favors Control ",  # Etiqueta derecha
       label.left = "Favors Intervention",  # Etiqueta izquierda
       bottom.lr = TRUE,                # Poner la leyenda en la parte inferior
       ff.lr = "bold",                  # Negrita para la leyenda
       colgap = "10mm",                 # Espacio entre columnas
       pooled.events = TRUE,            # Mostrar eventos combinados
       addrow.overall = TRUE,           # Agregar fila para el total
       overall = TRUE,                  # Mostrar resultados generales
       col.by = "black",                # Color de la columna general
       xlim = c(0.1, 10))               # Limites del eje x (ajustar según sea necesario)

ICU survivors

# Cargar las librerías necesarias
library(dplyr)
library(meta)

# Crear el dataframe para los sobrevivientes en la UCI
icu_survivors_data <- data.frame(
  Author = c("Dulhunty", "Hagel", "Dulhunty", "Landoni", "Dulhunty", "Abdul-Aziz"),
  Year = c(2015, 2022, 2024, 2023, 2013, 2016),
  EE = c(180, NA, 2829, NA, 28, 21),    # Eventos en el grupo de intervención (supervivientes)
  TE = c(212, NA, 3474, NA, 30, 70),    # Total en el grupo de intervención
  EC = c(182, NA, 2862, NA, 26, 21),     # Eventos en el grupo de control (supervivientes)
  TC = c(220, NA, 3507, NA, 30, 70)      # Total en el grupo de control
)

# Verificar la estructura del dataframe
str(icu_survivors_data)
## 'data.frame':    6 obs. of  6 variables:
##  $ Author: chr  "Dulhunty" "Hagel" "Dulhunty" "Landoni" ...
##  $ Year  : num  2015 2022 2024 2023 2013 ...
##  $ EE    : num  180 NA 2829 NA 28 ...
##  $ TE    : num  212 NA 3474 NA 30 ...
##  $ EC    : num  182 NA 2862 NA 26 ...
##  $ TC    : num  220 NA 3507 NA 30 ...
# Filtrar los datos para eliminar filas con datos no reportados
icu_survivors_data <- icu_survivors_data %>%
  filter(!is.na(EE) & !is.na(TE) & !is.na(EC) & !is.na(TC))

# Realizar el meta-análisis para sobrevivientes en la UCI
icu_survivors_meta <- metabin(
  event.e = icu_survivors_data$EE,   # Eventos en el grupo de intervención
  n.e = icu_survivors_data$TE,        # Total en el grupo de intervención
  event.c = icu_survivors_data$EC,    # Eventos en el grupo de control
  n.c = icu_survivors_data$TC,        # Total en el grupo de control
  sm = "RR",                          # Medida de efecto: Riesgo Relativo
  studlab = paste(icu_survivors_data$Author, icu_survivors_data$Year),  # Etiquetas de los estudios
  data = icu_survivors_data,
  method = "inverse",
  method.tau = "PM",
  method.tau.ci = "PL"
)

# Resumen del meta-análisis para sobrevivientes en la UCI
summary(icu_survivors_meta)
##                     RR           95%-CI %W(common) %W(random)
## Dulhunty 2015   1.0263 [0.9447; 1.1150]        6.7        6.7
## Dulhunty 2024   0.9979 [0.9758; 1.0204]       91.6       91.6
## Dulhunty 2013   1.0769 [0.9087; 1.2763]        1.6        1.6
## Abdul-Aziz 2016 1.0000 [0.6029; 1.6587]        0.2        0.2
## 
## Number of studies: k = 4
## Number of observations: o = 7613 (o.e = 3786, o.c = 3827)
## Number of events: e = 6149
## 
##                          RR           95%-CI    z p-value
## Common effect model  1.0009 [0.9798; 1.0226] 0.09  0.9313
## Random effects model 1.0009 [0.9798; 1.0226] 0.09  0.9313
## 
## Quantifying heterogeneity:
##  tau^2 = 0 [0.0000; 0.0102]; tau = 0 [0.0000; 0.1010]
##  I^2 = 0.0% [0.0%; 84.7%]; H = 1.00 [1.00; 2.56]
## 
## Test of heterogeneity:
##     Q d.f. p-value
##  1.14    3  0.7681
## 
## Details on meta-analytical method:
## - Inverse variance method
## - Paule-Mandel estimator for tau^2
## - Q-Profile method for confidence interval of tau^2 and tau
# Gráfico de bosque para visualizar los resultados
forest(icu_survivors_meta,
       lab.e = "Intervention Group",
       lab.c = "Control Group",
       smlab = "ICU Survivors",          # Etiqueta para la medida de efecto
       common = FALSE,                   # No usar un efecto común
       col.diamond = "lightblue",        # Color del diamante
       col.square = "darkblue",          # Color del cuadrado
       addrow = FALSE,                   # No agregar filas adicionales
       label.right = "Favors Control",    # Etiqueta derecha
       label.left = "Favors Intervention", # Etiqueta izquierda
       bottom.lr = TRUE,                 # Poner la leyenda en la parte inferior
       ff.lr = "bold",                   # Negrita para la leyenda
       colgap = "10mm",                  # Espacio entre columnas
       pooled.events = TRUE,             # Mostrar eventos combinados
       addrow.overall = TRUE,            # Agregar fila para el total
       overall = TRUE,                   # Mostrar resultados generales
       col.by = "black",                 # Color de la columna general
       xlim = c(0.1, 10))                # Limites del eje x (ajustar según sea necesario)

Hospital survivors

# Cargar las librerías necesarias
library(dplyr)
library(meta)

# Crear el dataframe para los sobrevivientes en el hospital
hospital_survivors_data <- data.frame(
  Author = c("Dulhunty", "Hagel", "Dulhunty", "Landoni", "Dulhunty", "Abdul-Aziz"),
  Year = c(2015, 2022, 2024, 2023, 2013, 2016),
  EE = c(168, NA, 2666, NA, 27, NA),    # Eventos en el grupo de intervención (supervivientes)
  TE = c(212, NA, 3474, NA, 30, NA),    # Total en el grupo de intervención
  EC = c(164, NA, 2629, NA, 24, NA),     # Eventos en el grupo de control (supervivientes)
  TC = c(220, NA, 3507, NA, 30, NA)      # Total en el grupo de control
)

# Verificar la estructura del dataframe
str(hospital_survivors_data)
## 'data.frame':    6 obs. of  6 variables:
##  $ Author: chr  "Dulhunty" "Hagel" "Dulhunty" "Landoni" ...
##  $ Year  : num  2015 2022 2024 2023 2013 ...
##  $ EE    : num  168 NA 2666 NA 27 ...
##  $ TE    : num  212 NA 3474 NA 30 ...
##  $ EC    : num  164 NA 2629 NA 24 ...
##  $ TC    : num  220 NA 3507 NA 30 ...
# Filtrar los datos para eliminar filas con datos no reportados
hospital_survivors_data <- hospital_survivors_data %>%
  filter(!is.na(EE) & !is.na(TE) & !is.na(EC) & !is.na(TC))

# Realizar el meta-análisis para sobrevivientes en el hospital
hospital_survivors_meta <- metabin(
  event.e = hospital_survivors_data$EE,   # Eventos en el grupo de intervención
  n.e = hospital_survivors_data$TE,        # Total en el grupo de intervención
  event.c = hospital_survivors_data$EC,    # Eventos en el grupo de control
  n.c = hospital_survivors_data$TC,        # Total en el grupo de control
  sm = "RR",                               # Medida de efecto: Riesgo Relativo
  studlab = paste(hospital_survivors_data$Author, hospital_survivors_data$Year),  # Etiquetas de los estudios
  data = hospital_survivors_data,
  method = "inverse",
  method.tau = "PM",
  method.tau.ci = "PL"
)

# Resumen del meta-análisis para sobrevivientes en el hospital
summary(hospital_survivors_meta)
##                   RR           95%-CI %W(common) %W(random)
## Dulhunty 2015 1.0630 [0.9585; 1.1789]        6.1        6.1
## Dulhunty 2024 1.0237 [0.9970; 1.0512]       92.5       92.5
## Dulhunty 2013 1.1250 [0.9073; 1.3949]        1.4        1.4
## 
## Number of studies: k = 3
## Number of observations: o = 7473 (o.e = 3716, o.c = 3757)
## Number of events: e = 5678
## 
##                          RR           95%-CI    z p-value
## Common effect model  1.0274 [1.0016; 1.0539] 2.08  0.0375
## Random effects model 1.0274 [1.0016; 1.0539] 2.08  0.0375
## 
## Quantifying heterogeneity:
##  tau^2 = 0 [0.0000; 0.0823]; tau = 0 [0.0000; 0.2869]
##  I^2 = 0.0% [0.0%; 89.6%]; H = 1.00 [1.00; 3.10]
## 
## Test of heterogeneity:
##     Q d.f. p-value
##  1.17    2  0.5564
## 
## Details on meta-analytical method:
## - Inverse variance method
## - Paule-Mandel estimator for tau^2
## - Q-Profile method for confidence interval of tau^2 and tau
# Gráfico de bosque para visualizar los resultados
forest(hospital_survivors_meta,
       lab.e = "Intervention Group",
       lab.c = "Control Group",
       smlab = "Hospital Survivors",          # Etiqueta para la medida de efecto
       common = FALSE,                        # No usar un efecto común
       col.diamond = "lightblue",             # Color del diamante
       col.square = "darkblue",               # Color del cuadrado
       addrow = FALSE,                        # No agregar filas adicionales
       label.right = "Favors Control",         # Etiqueta derecha
       label.left = "Favors Intervention",     # Etiqueta izquierda
       bottom.lr = TRUE,                      # Poner la leyenda en la parte inferior
       ff.lr = "bold",                        # Negrita para la leyenda
       colgap = "10mm",                       # Espacio entre columnas
       pooled.events = TRUE,                  # Mostrar eventos combinados
       addrow.overall = TRUE,                 # Agregar fila para el total
       overall = TRUE,                        # Mostrar resultados generales
       col.by = "black",                      # Color de la columna general
       xlim = c(0.1, 10))                     # Limites del eje x (ajustar según sea necesario)

Clinical cure

library(dplyr)
library(meta)


# Dataframe de curación clínica general
clinical_cure_data <- data.frame(
  Author = c("Dulhunty", "Hagel", "Dulhunty", "Landoni", "Dulhunty", "Abdul-Aziz"),
  Year = c(2015, 2022, 2024, 2023, 2013, 2016),
  EE = c(111, 21, 1930, NA, 23, 39),  
  TE = c(212, 59, 3467, NA, 30, 70),  
  EC = c(109, 12, 1744, NA, 13, 24),   
  TC = c(220, 69, 3491, NA, 30, 70)    
)



# Eliminar filas con datos no reportados
clinical_cure_data <- clinical_cure_data %>%
  filter(!is.na(EE) & !is.na(TE) & !is.na(EC) & !is.na(TC))

#Meta-análisis  curación clínica
clinical_cure_meta <- metabin(
  event.e = clinical_cure_data$EE,   
  n.e = clinical_cure_data$TE,        
  event.c = clinical_cure_data$EC,    
  n.c = clinical_cure_data$TC,        
  sm = "RR",                           
  studlab = paste(clinical_cure_data$Author, clinical_cure_data$Year),  
  data = clinical_cure_data,
  method = "inverse",                 
  method.tau = "PM",                   
  method.tau.ci = "PL"                 
)

# Resumen 
summary(clinical_cure_meta)
##                     RR           95%-CI %W(common) %W(random)
## Dulhunty 2015   1.0568 [0.8782; 1.2717]        5.3       26.4
## Hagel 2022      2.0466 [1.1029; 3.7979]        0.5       10.4
## Dulhunty 2024   1.1143 [1.0658; 1.1651]       92.1       30.8
## Dulhunty 2013   1.7692 [1.1232; 2.7868]        0.9       15.0
## Abdul-Aziz 2016 1.6250 [1.1049; 2.3899]        1.2       17.5
## 
## Number of studies: k = 5
## Number of observations: o = 7718 (o.e = 3838, o.c = 3880)
## Number of events: e = 4026
## 
##                          RR           95%-CI    z  p-value
## Common effect model  1.1242 [1.0771; 1.1733] 5.37 < 0.0001
## Random effects model 1.3399 [1.0497; 1.7102] 2.35   0.0188
## 
## Quantifying heterogeneity:
##  tau^2 = 0.0499 [0.0007; 0.6607]; tau = 0.2233 [0.0273; 0.8129]
##  I^2 = 65.3% [9.1%; 86.7%]; H = 1.70 [1.05; 2.75]
## 
## Test of heterogeneity:
##      Q d.f. p-value
##  11.52    4  0.0213
## 
## Details on meta-analytical method:
## - Inverse variance method
## - Paule-Mandel estimator for tau^2
## - Q-Profile method for confidence interval of tau^2 and tau
# Gráfico de bosque 
forest(clinical_cure_meta,
       lab.e = "Intervention Group",
       lab.c = "Control Group",
       smlab = "Clinical Cure",             
       common = FALSE,                      
       col.diamond = "lightblue",           
       col.square = "darkblue",             
       addrow = FALSE,                      
       label.right = "Favors Control",       
       label.left = "Favors Intervention",   
       bottom.lr = TRUE,                    
       ff.lr = "bold",                      
       colgap = "10mm",                     
       pooled.events = TRUE,                
       addrow.overall = TRUE,               
       overall = TRUE,                      
       col.by = "black",                    
       xlim = c(0.1, 10))                  

Days alive and free from the ICU at day 28

library(meta)

# Crear un dataframe con los datos
data <- data.frame(
  Author = c("Dulhunty 2015", "Dulhunty 2024", "Landoni 2023", "Dulhunty 2013", "Abdul-Aziz 2016"),
  Year = c(2015, 2024, 2023, 2013, 2016),
  Me_Intervention = c(15.5, 67.75, 4.75, 18.93, 20),
  DE_Intervention = c(6.3, 15.2, 5.51, 3.23, 3.15),
  Ne_Intervention = c(212, 3474, 303, 30, 70),
  Me_Control = c(16.75, 64.5, 4.75, 9.31, 17),
  DE_Control = c(6.03, 17.8, 5.51, 2.68, 6.91),
  Nc_Control = c(220, 3507, 304, 30, 70)
)

# Filtrar datos que no tienen tamaños de muestra (en este caso no hay NA)
data <- na.omit(data)

# Calcular la diferencia de medias y su error estándar
data$Mean_Difference <- data$Me_Intervention - data$Me_Control
data$SE_Difference <- sqrt((data$DE_Intervention^2 / data$Ne_Intervention) + (data$DE_Control^2 / data$Nc_Control))

# Crear el meta-análisis
meta_analysis <- metagen(
  TE = data$Mean_Difference,
  seTE = data$SE_Difference,
  studlab = data$Author,
  data = data,
  sm = "MD" # Diferencia de medias
)

# Resumen del meta-análisis
summary(meta_analysis)
##                      MD             95%-CI %W(common) %W(random)
## Dulhunty 2015   -1.2500 [-2.4137; -0.0863]       16.6       20.1
## Dulhunty 2024    3.2500 [ 2.4738;  4.0262]       37.2       20.3
## Landoni 2023     0.0000 [-0.8767;  0.8767]       29.2       20.3
## Dulhunty 2013    9.6200 [ 8.1181; 11.1219]        9.9       19.8
## Abdul-Aziz 2016  3.0000 [ 1.2210;  4.7790]        7.1       19.6
## 
## Number of studies: k = 5
## 
##                          MD            95%-CI    z  p-value
## Common effect model  2.1719 [ 1.6983; 2.6455] 8.99 < 0.0001
## Random effects model 2.9014 [-0.7767; 6.5796] 1.55   0.1221
## 
## Quantifying heterogeneity:
##  tau^2 = 17.1886 [5.8838; 145.9212]; tau = 4.1459 [2.4256; 12.0798]
##  I^2 = 97.5% [96.0%; 98.4%]; H = 6.31 [4.98; 8.01]
## 
## Test of heterogeneity:
##       Q d.f.  p-value
##  159.52    4 < 0.0001
## 
## Details on meta-analytical method:
## - Inverse variance method
## - Restricted maximum-likelihood estimator for tau^2
## - Q-Profile method for confidence interval of tau^2 and tau
# Gráfico de bosque
forest(meta_analysis)

# Evaluar la heterogeneidad
print(paste("Q:", meta_analysis$Q))
## [1] "Q: 159.515326512751"
print(paste("I²:", meta_analysis$I2))
## [1] "I²: 0.974924039667873"

Lenght of ICU stay, mean, d

library(meta)

# Crear un dataframe con los datos
data <- data.frame(
  Author = c("Dulhunty 2015", "Hagel 2022", "Dulhunty 2024", "Landoni 2023", "Dulhunty 2013", "Abdul-Aziz 2016"),
  Year = c(2015, 2022, 2024, 2023, 2013, 2016),
  Me_Intervention = c(7.5, 9.25, 67.75, 12.25, 7.75, 8),
  DE_Intervention = c(2.8, 3.18, 15.2, 4.9, 2.32, 1.42),
  Ne_Intervention = c(212, 125, 3474, 303, 30, 70),
  Me_Control = c(6.5, 11.5, 64.5, 13, 9.31, 6),
  DE_Control = c(2.3, 2.8, 17.8, 5.79, 2.68, 2.62),
  Nc_Control = c(220, 124, 3507, 304, 30, 70)
)

# Filtrar datos que no tienen tamaños de muestra (en este caso no hay NA)
data <- na.omit(data)

# Calcular la diferencia de medias y su error estándar
data$Mean_Difference <- data$Me_Intervention - data$Me_Control
data$SE_Difference <- sqrt((data$DE_Intervention^2 / data$Ne_Intervention) + (data$DE_Control^2 / data$Nc_Control))

# Crear el meta-análisis
meta_analysis <- metagen(
  TE = data$Mean_Difference,
  seTE = data$SE_Difference,
  studlab = data$Author,
  data = data,
  sm = "MD" # Diferencia de medias
)

# Resumen del meta-análisis
summary(meta_analysis)
##                      MD             95%-CI %W(common) %W(random)
## Dulhunty 2015    1.0000 [ 0.5158;  1.4842]       36.2       17.1
## Hagel 2022      -2.2500 [-2.9941; -1.5059]       15.3       16.8
## Dulhunty 2024    3.2500 [ 2.4738;  4.0262]       14.1       16.8
## Landoni 2023    -0.7500 [-1.6032;  0.1032]       11.7       16.6
## Dulhunty 2013   -1.5600 [-2.8284; -0.2916]        5.3       15.8
## Abdul-Aziz 2016  2.0000 [ 1.3019;  2.6981]       17.4       16.9
## 
## Number of studies: k = 6
## 
##                          MD            95%-CI    z  p-value
## Common effect model  0.6537 [ 0.3623; 0.9451] 4.40 < 0.0001
## Random effects model 0.3028 [-1.4170; 2.0226] 0.35   0.7300
## 
## Quantifying heterogeneity:
##  tau^2 = 4.4395 [1.6199; 27.6580]; tau = 2.1070 [1.2728; 5.2591]
##  I^2 = 96.4% [94.2%; 97.8%]; H = 5.29 [4.17; 6.71]
## 
## Test of heterogeneity:
##       Q d.f.  p-value
##  139.83    5 < 0.0001
## 
## Details on meta-analytical method:
## - Inverse variance method
## - Restricted maximum-likelihood estimator for tau^2
## - Q-Profile method for confidence interval of tau^2 and tau
# Gráfico de bosque
forest(meta_analysis)

# Evaluar la heterogeneidad
print(paste("Q:", meta_analysis$Q))
## [1] "Q: 139.825888863471"
print(paste("I²:", meta_analysis$I2))
## [1] "I²: 0.96424124287254"

Lenght of hospital stay, mean, d

library(meta)

# Crear un dataframe con los datos
data <- data.frame(
  Author = c("Dulhunty 2015", "Hagel 2022", "Dulhunty 2024", "Landoni 2023"),
  Year = c(2015, 2022, 2024, 2023),
  Me_Intervention = c(18, 9.25, 44.25, 23),
  DE_Intervention = c(6.9, 3.18, 21.05, 7.5),
  Ne_Intervention = c(212, 125, 3474, 303),
  Me_Control = c(15.75, 23.25, 42, 23.5),
  DE_Control = c(5.49, 3.7, 20.7, 8.6),
  Nc_Control = c(220, 124, 3507, 304)
)

# Filtrar datos que no tienen tamaños de muestra (excluir estudios no reportados)
data <- na.omit(data)

# Calcular la diferencia de medias y su error estándar
data$Mean_Difference <- data$Me_Intervention - data$Me_Control
data$SE_Difference <- sqrt((data$DE_Intervention^2 / data$Ne_Intervention) + (data$DE_Control^2 / data$Nc_Control))

# Crear el meta-análisis
meta_analysis <- metagen(
  TE = data$Mean_Difference,
  seTE = data$SE_Difference,
  studlab = data$Author,
  data = data,
  sm = "MD" # Diferencia de medias
)

# Resumen del meta-análisis
summary(meta_analysis)
##                     MD               95%-CI %W(common) %W(random)
## Dulhunty 2015   2.2500 [  1.0715;   3.4285]       19.3       25.0
## Hagel 2022    -14.0000 [-14.8573; -13.1427]       36.5       25.0
## Dulhunty 2024   2.2500 [  1.2705;   3.2295]       27.9       25.0
## Landoni 2023   -0.5000 [ -1.7836;   0.7836]       16.3       25.0
## 
## Number of studies: k = 4
## 
##                           MD              95%-CI      z  p-value
## Common effect model  -4.1257 [ -4.6435; -3.6079] -15.62 < 0.0001
## Random effects model -2.5064 [-10.1367;  5.1238]  -0.64   0.5197
## 
## Quantifying heterogeneity:
##  tau^2 = 60.3161 [19.1767; >603.1606]; tau = 7.7663 [4.3791; >24.5593]
##  I^2 = 99.6% [99.5%; 99.7%]; H = 16.49 [14.28; 19.04]
## 
## Test of heterogeneity:
##       Q d.f.  p-value
##  815.52    3 < 0.0001
## 
## Details on meta-analytical method:
## - Inverse variance method
## - Restricted maximum-likelihood estimator for tau^2
## - Q-Profile method for confidence interval of tau^2 and tau
# Gráfico de bosque
forest(meta_analysis)

# Evaluar la heterogeneidad
print(paste("Q:", meta_analysis$Q))
## [1] "Q: 815.518622520315"
print(paste("I²:", meta_analysis$I2))
## [1] "I²: 0.996321359295599"

Adverse events

# Cargar las librerías necesarias
library(dplyr)
library(meta)

# Crear un dataframe con los datos
adverse_events_data <- data.frame(
  Author = c("Dulhunty", "Hagel", "Dulhunty", "Landoni", "Dulhunty", "Abdul-Aziz"),
  Year = c(2015, 2022, 2024, 2023, 2013, 2016),
  EE = c(20, 20, 10, 0, 0, NA),      # Eventos en el grupo de intervención
  TE = c(212, 125, 3498, 303, 30, NA), # Tamaño de muestra en el grupo de intervención
  EC = c(28, 27, 6, 0, 0, NA),      # Eventos en el grupo de control
  TC = c(220, 124, 3533, 304, 30, NA) # Tamaño de muestra en el grupo de control
)

# Eliminar filas con datos no reportados
adverse_events_data <- adverse_events_data %>%
  filter(!is.na(EE) & !is.na(TE) & !is.na(EC) & !is.na(TC))

# Meta-análisis de eventos adversos
adverse_events_meta <- metabin(
  event.e = adverse_events_data$EE,   
  n.e = adverse_events_data$TE,        
  event.c = adverse_events_data$EC,    
  n.c = adverse_events_data$TC,        
  sm = "OR",                           
  studlab = paste(adverse_events_data$Author, adverse_events_data$Year),  
  data = adverse_events_data,
  method = "inverse",                 
  method.tau = "PM",                   
  method.tau.ci = "PL"                 
)

# Resumen 
summary(adverse_events_meta)
##                   OR           95%-CI %W(common) %W(random)
## Dulhunty 2015 0.7143 [0.3890; 1.3116]       44.3       41.9
## Hagel 2022    0.6843 [0.3606; 1.2987]       39.8       39.0
## Dulhunty 2024 1.6853 [0.6119; 4.6420]       15.9       19.1
## Landoni 2023      NA                         0.0        0.0
## Dulhunty 2013     NA                         0.0        0.0
## 
## Number of studies: k = 3
## Number of observations: o = 8379 (o.e = 4168, o.c = 4211)
## Number of events: e = 111
## 
##                          OR           95%-CI     z p-value
## Common effect model  0.8050 [0.5373; 1.2061] -1.05  0.2931
## Random effects model 0.8273 [0.5123; 1.3361] -0.78  0.4383
## 
## Quantifying heterogeneity:
##  tau^2 = 0.0465 [0.0000; 9.9985]; tau = 0.2156 [0.0000; 3.1620]
##  I^2 = 18.0% [0.0%; 91.5%]; H = 1.10 [1.00; 3.42]
## 
## Test of heterogeneity:
##     Q d.f. p-value
##  2.44    2  0.2955
## 
## Details on meta-analytical method:
## - Inverse variance method
## - Paule-Mandel estimator for tau^2
## - Q-Profile method for confidence interval of tau^2 and tau
# Gráfico de bosque 
forest(adverse_events_meta,
       lab.e = "Intervention Group",
       lab.c = "Control Group",
       smlab = "Adverse Events",             
       common = FALSE,                      
       col.diamond = "lightblue",           
       col.square = "darkblue",             
       addrow = FALSE,                      
       label.right = "Favors Control",       
       label.left = "Favors Intervention",   
       bottom.lr = TRUE,                    
       ff.lr = "bold",                      
       colgap = "10mm",                     
       pooled.events = TRUE,                
       addrow.overall = TRUE,               
       overall = TRUE,                      
       col.by = "black",                    
       xlim = c(0.1, 10))  

APACHE II

# Cargar las librerías necesarias
library(dplyr)
library(meta)

# Crear un dataframe con los datos
apache_data <- data.frame(
  Author = c("Dulhunty", "Hagel", "Dulhunty", "Landoni", "Dulhunty", "Abdul-Aziz"),
  Year = c(2015, 2022, 2024, 2023, 2013, 2016),
  ME_Intervention = c(21.25, 23.2, 19.6, NA, 21, 21),  # Media del grupo de intervención
  DE_Intervention = c(2.6, 6.7, 7.6, NA, 8.6, 2.89),  # Desviación estándar del grupo de intervención
  Ne_Intervention = c(212, 125, 3474, 303, 30, 70),    # Tamaño de muestra del grupo de intervención
  ME_Control = c(20.25, 22.4, 19.5, NA, 23, 20.75),    # Media del grupo de control
  DE_Control = c(2.6, 5.7, 7.4, NA, 7.6, 3.16),         # Desviación estándar del grupo de control
  Ne_Control = c(220, 124, 3507, 304, 30, 70)           # Tamaño de muestra del grupo de control
)

# Eliminar filas con datos no reportados
apache_data <- apache_data %>%
  filter(!is.na(ME_Intervention) & !is.na(DE_Intervention) & 
         !is.na(ME_Control) & !is.na(DE_Control))

# Meta-análisis de APACHE II
apache_meta <- metacont(
  n.e = apache_data$Ne_Intervention, 
  mean.e = apache_data$ME_Intervention, 
  sd.e = apache_data$DE_Intervention, 
  n.c = apache_data$Ne_Control, 
  mean.c = apache_data$ME_Control, 
  sd.c = apache_data$DE_Control, 
  studlab = paste(apache_data$Author, apache_data$Year),  
  data = apache_data,
  sm = "SMD",                           # Utilizar la diferencia de medias estandarizada
  method.tau = "PM"                     # Método de DerSimonian-Laird
)

# Resumen 
summary(apache_meta)
##                     SMD            95%-CI %W(common) %W(random)
## Dulhunty 2015    0.3839 [ 0.1936; 0.5743]        5.4       23.8
## Hagel 2022       0.1282 [-0.1205; 0.3769]        3.2       19.9
## Dulhunty 2024    0.0133 [-0.0336; 0.0602]       88.9       32.4
## Dulhunty 2013   -0.2432 [-0.7513; 0.2648]        0.8        8.8
## Abdul-Aziz 2016  0.0821 [-0.2493; 0.4136]        1.8       15.2
## 
## Number of studies: k = 5
## Number of observations: o = 7862 (o.e = 3911, o.c = 3951)
## 
##                         SMD            95%-CI    z p-value
## Common effect model  0.0363 [-0.0080; 0.0805] 1.61  0.1082
## Random effects model 0.1124 [-0.0629; 0.2878] 1.26  0.2089
## 
## Quantifying heterogeneity:
##  tau^2 = 0.0242 [0.0022; 0.3834]; tau = 0.1554 [0.0472; 0.6192]
##  I^2 = 74.2% [35.9%; 89.6%]; H = 1.97 [1.25; 3.10]
## 
## Test of heterogeneity:
##      Q d.f. p-value
##  15.49    4  0.0038
## 
## Details on meta-analytical method:
## - Inverse variance method
## - Paule-Mandel estimator for tau^2
## - Q-Profile method for confidence interval of tau^2 and tau
## - Hedges' g (bias corrected standardised mean difference; using exact formulae)
# Gráfico de bosque 
forest(apache_meta,
       lab.e = "Intervention Group",
       lab.c = "Control Group",
       smlab = "APACHE II Score",             
       common = FALSE,                      
       col.diamond = "lightblue",           
       col.square = "darkblue",             
       addrow = FALSE,                      
       label.right = "Favors Control",       
       label.left = "Favors Intervention",   
       bottom.lr = TRUE,                    
       ff.lr = "bold",                      
       colgap = "10mm",                     
       pooled.events = TRUE,                
       addrow.overall = TRUE,               
       overall = TRUE,                      
       col.by = "black",                    
       xlim = c(-2, 2))  # Ajusta límites según sea necesario