library(readxl)
library(dplyr)
##
## Adjuntando el paquete: 'dplyr'
## The following objects are masked from 'package:stats':
##
## filter, lag
## The following objects are masked from 'package:base':
##
## intersect, setdiff, setequal, union
library(tidyr)
library(ggplot2)
library(naniar)
library(janitor)
##
## Adjuntando el paquete: 'janitor'
## The following objects are masked from 'package:stats':
##
## chisq.test, fisher.test
library(tableone)
library(epitools)
library(knitr)
library(naniar)
library(psych)
##
## Adjuntando el paquete: 'psych'
## The following objects are masked from 'package:ggplot2':
##
## %+%, alpha
library(tableone)
library(gtsummary)
library(dplyr)
datos <- read_excel("ar_remite_solo_multicéntrico_R.xlsx")
dim(datos)
## [1] 100 35
names(datos)
## [1] "site" "id_paciente"
## [3] "sexo" "fecha_nac"
## [5] "edad" "hta"
## [7] "dbt" "dlp"
## [9] "tbq" "extbq"
## [11] "fecha_diagnóstico" "lar_título_inicial"
## [13] "ccp_título_inicial" "vsg_inicial"
## [15] "pcr_inicial" "dre"
## [17] "nad_inicial" "nat_inicial"
## [19] "DMARD_inicial_fecha" "DMARD_inicial_tipo"
## [21] "DMARD_inicial_cual" "DMARD_inicial_dosis"
## [23] "PDN_inicial_fecha" "PDN_inicial_dosis"
## [25] "intensificacion_tto" "combinacion_DMARDs"
## [27] "cantidad_lineas_tto" "recibio_bDMARD"
## [29] "recibio_tsDMARD" "fecha_fin_ultimo_DMARD"
## [31] "fecha_inicio_remision_sostenida" "recaída"
## [33] "fecha_recaída" "fecha_última_visita"
## [35] "motivo_fin_DMARD"
str(datos)
## tibble [100 × 35] (S3: tbl_df/tbl/data.frame)
## $ site : chr [1:100] "HIQ" "HIQ" "HIQ" "HIQ" ...
## $ id_paciente : chr [1:100] "CASO0001" "CASO0002" "CASO0003" "CASO0004" ...
## $ sexo : num [1:100] 1 1 1 0 0 0 0 1 0 0 ...
## $ fecha_nac : POSIXct[1:100], format: "1971-05-20" "1977-08-21" ...
## $ edad : num [1:100] 47 38 36 56 25 62 59 45 62 36 ...
## $ hta : num [1:100] 0 0 0 0 0 0 0 0 1 0 ...
## $ dbt : num [1:100] 0 0 0 0 0 0 0 0 0 0 ...
## $ dlp : num [1:100] 1 0 0 1 0 0 0 0 0 0 ...
## $ tbq : num [1:100] 0 0 0 0 0 0 0 0 0 0 ...
## $ extbq : num [1:100] 1 0 0 0 0 0 0 0 1 0 ...
## $ fecha_diagnóstico : POSIXct[1:100], format: "2019-01-08" "2016-06-01" ...
## $ lar_título_inicial : num [1:100] 1024 60 500 98 14 ...
## $ ccp_título_inicial : num [1:100] 534 196 1 113 86 15 329 200 62 5 ...
## $ vsg_inicial : num [1:100] 42 110 12 37 44 10 67 10 50 49 ...
## $ pcr_inicial : num [1:100] 96 9 1 5.3 9 7.7 76.8 1.8 4 6 ...
## $ dre : num [1:100] 0 0 0 0 0 0 0 0 0 NA ...
## $ nad_inicial : num [1:100] 11 10 5 3 10 3 9 12 13 10 ...
## $ nat_inicial : num [1:100] 9 10 5 7 10 8 8 12 13 10 ...
## $ DMARD_inicial_fecha : POSIXct[1:100], format: "2019-01-14" "2016-06-01" ...
## $ DMARD_inicial_tipo : chr [1:100] "csDMARD" "csDMARD" "csDMARD" "csDMARD" ...
## $ DMARD_inicial_cual : chr [1:100] "MTX" "MTX" "MTX" "MTX" ...
## $ DMARD_inicial_dosis : num [1:100] 25 25 25 15 25 25 15 15 25 25 ...
## $ PDN_inicial_fecha : POSIXct[1:100], format: "2019-01-14" "2016-06-01" ...
## $ PDN_inicial_dosis : num [1:100] 20 8 8 8 8 8 8 8 8 8 ...
## $ intensificacion_tto : num [1:100] 1 1 1 1 1 0 1 0 1 1 ...
## $ combinacion_DMARDs : num [1:100] 1 1 1 1 1 0 1 0 1 1 ...
## $ cantidad_lineas_tto : num [1:100] 2 2 3 3 2 1 5 1 3 2 ...
## $ recibio_bDMARD : num [1:100] 0 0 1 1 0 0 1 0 0 0 ...
## $ recibio_tsDMARD : num [1:100] 0 0 0 0 0 0 0 0 1 0 ...
## $ fecha_fin_ultimo_DMARD : POSIXct[1:100], format: "2022-11-15" "2022-05-28" ...
## $ fecha_inicio_remision_sostenida: POSIXct[1:100], format: "2023-11-15" "2023-05-28" ...
## $ recaída : num [1:100] 0 0 0 0 1 0 1 0 0 0 ...
## $ fecha_recaída : POSIXct[1:100], format: NA NA ...
## $ fecha_última_visita : POSIXct[1:100], format: "2024-05-09" "2024-06-08" ...
## $ motivo_fin_DMARD : chr [1:100] "decisión paciente" "decisión paciente" "decisión paciente" "decisión paciente" ...
datos_limpios <- datos
datos_limpios <- datos_limpios %>%
mutate(
grupo = ifelse(grepl("^CASO", id_paciente), "Caso", "Control"),
grupo = factor(grupo, levels = c("Control", "Caso")),
sexo = factor(sexo,
levels = c(0, 1),
labels = c("Femenino", "Masculino")),
hta = factor(hta, levels = c(0, 1), labels = c("No", "Si")),
dbt = factor(dbt, levels = c(0, 1), labels = c("No", "Si")),
dlp = factor(dlp, levels = c(0, 1), labels = c("No", "Si")),
tbq = factor(tbq, levels = c(0, 1), labels = c("No", "Si")),
extbq = factor(extbq, levels = c(0, 1), labels = c("No", "Si")),
dre = factor(dre, levels = c(0, 1), labels = c("No", "Si")),
intensificacion_tto = factor(intensificacion_tto,
levels = c(0, 1),
labels = c("No", "Si")),
combinacion_DMARDs = factor(combinacion_DMARDs,
levels = c(0, 1),
labels = c("No", "Si")),
recibio_bDMARD = factor(recibio_bDMARD,
levels = c(0, 1),
labels = c("No", "Si")),
recibio_tsDMARD = factor(recibio_tsDMARD,
levels = c(0, 1),
labels = c("No", "Si")),
recaída = factor(recaída,
levels = c(0, 1),
labels = c("No", "Si")),
DMARD_inicial_tipo = factor(DMARD_inicial_tipo),
DMARD_inicial_cual = factor(DMARD_inicial_cual),
motivo_fin_DMARD = factor(motivo_fin_DMARD)
)
str(datos_limpios)
## tibble [100 × 36] (S3: tbl_df/tbl/data.frame)
## $ site : chr [1:100] "HIQ" "HIQ" "HIQ" "HIQ" ...
## $ id_paciente : chr [1:100] "CASO0001" "CASO0002" "CASO0003" "CASO0004" ...
## $ sexo : Factor w/ 2 levels "Femenino","Masculino": 2 2 2 1 1 1 1 2 1 1 ...
## $ fecha_nac : POSIXct[1:100], format: "1971-05-20" "1977-08-21" ...
## $ edad : num [1:100] 47 38 36 56 25 62 59 45 62 36 ...
## $ hta : Factor w/ 2 levels "No","Si": 1 1 1 1 1 1 1 1 2 1 ...
## $ dbt : Factor w/ 2 levels "No","Si": 1 1 1 1 1 1 1 1 1 1 ...
## $ dlp : Factor w/ 2 levels "No","Si": 2 1 1 2 1 1 1 1 1 1 ...
## $ tbq : Factor w/ 2 levels "No","Si": 1 1 1 1 1 1 1 1 1 1 ...
## $ extbq : Factor w/ 2 levels "No","Si": 2 1 1 1 1 1 1 1 2 1 ...
## $ fecha_diagnóstico : POSIXct[1:100], format: "2019-01-08" "2016-06-01" ...
## $ lar_título_inicial : num [1:100] 1024 60 500 98 14 ...
## $ ccp_título_inicial : num [1:100] 534 196 1 113 86 15 329 200 62 5 ...
## $ vsg_inicial : num [1:100] 42 110 12 37 44 10 67 10 50 49 ...
## $ pcr_inicial : num [1:100] 96 9 1 5.3 9 7.7 76.8 1.8 4 6 ...
## $ dre : Factor w/ 2 levels "No","Si": 1 1 1 1 1 1 1 1 1 NA ...
## $ nad_inicial : num [1:100] 11 10 5 3 10 3 9 12 13 10 ...
## $ nat_inicial : num [1:100] 9 10 5 7 10 8 8 12 13 10 ...
## $ DMARD_inicial_fecha : POSIXct[1:100], format: "2019-01-14" "2016-06-01" ...
## $ DMARD_inicial_tipo : Factor w/ 1 level "csDMARD": 1 1 1 1 1 1 1 1 1 1 ...
## $ DMARD_inicial_cual : Factor w/ 3 levels "HCQ","LEF","MTX": 3 3 3 3 3 3 3 3 3 3 ...
## $ DMARD_inicial_dosis : num [1:100] 25 25 25 15 25 25 15 15 25 25 ...
## $ PDN_inicial_fecha : POSIXct[1:100], format: "2019-01-14" "2016-06-01" ...
## $ PDN_inicial_dosis : num [1:100] 20 8 8 8 8 8 8 8 8 8 ...
## $ intensificacion_tto : Factor w/ 2 levels "No","Si": 2 2 2 2 2 1 2 1 2 2 ...
## $ combinacion_DMARDs : Factor w/ 2 levels "No","Si": 2 2 2 2 2 1 2 1 2 2 ...
## $ cantidad_lineas_tto : num [1:100] 2 2 3 3 2 1 5 1 3 2 ...
## $ recibio_bDMARD : Factor w/ 2 levels "No","Si": 1 1 2 2 1 1 2 1 1 1 ...
## $ recibio_tsDMARD : Factor w/ 2 levels "No","Si": 1 1 1 1 1 1 1 1 2 1 ...
## $ fecha_fin_ultimo_DMARD : POSIXct[1:100], format: "2022-11-15" "2022-05-28" ...
## $ fecha_inicio_remision_sostenida: POSIXct[1:100], format: "2023-11-15" "2023-05-28" ...
## $ recaída : Factor w/ 2 levels "No","Si": 1 1 1 1 2 1 2 1 1 1 ...
## $ fecha_recaída : POSIXct[1:100], format: NA NA ...
## $ fecha_última_visita : POSIXct[1:100], format: "2024-05-09" "2024-06-08" ...
## $ motivo_fin_DMARD : Factor w/ 7 levels "Decisión co1partida paciente-1édico",..: 3 3 3 3 5 5 6 5 5 5 ...
## $ grupo : Factor w/ 2 levels "Control","Caso": 2 2 2 2 2 2 2 2 2 2 ...
datos_limpios <- datos_limpios %>%
mutate(
across(
contains("fecha"),
as.Date
)
)
str(datos_limpios)
## tibble [100 × 36] (S3: tbl_df/tbl/data.frame)
## $ site : chr [1:100] "HIQ" "HIQ" "HIQ" "HIQ" ...
## $ id_paciente : chr [1:100] "CASO0001" "CASO0002" "CASO0003" "CASO0004" ...
## $ sexo : Factor w/ 2 levels "Femenino","Masculino": 2 2 2 1 1 1 1 2 1 1 ...
## $ fecha_nac : Date[1:100], format: "1971-05-20" "1977-08-21" ...
## $ edad : num [1:100] 47 38 36 56 25 62 59 45 62 36 ...
## $ hta : Factor w/ 2 levels "No","Si": 1 1 1 1 1 1 1 1 2 1 ...
## $ dbt : Factor w/ 2 levels "No","Si": 1 1 1 1 1 1 1 1 1 1 ...
## $ dlp : Factor w/ 2 levels "No","Si": 2 1 1 2 1 1 1 1 1 1 ...
## $ tbq : Factor w/ 2 levels "No","Si": 1 1 1 1 1 1 1 1 1 1 ...
## $ extbq : Factor w/ 2 levels "No","Si": 2 1 1 1 1 1 1 1 2 1 ...
## $ fecha_diagnóstico : Date[1:100], format: "2019-01-08" "2016-06-01" ...
## $ lar_título_inicial : num [1:100] 1024 60 500 98 14 ...
## $ ccp_título_inicial : num [1:100] 534 196 1 113 86 15 329 200 62 5 ...
## $ vsg_inicial : num [1:100] 42 110 12 37 44 10 67 10 50 49 ...
## $ pcr_inicial : num [1:100] 96 9 1 5.3 9 7.7 76.8 1.8 4 6 ...
## $ dre : Factor w/ 2 levels "No","Si": 1 1 1 1 1 1 1 1 1 NA ...
## $ nad_inicial : num [1:100] 11 10 5 3 10 3 9 12 13 10 ...
## $ nat_inicial : num [1:100] 9 10 5 7 10 8 8 12 13 10 ...
## $ DMARD_inicial_fecha : Date[1:100], format: "2019-01-14" "2016-06-01" ...
## $ DMARD_inicial_tipo : Factor w/ 1 level "csDMARD": 1 1 1 1 1 1 1 1 1 1 ...
## $ DMARD_inicial_cual : Factor w/ 3 levels "HCQ","LEF","MTX": 3 3 3 3 3 3 3 3 3 3 ...
## $ DMARD_inicial_dosis : num [1:100] 25 25 25 15 25 25 15 15 25 25 ...
## $ PDN_inicial_fecha : Date[1:100], format: "2019-01-14" "2016-06-01" ...
## $ PDN_inicial_dosis : num [1:100] 20 8 8 8 8 8 8 8 8 8 ...
## $ intensificacion_tto : Factor w/ 2 levels "No","Si": 2 2 2 2 2 1 2 1 2 2 ...
## $ combinacion_DMARDs : Factor w/ 2 levels "No","Si": 2 2 2 2 2 1 2 1 2 2 ...
## $ cantidad_lineas_tto : num [1:100] 2 2 3 3 2 1 5 1 3 2 ...
## $ recibio_bDMARD : Factor w/ 2 levels "No","Si": 1 1 2 2 1 1 2 1 1 1 ...
## $ recibio_tsDMARD : Factor w/ 2 levels "No","Si": 1 1 1 1 1 1 1 1 2 1 ...
## $ fecha_fin_ultimo_DMARD : Date[1:100], format: "2022-11-15" "2022-05-28" ...
## $ fecha_inicio_remision_sostenida: Date[1:100], format: "2023-11-15" "2023-05-28" ...
## $ recaída : Factor w/ 2 levels "No","Si": 1 1 1 1 2 1 2 1 1 1 ...
## $ fecha_recaída : Date[1:100], format: NA NA ...
## $ fecha_última_visita : Date[1:100], format: "2024-05-09" "2024-06-08" ...
## $ motivo_fin_DMARD : Factor w/ 7 levels "Decisión co1partida paciente-1édico",..: 3 3 3 3 5 5 6 5 5 5 ...
## $ grupo : Factor w/ 2 levels "Control","Caso": 2 2 2 2 2 2 2 2 2 2 ...
4.1 Distribución casos/controles
table(datos_limpios$grupo)
##
## Control Caso
## 75 25
Interpretación: La base quedó conformada por 100 pacientes, distribuidos en 25 casos y 75 controles, manteniendo la relación de 1:3 prevista en el diseño del estudio.
4.2 Duplicados
sum(duplicated(datos_limpios$id_paciente))
## [1] 0
Interpretación: No se identificaron identificadores de pacientes duplicados, por lo que cada registro corresponde a un individuo único y no existen observaciones repetidas que puedan sesgar los análisis posteriores.
4.3 Distribución por centro
table(datos_limpios$site)
##
## HIBA HILP HIQ HSJD IREP
## 8 12 40 36 4
table(datos_limpios$site,
datos_limpios$grupo)
##
## Control Caso
## HIBA 6 2
## HILP 9 3
## HIQ 30 10
## HSJD 27 9
## IREP 3 1
Interpretación: La cohorte multicéntrica quedó integrada por 100 pacientes provenientes de cinco centros. El Hospital Zonal General de Agudos Dr. Isidoro Iriarte de Quilmes (HIQ) aportó 40 pacientes (10 casos y 30 controles), el Hospital San Juan de Dios de La Plata (HSJD) 36 pacientes (9 casos y 27 controles), el Hospital Italiano de Buenos Aires (HIBA) 8 pacientes (2 casos y 6 controles), el Hospital Italiano de La Plata (HILP) 12 pacientes (3 casos y 9 controles) y el IREP 4 pacientes (1 caso y 3 controles). En todos los centros se mantuvo la relación 1:3 entre casos y controles establecida en el diseño del estudio.
5.1 Conteo de NA
colSums(is.na(datos_limpios))
## site id_paciente
## 0 0
## sexo fecha_nac
## 0 1
## edad hta
## 0 0
## dbt dlp
## 0 0
## tbq extbq
## 0 0
## fecha_diagnóstico lar_título_inicial
## 0 0
## ccp_título_inicial vsg_inicial
## 0 1
## pcr_inicial dre
## 11 2
## nad_inicial nat_inicial
## 1 1
## DMARD_inicial_fecha DMARD_inicial_tipo
## 1 0
## DMARD_inicial_cual DMARD_inicial_dosis
## 0 0
## PDN_inicial_fecha PDN_inicial_dosis
## 11 0
## intensificacion_tto combinacion_DMARDs
## 0 0
## cantidad_lineas_tto recibio_bDMARD
## 0 0
## recibio_tsDMARD fecha_fin_ultimo_DMARD
## 0 75
## fecha_inicio_remision_sostenida recaída
## 75 75
## fecha_recaída fecha_última_visita
## 97 75
## motivo_fin_DMARD grupo
## 75 0
Interpretación: Las variables correspondientes a la evolución de los casos (fecha de finalización del último DMARD, fecha de inicio de la remisión sostenida, motivo de suspensión del DMARD, recaída y fecha de última visita) presentan valores ausentes en los controles por definición del diseño del estudio, por lo que corresponden a valores estructuralmente ausentes y no a datos faltantes. Asimismo, la fecha de recaída sólo se encuentra disponible en los pacientes que presentaron dicho evento. En las variables basales, la completitud fue elevada. Los escasos valores ausentes observados correspondieron principalmente a PCR basal y fecha de inicio de prednisona, con ausencias aisladas en fecha de nacimiento, VSG, daño radiológico estructural, NAD, NAT y fecha de inicio del DMARD. No se identificó un patrón que sugiriera pérdidas sistemáticas de información.
colSums(is.na(
datos_limpios %>%
select(
edad,
fecha_nac,
lar_título_inicial,
ccp_título_inicial,
vsg_inicial,
pcr_inicial,
dre,
nat_inicial,
DMARD_inicial_fecha,
DMARD_inicial_cual,
PDN_inicial_fecha,
combinacion_DMARDs
)
))
## edad fecha_nac lar_título_inicial ccp_título_inicial
## 0 1 0 0
## vsg_inicial pcr_inicial dre nat_inicial
## 1 11 2 1
## DMARD_inicial_fecha DMARD_inicial_cual PDN_inicial_fecha combinacion_DMARDs
## 1 0 11 0
Interpretación: Entre las variables basales se observó una elevada completitud de los datos. La PCR basal presentó 11 valores ausentes, mientras que VSG, DRE, fecha de nacimiento, NAD y NAT presentaron únicamente uno o dos valores ausentes. La fecha de inicio de prednisona presentó 11 valores ausentes, que en su mayoría correspondieron a pacientes que no recibieron corticoterapia al inicio del tratamiento; adicionalmente, se observó un único dato faltante para la fecha de inicio del DMARD. En conjunto, la magnitud de los datos faltantes fue baja y no se observó un patrón evidente que sugiriera pérdidas sistemáticas de información en las variables basales.
5.2 Identificar quiénes son los pacientes con NA
reales:
datos_limpios %>%
filter(is.na(pcr_inicial)) %>%
select(
id_paciente,
grupo,
edad,
fecha_diagnóstico,
lar_título_inicial,
ccp_título_inicial,
vsg_inicial,
pcr_inicial
) %>%
knitr::kable()
| id_paciente | grupo | edad | fecha_diagnóstico | lar_título_inicial | ccp_título_inicial | vsg_inicial | pcr_inicial |
|---|---|---|---|---|---|---|---|
| CASO0012 | Caso | 58 | 2010-11-20 | 430 | 236 | 38 | NA |
| CTRL0001 | Control | 42 | 2019-12-14 | 60 | 36 | 53 | NA |
| CTRL0007 | Control | 37 | 2014-10-28 | 0 | 114 | 12 | NA |
| CTRL0026 | Control | 67 | 2017-05-23 | 500 | 196 | NA | NA |
| CTRL0028 | Control | 52 | 2018-11-22 | 500 | 200 | 95 | NA |
| CTRL0031 | Control | 66 | 2010-08-19 | 0 | 107 | 55 | NA |
| CTRL0033 | Control | 61 | 2011-08-17 | 65 | 145 | 32 | NA |
| CTRL0034 | Control | 55 | 2010-01-03 | 170 | 182 | 40 | NA |
| CTRL0035 | Control | 57 | 2010-03-08 | 70 | 275 | 18 | NA |
| CTRL0036 | Control | 58 | 2013-07-11 | 60 | 200 | 44 | NA |
| CTRL0065 | Control | 35 | 2023-07-27 | 137 | 500 | 30 | NA |
datos_limpios %>%
filter(is.na(dre)) %>%
select(
id_paciente,
grupo,
lar_título_inicial,
ccp_título_inicial,
dre
) %>%
knitr::kable()
| id_paciente | grupo | lar_título_inicial | ccp_título_inicial | dre |
|---|---|---|---|---|
| CASO0010 | Caso | 92 | 5.0 | NA |
| CASO0022 | Caso | 95 | 195.6 | NA |
Interpretación: Se identificaron 11 pacientes con PCR basal faltante y 2 pacientes con daño radiológico estructural basal no documentado. Los pacientes con daño radiológico estructural no documentado presentaban látex AR y/o anti-CCP positivos, por lo que cumplían el criterio de seropositividad establecido para el estudio. Tras la revisión manual de las historias clínicas, los valores ausentes fueron conservados como NA para los análisis posteriores.
5.3 Patrón gráfico de datos faltantes
(vismiss):
vis_miss(datos_limpios)
Interpretación: Las variables relacionadas con la suspensión de DMARDs, el inicio de la remisión sostenida, la recaída y el seguimiento posterior fueron registradas exclusivamente en los casos. Por lo tanto, los valores ausentes observados en los controles para estas variables corresponden a ausencias estructurales por diseño y no a datos faltantes.
La exploración visual mostró una baja frecuencia de valores faltantes en las variables basales, sin evidenciar una concentración marcada de datos ausentes en pacientes específicos. Los valores faltantes basales identificados previamente fueron conservados como NA para los análisis correspondientes.
datos_auditoria <- datos_limpios %>%
select(
-fecha_fin_ultimo_DMARD,
-fecha_inicio_remision_sostenida,
-motivo_fin_DMARD,
-recaída,
-fecha_recaída,
-fecha_última_visita
)
vis_miss(datos_auditoria)
Interpretación: Tras excluir las variables registradas exclusivamente en los casos, la proporción global de datos faltantes fue del 1,0%. No se observó un patrón evidente de concentración o agrupamiento de valores faltantes en pacientes específicos, lo que refleja una elevada completitud de la base para el análisis estadístico.
En conjunto, la base presentó un alto grado de completitud. Los escasos valores faltantes correspondieron principalmente a variables basales y no mostraron un patrón visual sugestivo de pérdidas sistemáticas de información.
6.1 Distribución de los grupos
table(datos_limpios$grupo)
##
## Control Caso
## 75 25
prop.table(table(datos_limpios$grupo))*100
##
## Control Caso
## 75 25
Interpretación: Se incluyeron 100 pacientes con artritis reumatoidea seropositiva. Veinticinco pacientes (25%) cumplieron los criterios de remisión sostenida libre de DMARDs (casos), mientras que 75 pacientes (75%) conformaron el grupo control, manteniéndose la relación 1:3 entre casos y controles prevista en el diseño del estudio.
6.2 Sexo
table(datos_limpios$sexo)
##
## Femenino Masculino
## 82 18
prop.table(table(datos_limpios$sexo))*100
##
## Femenino Masculino
## 82 18
Interpretación: La población estuvo compuesta predominantemente por mujeres (82%), en concordancia con la epidemiología conocida de la artritis reumatoidea.
6.3 Evaluación de la distribución de variables continuas
vars_continuas <- datos_limpios %>%
select(
edad,
lar_título_inicial,
ccp_título_inicial,
vsg_inicial,
pcr_inicial
)
summary(vars_continuas)
## edad lar_título_inicial ccp_título_inicial vsg_inicial
## Min. :16.00 Min. : 0.0 Min. : 0.00 Min. : 6.00
## 1st Qu.:43.75 1st Qu.: 24.1 1st Qu.: 37.85 1st Qu.: 25.40
## Median :50.50 Median : 60.0 Median : 113.50 Median : 38.90
## Mean :50.86 Mean : 133.3 Mean : 195.07 Mean : 39.64
## 3rd Qu.:61.00 3rd Qu.: 116.1 3rd Qu.: 196.00 3rd Qu.: 48.90
## Max. :81.00 Max. :2000.0 Max. :1200.00 Max. :110.00
## NA's :1
## pcr_inicial
## Min. : 1.0
## 1st Qu.: 3.9
## Median : 8.0
## Mean :11.9
## 3rd Qu.:14.2
## Max. :96.0
## NA's :11
describe(vars_continuas)
## vars n mean sd median trimmed mad min max range
## edad 1 100 50.86 12.50 50.5 51.39 12.60 16 81 65
## lar_título_inicial 2 100 133.26 261.09 60.0 73.27 63.90 0 2000 2000
## ccp_título_inicial 3 100 195.07 272.44 113.5 127.12 122.31 0 1200 1200
## vsg_inicial 4 99 39.64 22.32 38.9 37.50 17.20 6 110 104
## pcr_inicial 5 89 11.90 14.90 8.0 8.95 7.12 1 96 95
## skew kurtosis se
## edad -0.33 -0.18 1.25
## lar_título_inicial 4.60 26.11 26.11
## ccp_título_inicial 2.44 5.24 27.24
## vsg_inicial 0.85 0.76 2.24
## pcr_inicial 3.37 13.70 1.58
6.3.1 Edad
par(mfrow = c(1,2))
hist(datos_limpios$edad,
main = "Edad",
xlab = "Años")
qqnorm(datos_limpios$edad,
main = "QQ-plot Edad")
qqline(datos_limpios$edad)
options(scipen = 999, digits = 3, encoding = 'UTF-8')
shapiro.test(datos_limpios$edad)
##
## Shapiro-Wilk normality test
##
## data: datos_limpios$edad
## W = 1, p-value = 0.4
6.3.2 Título de Látex AR
par(mfrow = c(1,2))
hist(datos_limpios$lar_título_inicial,
main = "Látex AR",
xlab = "Título")
qqnorm(datos_limpios$lar_título_inicial,
main = "QQ-plot Látex AR")
qqline(datos_limpios$lar_título_inicial)
shapiro.test(datos_limpios$lar_título_inicial)
##
## Shapiro-Wilk normality test
##
## data: datos_limpios$lar_título_inicial
## W = 0.5, p-value <0.0000000000000002
6.3.3 Título de Anti-CCP
par(mfrow = c(1,2))
hist(datos_limpios$ccp_título_inicial,
main = "Anti-CCP",
xlab = "Título")
qqnorm(datos_limpios$ccp_título_inicial,
main = "QQ-plot Anti-CCP")
qqline(datos_limpios$ccp_título_inicial)
shapiro.test(datos_limpios$ccp_título_inicial)
##
## Shapiro-Wilk normality test
##
## data: datos_limpios$ccp_título_inicial
## W = 0.6, p-value = 0.00000000000002
6.3.4 VSG basal
par(mfrow = c(1,2))
hist(na.omit(datos_limpios$vsg_inicial),
main = "VSG basal",
xlab = "mm/h")
qqnorm(na.omit(datos_limpios$vsg_inicial),
main = "QQ-plot VSG")
qqline(na.omit(datos_limpios$vsg_inicial))
shapiro.test(na.omit(datos_limpios$vsg_inicial))
##
## Shapiro-Wilk normality test
##
## data: na.omit(datos_limpios$vsg_inicial)
## W = 0.9, p-value = 0.0001
6.3.5 PCR basal
par(mfrow = c(1,2))
hist(na.omit(datos_limpios$pcr_inicial),
main = "PCR basal",
xlab = "mg/L")
qqnorm(na.omit(datos_limpios$pcr_inicial),
main = "QQ-plot PCR")
qqline(na.omit(datos_limpios$pcr_inicial))
shapiro.test(na.omit(datos_limpios$pcr_inicial))
##
## Shapiro-Wilk normality test
##
## data: na.omit(datos_limpios$pcr_inicial)
## W = 0.6, p-value = 0.00000000000008
Interpretación: La inspección gráfica mediante histogramas y gráficos Q-Q, junto con la prueba de Shapiro-Wilk, mostró que la mayoría de las variables continuas no siguieron una distribución normal. Los títulos de factor reumatoideo (Látex AR), anti-CCP y la PCR basal presentaron una marcada asimetría positiva, con presencia de valores extremos, mientras que la VSG mostró una asimetría positiva menos pronunciada. La edad fue la única variable con una distribución aproximadamente normal. En consecuencia, las variables continuas se resumirán mediante mediana y rango intercuartílico (RIQ) y se utilizarán pruebas no paramétricas para las comparaciones entre grupos.
6.3.6 BoxPlot de las variables continuas
boxplot(datos_limpios$edad)
boxplot(datos_limpios$lar_título_inicial)
boxplot(datos_limpios$ccp_título_inicial)
boxplot(datos_limpios$vsg_inicial)
boxplot(datos_limpios$pcr_inicial)
Interpretación: Los diagramas de caja mostraron valores extremos principalmente en los títulos de factor reumatoideo (Látex AR) y anti-CCP y, en menor medida, en la VSG y la PCR basal. La edad presentó una distribución homogénea, con un único valor extremo inferior. La revisión individual de los registros confirmó que los valores extremos correspondían a resultados clínicos y de laboratorio plausibles, por lo que no se consideró apropiado excluirlos ni modificarlos.
Objetivo: Evaluar comparabilidad basal entre casos y controles.
La evaluación exploratoria de las variables continuas mediante histogramas, gráficos Q-Q y prueba de Shapiro-Wilk evidenció desviaciones de la normalidad para la mayoría de las variables analizadas. En consecuencia, las variables continuas se describieron como mediana (RIC) y las comparaciones entre grupos se realizaron mediante la prueba de Wilcoxon-Mann-Whitney. Las variables categóricas se presentan como frecuencia absoluta y porcentaje, utilizando prueba exacta de Fisher para las comparaciones entre grupos cuando correspondió.
datos_limpios <- datos_limpios %>%
mutate(
grupo = factor(grupo, levels = c("Caso", "Control")),
dosis_mtx_inicial = ifelse(
DMARD_inicial_cual == "MTX",
DMARD_inicial_dosis,
NA
),
dosis_mtx_inicial = as.numeric(dosis_mtx_inicial),
PDN_inicial_dosis = as.numeric(PDN_inicial_dosis),
demora_dmard_meses = as.numeric(
difftime(
DMARD_inicial_fecha,
fecha_diagnóstico,
units = "days"
)
) / 30.44
)
tabla1 <- datos_limpios %>%
select(
grupo,
sexo,
edad,
hta,
dbt,
dlp,
tbq,
lar_título_inicial,
ccp_título_inicial,
vsg_inicial,
pcr_inicial,
dre,
nad_inicial,
nat_inicial,
DMARD_inicial_tipo,
DMARD_inicial_cual,
demora_dmard_meses,
dosis_mtx_inicial,
PDN_inicial_dosis
) %>%
tbl_summary(
by = grupo,
type = list(
demora_dmard_meses ~ "continuous",
dosis_mtx_inicial ~ "continuous",
PDN_inicial_dosis ~ "continuous"
),
statistic = list(
all_continuous() ~ "{median} ({p25} - {p75})",
all_categorical() ~ "{n} ({p}%)"
),
missing = "no",
label = list(
sexo ~ "Sexo",
edad ~ "Edad",
hta ~ "HTA",
dbt ~ "DBT",
dlp ~ "DLP",
tbq ~ "Tabaquismo actual",
lar_título_inicial ~ "Látex AR basal",
ccp_título_inicial ~ "Anti-CCP basal",
vsg_inicial ~ "VSG basal",
pcr_inicial ~ "PCR basal",
dre ~ "Daño radiológico estructural",
nad_inicial ~ "NAD basal",
nat_inicial ~ "NAT basal",
DMARD_inicial_tipo ~ "Tipo de DMARD inicial",
DMARD_inicial_cual ~ "DMARD inicial",
demora_dmard_meses ~ "Demora diagnóstico–inicio de DMARD (meses)",
dosis_mtx_inicial ~ "Dosis inicial de MTX (mg/semana)",
PDN_inicial_dosis ~ "Dosis inicial de prednisona (mg/día)"
)
) %>%
add_p()
tabla1
| Characteristic | Caso N = 251 |
Control N = 751 |
p-value2 |
|---|---|---|---|
| Sexo | 0.14 | ||
| Femenino | 18 (72%) | 64 (85%) | |
| Masculino | 7 (28%) | 11 (15%) | |
| Edad | 49 (38 - 62) | 51 (44 - 61) | 0.5 |
| HTA | 0.4 | ||
| No | 15 (60%) | 52 (69%) | |
| Si | 10 (40%) | 23 (31%) | |
| DBT | 0.7 | ||
| No | 21 (84%) | 66 (88%) | |
| Si | 4 (16%) | 9 (12%) | |
| DLP | 0.2 | ||
| No | 22 (88%) | 58 (77%) | |
| Si | 3 (12%) | 17 (23%) | |
| Tabaquismo actual | >0.9 | ||
| No | 22 (88%) | 64 (85%) | |
| Si | 3 (12%) | 11 (15%) | |
| Látex AR basal | 81 (46 - 150) | 60 (15 - 115) | 0.071 |
| Anti-CCP basal | 113 (18 - 196) | 114 (38 - 196) | 0.6 |
| VSG basal | 40 (25 - 49) | 38 (26 - 49) | >0.9 |
| PCR basal | 9 (6 - 15) | 8 (3 - 14) | 0.4 |
| Daño radiológico estructural | 0.7 | ||
| No | 15 (65%) | 52 (69%) | |
| Si | 8 (35%) | 23 (31%) | |
| NAD basal | 10.0 (3.5 - 11.0) | 9.0 (6.0 - 13.0) | 0.4 |
| NAT basal | 8 (6 - 9) | 7 (4 - 10) | 0.8 |
| Tipo de DMARD inicial | |||
| csDMARD | 25 (100%) | 75 (100%) | |
| DMARD inicial | 0.4 | ||
| HCQ | 0 (0%) | 1 (1.3%) | |
| LEF | 2 (8.0%) | 2 (2.7%) | |
| MTX | 23 (92%) | 72 (96%) | |
| Demora diagnóstico–inicio de DMARD (meses) | 0.46 (0.00 - 0.89) | 0.39 (0.00 - 1.02) | 0.6 |
| Dosis inicial de MTX (mg/semana) | 15.0 (15.0 - 25.0) | 15.0 (15.0 - 25.0) | 0.4 |
| Dosis inicial de prednisona (mg/día) | 8.0 (7.5 - 10.0) | 8.0 (7.5 - 10.0) | 0.7 |
| 1 n (%); Median (Q1 - Q3) | |||
| 2 Fisher’s exact test; Wilcoxon rank sum test; Pearson’s Chi-squared test; NA | |||
Interpretación: En la comparación de las características basales entre los pacientes que alcanzaron remisión sostenida libre de DMARDs (casos) y los controles, no se observaron diferencias estadísticamente significativas en las variables demográficas, comorbilidades, títulos basales de factor reumatoideo y anti-CCP, reactantes de fase aguda, recuentos articulares, daño radiológico estructural ni características del tratamiento inicial. El título basal de factor reumatoideo fue numéricamente mayor en los casos [81 (RIC 46–150) vs. 60 (RIC 15–115)], aunque la diferencia no alcanzó significación estadística (p = 0,071). La demora entre el diagnóstico y el inicio del primer DMARD también fue similar entre los grupos [0,46 (RIC 0,00–0,89) vs. 0,39 (RIC 0,00–1,02) meses; p = 0,6].
Tiempo desde el diagnóstico de AR hasta la suspensión del último DMARD, en años.
datos_casos_duracion <- datos_limpios %>%
filter(grupo == "Caso") %>%
mutate(
duracion_ar_hasta_fin_dmard_anios =
as.numeric(fecha_fin_ultimo_DMARD - fecha_diagnóstico) / 365.25
)
datos_casos_duracion %>%
select(
id_paciente,
fecha_diagnóstico,
fecha_fin_ultimo_DMARD,
duracion_ar_hasta_fin_dmard_anios
)
## # A tibble: 25 × 4
## id_paciente fecha_diagnóstico fecha_fin_ultimo_DMARD duracion_ar_hasta_fin_…¹
## <chr> <date> <date> <dbl>
## 1 CASO0001 2019-01-08 2022-11-15 3.85
## 2 CASO0002 2016-06-01 2022-05-28 5.99
## 3 CASO0003 2017-11-29 2021-01-19 3.14
## 4 CASO0004 2021-10-07 2024-04-02 2.49
## 5 CASO0005 2018-10-25 2023-11-19 5.07
## 6 CASO0006 2021-12-12 2024-02-15 2.18
## 7 CASO0007 2010-03-17 2023-05-02 13.1
## 8 CASO0008 2020-01-15 2024-12-17 4.92
## 9 CASO0009 2019-10-10 2025-02-16 5.36
## 10 CASO0010 2019-10-22 2025-01-30 5.28
## # ℹ 15 more rows
## # ℹ abbreviated name: ¹duracion_ar_hasta_fin_dmard_anios
summary(datos_casos_duracion$duracion_ar_hasta_fin_dmard_anios)
## Min. 1st Qu. Median Mean 3rd Qu. Max.
## 2.18 4.59 5.09 6.02 5.75 14.52
Interpretación: Entre los pacientes que alcanzaron remisión sostenida libre de DMARDs, la mediana de duración de la AR desde el diagnóstico hasta la suspensión del último DMARD fue de 5,09 años (RIC 4,59–5,75), con un rango de 2,18 a 14,52 años.
datos_casos_duracion <- datos_casos_duracion %>%
mutate(
duracion_ar_2anios = factor(
ifelse(
duracion_ar_hasta_fin_dmard_anios <= 2,
"≤2 años",
">2 años"
),
levels = c("≤2 años", ">2 años")
)
)
table(datos_casos_duracion$duracion_ar_2anios)
##
## ≤2 años >2 años
## 0 25
Interpretación: Ninguno de los pacientes que alcanzó remisión sostenida libre de DMARDs suspendió el último DMARD dentro de los primeros 2 años desde el diagnóstico de AR. La totalidad de los casos presentó una duración de la enfermedad >2 años al momento de la suspensión del tratamiento.
datos_limpios <- datos_limpios %>%
mutate(
fr_cuartil = ntile(lar_título_inicial, 4),
ccp_cuartil = ntile(ccp_título_inicial, 4),
fr_cuartil = factor(
fr_cuartil,
levels = 1:4,
labels = c("Q1", "Q2", "Q3", "Q4")
),
ccp_cuartil = factor(
ccp_cuartil,
levels = 1:4,
labels = c("Q1", "Q2", "Q3", "Q4")
)
)
tabla_serologia_cuartiles <- datos_limpios %>%
select(
grupo,
fr_cuartil,
ccp_cuartil
) %>%
tbl_summary(
by = grupo,
statistic = all_categorical() ~ "{n} ({p}%)",
missing = "no",
label = list(
fr_cuartil ~ "Factor reumatoide por cuartiles",
ccp_cuartil ~ "Anti-CCP por cuartiles"
)
) %>%
add_p(
test = all_categorical() ~ "fisher.test"
)
tabla_serologia_cuartiles
| Characteristic | Caso N = 251 |
Control N = 751 |
p-value2 |
|---|---|---|---|
| Factor reumatoide por cuartiles | 0.4 | ||
| Q1 | 3 (12%) | 22 (29%) | |
| Q2 | 8 (32%) | 17 (23%) | |
| Q3 | 7 (28%) | 18 (24%) | |
| Q4 | 7 (28%) | 18 (24%) | |
| Anti-CCP por cuartiles | >0.9 | ||
| Q1 | 7 (28%) | 18 (24%) | |
| Q2 | 6 (24%) | 19 (25%) | |
| Q3 | 7 (28%) | 18 (24%) | |
| Q4 | 5 (20%) | 20 (27%) | |
| 1 n (%) | |||
| 2 Fisher’s exact test | |||
Interpretación: No se observaron diferencias estadísticamente significativas en la distribución por cuartiles de los títulos basales de factor reumatoideo (p = 0,4) ni de anti-CCP (p > 0,9) entre casos y controles. Para el factor reumatoideo se observó descriptivamente una menor proporción de casos en el primer cuartil, sin evidencia estadística de asociación. La distribución de anti-CCP fue similar entre ambos grupos.
datos_limpios <- datos_limpios %>%
mutate(
fr_q4 = factor(
ifelse(fr_cuartil == "Q4", "Q4", "Q1-Q3"),
levels = c("Q1-Q3", "Q4")
)
)
tabla_fr_q4 <- datos_limpios %>%
select(
grupo,
fr_q4
) %>%
tbl_summary(
by = grupo,
statistic = all_categorical() ~ "{n} ({p}%)",
missing = "no",
label = list(
fr_q4 ~ "Factor reumatoide: cuartil superior"
)
) %>%
add_p(
test = all_categorical() ~ "fisher.test"
)
tabla_fr_q4
| Characteristic | Caso N = 251 |
Control N = 751 |
p-value2 |
|---|---|---|---|
| Factor reumatoide: cuartil superior | 0.8 | ||
| Q1-Q3 | 18 (72%) | 57 (76%) | |
| Q4 | 7 (28%) | 18 (24%) | |
| 1 n (%) | |||
| 2 Fisher’s exact test | |||
Interpretación: La proporción de pacientes con títulos basales de factor reumatoideo en el cuartil superior fue similar entre los casos y los controles (28% vs. 24%; p = 0,8). No se observó evidencia de asociación entre pertenecer al cuartil superior de factor reumatoideo y alcanzar remisión sostenida libre de DMARDs.
datos_limpios <- datos_limpios %>%
mutate(
ccp_q4 = factor(
ifelse(ccp_cuartil == "Q4", "Q4", "Q1-Q3"),
levels = c("Q1-Q3", "Q4")
)
)
tabla_ccp_q4 <- datos_limpios %>%
select(
grupo,
ccp_q4
) %>%
tbl_summary(
by = grupo,
statistic = all_categorical() ~ "{n} ({p}%)",
missing = "no",
label = list(
ccp_q4 ~ "Anti-CCP: cuartil superior"
)
) %>%
add_p(
test = all_categorical() ~ "fisher.test"
)
tabla_ccp_q4
| Characteristic | Caso N = 251 |
Control N = 751 |
p-value2 |
|---|---|---|---|
| Anti-CCP: cuartil superior | 0.6 | ||
| Q1-Q3 | 20 (80%) | 55 (73%) | |
| Q4 | 5 (20%) | 20 (27%) | |
| 1 n (%) | |||
| 2 Fisher’s exact test | |||
Interpretación: La proporción de pacientes con títulos basales de anti-CCP en el cuartil superior fue menor entre los casos que entre los controles (20% vs. 27%); sin embargo, esta diferencia no alcanzó significación estadística (p=0,6). Por lo tanto, no se observó evidencia de asociación entre pertenecer al cuartil superior de anti-CCP y alcanzar remisión sostenida libre de DMARDs.
Distribución de pacientes por decilo de FR
datos_limpios <- datos_limpios %>%
mutate(
fr_decil = ntile(lar_título_inicial, 10),
ccp_decil = ntile(ccp_título_inicial, 10)
)
table(datos_limpios$fr_decil, datos_limpios$grupo)
##
## Caso Control
## 1 0 10
## 2 2 8
## 3 2 8
## 4 2 8
## 5 5 5
## 6 1 9
## 7 5 5
## 8 1 9
## 9 4 6
## 10 3 7
prop.table(
table(datos_limpios$fr_decil, datos_limpios$grupo),
margin = 2
) * 100
##
## Caso Control
## 1 0.00 13.33
## 2 8.00 10.67
## 3 8.00 10.67
## 4 8.00 10.67
## 5 20.00 6.67
## 6 4.00 12.00
## 7 20.00 6.67
## 8 4.00 12.00
## 9 16.00 8.00
## 10 12.00 9.33
library(ggplot2)
library(dplyr)
datos_limpios %>%
count(grupo, fr_decil) %>%
group_by(grupo) %>%
mutate(
porcentaje = 100 * n / sum(n)
) %>%
ggplot(
aes(
x = fr_decil,
y = porcentaje,
fill = grupo
)
) +
geom_col(
position = position_dodge(width = 0.8),
width = 0.7
) +
labs(
title = "Distribución de los títulos basales de factor reumatoide por decilos",
x = "Decilo de factor reumatoide",
y = "Pacientes (%)",
fill = "Grupo"
) +
theme_classic(base_size = 13)
Interpretación: La distribución de los títulos basales de factor reumatoide por decilos no mostró un gradiente evidente entre los pacientes que alcanzaron remisión sostenida libre de DMARDs y los controles. Los casos estuvieron ausentes en el primer decilo y presentaron proporciones mayores en algunos decilos intermedios y superiores, aunque con una distribución irregular y sin un patrón progresivo a medida que aumentaron los títulos. Estos hallazgos no sugieren una relación dosis-respuesta entre el título basal de factor reumatoide y la remisión sostenida libre de DMARDs. La variabilidad observada entre decilos debe interpretarse con cautela debido al reducido número de casos en cada categoría.
Distribución de pacientes por decilo de anti-CCP
tabla_ccp_decil <- table(
datos_limpios$ccp_decil,
datos_limpios$grupo
)
tabla_ccp_decil
##
## Caso Control
## 1 4 6
## 2 3 7
## 3 0 10
## 4 4 6
## 5 2 8
## 6 1 9
## 7 6 4
## 8 1 9
## 9 3 7
## 10 1 9
# Porcentajes dentro de cada grupo
prop.table(tabla_ccp_decil, margin = 2) * 100
##
## Caso Control
## 1 16.00 8.00
## 2 12.00 9.33
## 3 0.00 13.33
## 4 16.00 8.00
## 5 8.00 10.67
## 6 4.00 12.00
## 7 24.00 5.33
## 8 4.00 12.00
## 9 12.00 9.33
## 10 4.00 12.00
datos_limpios %>%
count(ccp_decil, grupo) %>%
group_by(grupo) %>%
mutate(porcentaje = n / sum(n) * 100) %>%
ggplot(aes(x = ccp_decil, y = porcentaje, fill = grupo)) +
geom_col(position = "dodge") +
labs(
title = "Distribución de los títulos basales de anti-CCP por decilos",
x = "Decilo de anti-CCP",
y = "Pacientes (%)",
fill = "Grupo"
) +
theme_classic(base_size = 13)
Interpretación: La distribución de los títulos basales de anti-CCP por decilos mostró variaciones entre casos y controles, sin observarse un patrón progresivo a lo largo de los decilos. Los casos presentaron una mayor concentración en el séptimo decilo (24% vs. 5,3%), mientras que en otros decilos predominaron alternativamente casos o controles. En particular, no se observó una mayor proporción de casos en los decilos más altos (D8-D10). En conjunto, la exploración gráfica no evidencia un gradiente entre títulos crecientes de anti-CCP y la probabilidad de alcanzar remisión sostenida libre de DMARDs. La mayor representación de casos observada en D7 debe interpretarse con cautela dado el reducido número de pacientes por decilo.
Distribución de FR y anti-CCP por decilos: El análisis exploratorio por decilos de los títulos basales de factor reumatoide y anti-CCP no mostró un gradiente consistente entre la magnitud de la seropositividad y el desenlace. No se observó una concentración progresiva de los controles en los decilos superiores ni de los casos en los decilos inferiores. En conjunto, estos hallazgos no sugieren una relación dosis-respuesta evidente entre títulos basales más elevados de autoanticuerpos y persistencia de la enfermedad, ni entre títulos más bajos y remisión sostenida libre de DMARDs.
Objetivo: Describir y comparar la trayectoria terapéutica posterior al diagnóstico entre pacientes que alcanzaron remisión sostenida libre de DMARDs y aquellos que no alcanzaron este desenlace.
Las variables incluidas en este apartado corresponden a características de la trayectoria terapéutica y no a variables basales. Se comparó la frecuencia de intensificación terapéutica, uso combinado de DMARDs, exposición a terapias biológicas o sintéticas dirigidas y número de líneas terapéuticas entre casos y controles. Las variables categóricas se analizaron mediante prueba exacta de Fisher y el número de líneas terapéuticas mediante prueba de Wilcoxon-Mann-Whitney.
datos_limpios <- datos_limpios %>%
mutate(
cantidad_lineas_tto_cat = case_when(
cantidad_lineas_tto == 1 ~ "1",
cantidad_lineas_tto == 2 ~ "2",
cantidad_lineas_tto >= 3 ~ "≥3",
TRUE ~ NA_character_
),
cantidad_lineas_tto_cat = factor(
cantidad_lineas_tto_cat,
levels = c("1", "2", "≥3")
)
)
tabla2 <- datos_limpios %>%
mutate(
grupo = factor(grupo, levels = c("Caso", "Control"))
) %>%
select(
grupo,
intensificacion_tto,
combinacion_DMARDs,
cantidad_lineas_tto_cat,
recibio_bDMARD,
recibio_tsDMARD
) %>%
tbl_summary(
by = grupo,
statistic = list(
all_categorical() ~ "{n} ({p}%)"
),
missing = "no",
label = list(
intensificacion_tto ~ "Intensificación terapéutica",
combinacion_DMARDs ~ "Combinación de DMARDs",
cantidad_lineas_tto_cat ~ "Número de líneas terapéuticas",
recibio_bDMARD ~ "Exposición a bDMARD",
recibio_tsDMARD ~ "Exposición a tsDMARD"
)
) %>%
add_p(
test = list(
all_categorical() ~ "fisher.test"
)
)
tabla2
| Characteristic | Caso N = 251 |
Control N = 751 |
p-value2 |
|---|---|---|---|
| Intensificación terapéutica | 0.8 | ||
| No | 4 (16%) | 16 (21%) | |
| Si | 21 (84%) | 59 (79%) | |
| Combinación de DMARDs | >0.9 | ||
| No | 12 (48%) | 36 (48%) | |
| Si | 13 (52%) | 39 (52%) | |
| Número de líneas terapéuticas | 0.2 | ||
| 1 | 4 (16%) | 18 (24%) | |
| 2 | 11 (44%) | 40 (53%) | |
| ≥3 | 10 (40%) | 17 (23%) | |
| Exposición a bDMARD | 0.5 | ||
| No | 11 (44%) | 26 (35%) | |
| Si | 14 (56%) | 49 (65%) | |
| Exposición a tsDMARD | 0.2 | ||
| No | 17 (68%) | 38 (51%) | |
| Si | 8 (32%) | 37 (49%) | |
| 1 n (%) | |||
| 2 Fisher’s exact test | |||
Interpretación: No se observaron diferencias estadísticamente significativas entre los pacientes que alcanzaron remisión sostenida libre de DMARDs (casos) y los controles en las características de la trayectoria terapéutica evaluadas. La frecuencia de intensificación terapéutica y de uso combinado de DMARDs fue similar entre ambos grupos. Descriptivamente, los casos presentaron con mayor frecuencia tres o más líneas terapéuticas (40% vs. 23%), mientras que la exposición a tsDMARD fue menos frecuente (32% vs. 49%); ninguna de estas diferencias alcanzó significación estadística. La exposición a bDMARD tampoco difirió significativamente entre los grupos (56% vs. 65%; p = 0,5).
Comentario: Los pacientes de ambos grupos presentaron características basales comparables y no se observaron diferencias estadísticamente significativas en las trayectorias terapéuticas evaluadas. A pesar de ello, sólo un subgrupo alcanzó remisión sostenida libre de DMARDs.
Esta observación plantea la posibilidad de que existan factores biológicos o clínicos intrínsecos, no capturados por las variables evaluadas en este estudio, que influyan en la capacidad de algunos pacientes para alcanzar este desenlace.
Por otro lado, los casos no parecen ser simplemente pacientes con una AR más leve que casi no requirió tratamiento. De hecho, 40% necesitó ≥3 líneas y 56% llegó a bDMARD. Esto puede constituir un hallazgo relevante: la posterior remisión sostenida libre de DMARDs no necesariamente estuvo precedida por una trayectoria terapéutica de baja intensidad.
9.1 Tiempo hasta la recaída.
datos_casos_recaida <- datos_limpios %>%
filter(grupo == "Caso", recaída == "Si") %>%
mutate(
tiempo_hasta_recaida_meses = as.numeric(
fecha_recaída - fecha_inicio_remision_sostenida
) / 30.44
)
datos_casos_recaida %>%
select(
id_paciente,
fecha_inicio_remision_sostenida,
fecha_recaída,
tiempo_hasta_recaida_meses
)
## # A tibble: 3 × 4
## id_paciente fecha_inicio_remision_soste…¹ fecha_recaída tiempo_hasta_recaida…²
## <chr> <date> <date> <dbl>
## 1 CASO0005 2024-11-19 2025-05-13 5.75
## 2 CASO0007 2024-05-02 2026-01-02 20.0
## 3 CASO0021 2020-04-28 2020-05-29 1.02
## # ℹ abbreviated names: ¹fecha_inicio_remision_sostenida,
## # ²tiempo_hasta_recaida_meses
summary(datos_casos_recaida$tiempo_hasta_recaida_meses)
## Min. 1st Qu. Median Mean 3rd Qu. Max.
## 1.02 3.38 5.75 8.94 12.89 20.04
Interpretación: De los 25 pacientes que alcanzaron remisión sostenida libre de DMARDs, 3 (12%) presentaron una recaída durante el seguimiento. Entre los pacientes que recayeron, la mediana del tiempo desde el inicio de la remisión sostenida hasta la recaída fue de 5,8 meses (RIC: 3,4–12,9 meses), con un rango de 1,0 a 20,0 meses.
9.2 Tiempo de seguimiento de los casos.
datos_casos_seguimiento <- datos_limpios %>%
filter(grupo == "Caso") %>%
mutate(
tiempo_seguimiento_meses = as.numeric(
fecha_última_visita - fecha_inicio_remision_sostenida
) / 30.44
)
datos_casos_seguimiento %>%
select(
id_paciente,
recaída,
fecha_inicio_remision_sostenida,
fecha_recaída,
fecha_última_visita,
tiempo_seguimiento_meses
)
## # A tibble: 25 × 6
## id_paciente recaída fecha_inicio_remision…¹ fecha_recaída fecha_última_visita
## <chr> <fct> <date> <date> <date>
## 1 CASO0001 No 2023-11-15 NA 2024-05-09
## 2 CASO0002 No 2023-05-28 NA 2024-06-08
## 3 CASO0003 No 2022-01-19 NA 2026-01-24
## 4 CASO0004 No 2025-04-02 NA 2026-05-19
## 5 CASO0005 Si 2024-11-19 2025-05-13 2026-04-14
## 6 CASO0006 No 2025-02-15 NA 2026-04-28
## 7 CASO0007 Si 2024-05-02 2026-01-02 2026-03-01
## 8 CASO0008 No 2025-12-17 NA 2026-03-20
## 9 CASO0009 No 2026-02-16 NA 2026-08-07
## 10 CASO0010 No 2026-01-30 NA 2026-04-21
## # ℹ 15 more rows
## # ℹ abbreviated name: ¹fecha_inicio_remision_sostenida
## # ℹ 1 more variable: tiempo_seguimiento_meses <dbl>
summary(datos_casos_seguimiento$tiempo_seguimiento_meses)
## Min. 1st Qu. Median Mean 3rd Qu. Max.
## 1.3 3.4 7.3 14.7 13.5 131.5
Interpretación: Los 25 pacientes que alcanzaron remisión sostenida libre de DMARDs tuvieron un seguimiento posterior al inicio de la remisión con una mediana de 6,1 meses (RIC: 3,4–13,5). El tiempo de seguimiento osciló entre 1,3 y 131,5 meses, evidenciando una marcada variabilidad en la duración del seguimiento entre los pacientes.
Título: Remisión sostenida libre de DMARDs en artritis reumatoide seropositiva: estudio multicéntrico de una cohorte argentina.
Autores: Saravia NK¹, Malah V², Mareco J³, Sirera AJ³, García-Salinas R⁴, Rosa JE⁵, Nagy I⁵, Dal Pra F⁶, Valdez Donelli A⁶, Vinicki JP¹
¹ Unidad de Reumatología, Hospital Zonal General de Agudos
Dr. Isidoro Iriarte, Quilmes, Buenos Aires, Argentina.
² Unidad de Reumatología, Sanatorio Modelo de Quilmes, Quilmes, Buenos
Aires, Argentina.
³ Unidad de Reumatología, HIEAyC “San Juan de Dios”, La Plata, Buenos
Aires, Argentina.
⁴ Unidad de Reumatología, Hospital Italiano de La Plata, Buenos Aires,
Argentina.
⁵ Sección Reumatología, Servicio de Clínica Médica, Hospital Italiano de
Buenos Aires, Buenos Aires, Argentina.
⁶ Servicio de Reumatología, Instituto de Rehabilitación Psicofísica
(IREP), Buenos Aires, Argentina.
Introducción: La remisión sostenida libre de fármacos modificadores de la enfermedad (DMARDs) constituye un desenlace poco frecuente en artritis reumatoide (AR). La caracterización clínica de estos pacientes podría contribuir a identificar perfiles con mayor probabilidad de alcanzar este estado.
Objetivo: Comparar las características basales y la trayectoria terapéutica de pacientes con AR seropositiva que alcanzaron remisión sostenida libre de DMARDs con aquellas de pacientes que no alcanzaron este desenlace.
Métodos: Estudio multicéntrico de casos y controles. Se incluyeron pacientes con AR según criterios ACR/EULAR 2010 y seropositividad para factor reumatoide y/o anti-CCP. Los casos presentaban remisión sostenida libre de DMARDs durante al menos 12 meses, mientras que los controles correspondían a pacientes de la misma población fuente que no alcanzaron dicho desenlace. Se compararon características clínicas, serológicas y terapéuticas mediante pruebas de Wilcoxon-Mann-Whitney y exacta de Fisher, según correspondiera.
Resultados: Se incluyeron 100 pacientes (25 casos y 75 controles). No se observaron diferencias estadísticamente significativas entre ambos grupos en edad, sexo, comorbilidades, títulos basales de factor reumatoide y anti-CCP, marcadores inflamatorios, actividad clínica basal ni daño radiográfico estructural. La distribución de los títulos de factor reumatoide y anti-CCP por cuartiles tampoco difirió entre los grupos (p=0,4 y p>0,9, respectivamente). El tratamiento inicial fue comparable, incluyendo el tiempo entre el diagnóstico y el inicio del primer DMARD [0,46 meses (RIC 0,00-0,89) en casos vs. 0,39 meses (RIC 0,00-1,02) en controles; p=0,6], el csDMARD utilizado y las dosis iniciales de metotrexato y prednisona. Tampoco se observaron diferencias significativas en la trayectoria terapéutica respecto de intensificación, combinación de DMARDs, número de líneas terapéuticas y exposición a bDMARDs o tsDMARDs. Entre los pacientes que alcanzaron remisión sostenida libre de DMARDs, 3/25 (12%) presentaron recaída durante el seguimiento.
Conclusión: En este estudio multicéntrico no se identificaron características clínicas, serológicas ni terapéuticas asociadas con la remisión sostenida libre de DMARDs. Los pacientes que alcanzaron este desenlace no presentaron necesariamente una trayectoria terapéutica de menor intensidad. Estos resultados sugieren que las variables clínicas habitualmente disponibles podrían ser insuficientes para identificar a los pacientes con mayor probabilidad de alcanzar remisión sostenida libre de tratamiento. Debido al reducido número de casos, estos hallazgos deben considerarse exploratorios y requieren confirmación en estudios de mayor tamaño.