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] 48 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" "motivo_fin_DMARD"
## [33] "recaída" "fecha_recaída"
## [35] "fecha_última_visita"
str(datos)
## tibble [48 × 35] (S3: tbl_df/tbl/data.frame)
## $ site : chr [1:48] "HIQ" "HIQ" "HIQ" "HIQ" ...
## $ id_paciente : chr [1:48] "CASO0001" "CASO0002" "CASO0003" "CASO0004" ...
## $ sexo : num [1:48] 1 1 1 0 0 0 0 1 0 0 ...
## $ fecha_nac : POSIXct[1:48], format: "1971-05-20" "1977-08-21" ...
## $ edad : num [1:48] 55 48 45 60 32 67 59 51 68 43 ...
## $ hta : num [1:48] 0 0 0 0 0 0 0 0 1 0 ...
## $ dbt : num [1:48] 0 0 0 0 0 0 0 0 0 0 ...
## $ dlp : num [1:48] 1 0 0 1 0 0 0 0 0 0 ...
## $ tbq : num [1:48] 0 0 0 0 0 0 0 0 0 0 ...
## $ extbq : num [1:48] 1 0 0 0 0 0 0 0 1 0 ...
## $ fecha_diagnóstico : POSIXct[1:48], format: "2019-01-08" "2016-06-01" ...
## $ lar_título_inicial : num [1:48] 1024 60 500 98 14 ...
## $ ccp_título_inicial : num [1:48] 534 196 1 113 86 0 329 200 62 5 ...
## $ vsg_inicial : num [1:48] 42 110 12 37 44 10 67 10 50 49 ...
## $ pcr_inicial : num [1:48] 96 9 1 5.3 9 7.7 76.8 1.8 4 6 ...
## $ dre : num [1:48] 0 0 0 0 0 0 0 0 0 NA ...
## $ nad_inicial : num [1:48] 11 10 5 3 10 3 9 12 13 10 ...
## $ nat_inicial : num [1:48] 9 10 5 7 10 8 8 12 13 10 ...
## $ DMARD_inicial_fecha : POSIXct[1:48], format: "2019-01-14" "2016-06-01" ...
## $ DMARD_inicial_tipo : chr [1:48] "csDMARD" "csDMARD" "csDMARD" "csDMARD" ...
## $ DMARD_inicial_cual : chr [1:48] "MTX" "MTX" "MTX" "MTX" ...
## $ DMARD_inicial_dosis : num [1:48] 25 25 25 15 25 25 15 15 25 25 ...
## $ PDN_inicial_fecha : POSIXct[1:48], format: "2019-01-14" "2016-06-01" ...
## $ PDN_inicial_dosis : num [1:48] 20 8 8 8 8 8 8 8 8 8 ...
## $ intensificacion_tto : num [1:48] 1 1 1 1 1 0 1 0 1 1 ...
## $ combinacion_DMARDs : num [1:48] 1 1 1 1 1 0 1 0 1 1 ...
## $ cantidad_lineas_tto : num [1:48] 2 2 3 3 2 1 5 1 3 2 ...
## $ recibio_bDMARD : num [1:48] 0 0 1 1 0 0 1 0 0 0 ...
## $ recibio_tsDMARD : num [1:48] 0 0 0 0 0 0 0 0 1 0 ...
## $ fecha_fin_ultimo_DMARD : POSIXct[1:48], format: "2022-11-15" "2022-05-28" ...
## $ fecha_inicio_remision_sostenida: POSIXct[1:48], format: "2023-11-15" "2023-05-28" ...
## $ motivo_fin_DMARD : chr [1:48] "decisión paciente" "decisión paciente" "decisión paciente" "decisión paciente" ...
## $ recaída : num [1:48] 0 0 0 0 1 0 1 0 0 0 ...
## $ fecha_recaída : POSIXct[1:48], format: NA NA ...
## $ fecha_última_visita : POSIXct[1:48], format: "2024-05-09" "2024-06-08" ...
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 [48 × 36] (S3: tbl_df/tbl/data.frame)
## $ site : chr [1:48] "HIQ" "HIQ" "HIQ" "HIQ" ...
## $ id_paciente : chr [1:48] "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:48], format: "1971-05-20" "1977-08-21" ...
## $ edad : num [1:48] 55 48 45 60 32 67 59 51 68 43 ...
## $ 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:48], format: "2019-01-08" "2016-06-01" ...
## $ lar_título_inicial : num [1:48] 1024 60 500 98 14 ...
## $ ccp_título_inicial : num [1:48] 534 196 1 113 86 0 329 200 62 5 ...
## $ vsg_inicial : num [1:48] 42 110 12 37 44 10 67 10 50 49 ...
## $ pcr_inicial : num [1:48] 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:48] 11 10 5 3 10 3 9 12 13 10 ...
## $ nat_inicial : num [1:48] 9 10 5 7 10 8 8 12 13 10 ...
## $ DMARD_inicial_fecha : POSIXct[1:48], 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/ 2 levels "HCQ","MTX": 2 2 2 2 2 2 2 2 2 2 ...
## $ DMARD_inicial_dosis : num [1:48] 25 25 25 15 25 25 15 15 25 25 ...
## $ PDN_inicial_fecha : POSIXct[1:48], format: "2019-01-14" "2016-06-01" ...
## $ PDN_inicial_dosis : num [1:48] 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:48] 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:48], format: "2022-11-15" "2022-05-28" ...
## $ fecha_inicio_remision_sostenida: POSIXct[1:48], format: "2023-11-15" "2023-05-28" ...
## $ motivo_fin_DMARD : Factor w/ 4 levels "decisión médica",..: 2 2 2 2 3 3 4 3 3 3 ...
## $ recaída : Factor w/ 2 levels "No","Si": 1 1 1 1 2 1 2 1 1 1 ...
## $ fecha_recaída : POSIXct[1:48], format: NA NA ...
## $ fecha_última_visita : POSIXct[1:48], format: "2024-05-09" "2024-06-08" ...
## $ 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 [48 × 36] (S3: tbl_df/tbl/data.frame)
## $ site : chr [1:48] "HIQ" "HIQ" "HIQ" "HIQ" ...
## $ id_paciente : chr [1:48] "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:48], format: "1971-05-20" "1977-08-21" ...
## $ edad : num [1:48] 55 48 45 60 32 67 59 51 68 43 ...
## $ 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:48], format: "2019-01-08" "2016-06-01" ...
## $ lar_título_inicial : num [1:48] 1024 60 500 98 14 ...
## $ ccp_título_inicial : num [1:48] 534 196 1 113 86 0 329 200 62 5 ...
## $ vsg_inicial : num [1:48] 42 110 12 37 44 10 67 10 50 49 ...
## $ pcr_inicial : num [1:48] 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:48] 11 10 5 3 10 3 9 12 13 10 ...
## $ nat_inicial : num [1:48] 9 10 5 7 10 8 8 12 13 10 ...
## $ DMARD_inicial_fecha : Date[1:48], 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/ 2 levels "HCQ","MTX": 2 2 2 2 2 2 2 2 2 2 ...
## $ DMARD_inicial_dosis : num [1:48] 25 25 25 15 25 25 15 15 25 25 ...
## $ PDN_inicial_fecha : Date[1:48], format: "2019-01-14" "2016-06-01" ...
## $ PDN_inicial_dosis : num [1:48] 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:48] 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:48], format: "2022-11-15" "2022-05-28" ...
## $ fecha_inicio_remision_sostenida: Date[1:48], format: "2023-11-15" "2023-05-28" ...
## $ motivo_fin_DMARD : Factor w/ 4 levels "decisión médica",..: 2 2 2 2 3 3 4 3 3 3 ...
## $ recaída : Factor w/ 2 levels "No","Si": 1 1 1 1 2 1 2 1 1 1 ...
## $ fecha_recaída : Date[1:48], format: NA NA ...
## $ fecha_última_visita : Date[1:48], format: "2024-05-09" "2024-06-08" ...
## $ 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
## 36 12
Interpretación: La base quedó conformada por 48 pacientes, distribuidos en 12 casos y 36 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 HIQ
## 8 40
table(datos_limpios$site,
datos_limpios$grupo)
##
## Control Caso
## HIBA 6 2
## HIQ 30 10
Interpretación: La cohorte multicéntrica quedó integrada por pacientes provenientes de dos centros. El Hospital Iriarte de Quilmes (HIQ) aportó 40 pacientes (10 casos y 30 controles), mientras que el Hospital Italiano de Buenos Aires (HIBA) contribuyó con 8 pacientes (2 casos y 6 controles), manteniéndose en ambos centros la relación de 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 1
## nad_inicial nat_inicial
## 0 0
## DMARD_inicial_fecha DMARD_inicial_tipo
## 1 0
## DMARD_inicial_cual DMARD_inicial_dosis
## 0 0
## PDN_inicial_fecha PDN_inicial_dosis
## 4 0
## intensificacion_tto combinacion_DMARDs
## 0 1
## cantidad_lineas_tto recibio_bDMARD
## 0 0
## recibio_tsDMARD fecha_fin_ultimo_DMARD
## 0 36
## fecha_inicio_remision_sostenida motivo_fin_DMARD
## 36 36
## recaída fecha_recaída
## 36 46
## fecha_última_visita grupo
## 36 0
Interpretación: Las variables específicas del desenlace (fecha de finalización del último DMARD, fecha de inicio de la remisión sostenida, motivo de suspensión del DMARD y recaída) fueron registradas exclusivamente en los casos, por lo que los valores ausentes observados en los controles corresponden a valores ausentes estructurales derivados del diseño del estudio y no a datos faltantes. En cambio, los valores ausentes identificados en algunas variables basales (por ejemplo, PCR, VSG, DRE o títulos serológicos) reflejan información no disponible en la historia clínica y serán tratados como datos faltantes en los análisis correspondientes. No se identificó un patrón que sugiera pérdidas sistemáticas de información en las variables basales.
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 1 0
## DMARD_inicial_fecha DMARD_inicial_cual PDN_inicial_fecha combinacion_DMARDs
## 1 0 4 1
Interpretación: Entre las variables basales se observó una elevada completitud de los datos. La única variable con una proporción apreciable de información no disponible fue la PCR (n = 11), mientras que VSG, DRE, fecha de nacimiento y fecha de inicio del DMARD presentaron un único valor ausente cada una. Los cuatro valores ausentes correspondientes a la fecha de inicio de prednisona reflejan pacientes que no recibieron corticoides al inicio del tratamiento y, por lo tanto, constituyen valores ausentes estructurales y no datos faltantes. En conjunto, no se identificó un patrón de pérdidas que sugiriera sesgo 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 | 74 | 2010-11-20 | 430 | 236 | 38 | NA |
| CTRL0001 | Control | 49 | 2019-12-14 | 60 | 36 | 53 | NA |
| CTRL0007 | Control | 48 | 2014-10-28 | 0 | 114 | 12 | NA |
| CTRL0025 | Control | 73 | 2020-03-03 | 8192 | 200 | 100 | NA |
| CTRL0026 | Control | 77 | 2017-05-23 | 500 | 196 | NA | NA |
| CTRL0028 | Control | 59 | 2018-11-22 | 500 | 200 | 95 | NA |
| CTRL0031 | Control | 82 | 2010-08-19 | 0 | 107 | 55 | NA |
| CTRL0033 | Control | 76 | 2011-08-17 | 65 | 145 | 32 | NA |
| CTRL0034 | Control | 71 | 2010-09-08 | 170 | 182 | 40 | NA |
| CTRL0035 | Control | 74 | 2010-03-08 | 70 | 275 | 18 | NA |
| CTRL0036 | Control | 71 | 2013-07-11 | 60 | 200 | 44 | 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 | NA |
Interpretación: Se identificaron 11 pacientes con
PCR basal faltante y 1 paciente con
daño radiológico estructural basal no documentado. Los
pacientes con látex AR igual a 0 presentaban
anti-CCP positivo, por lo que cumplían criterio de
seropositividad. Tras la revisión manual de las historias clínicas, los
valores ausentes fueron conservados como NA para los
análisis posteriores.
summary(datos_limpios$edad)
## Min. 1st Qu. Median Mean 3rd Qu. Max.
## 32.00 52.75 63.00 61.38 71.25 88.00
range(datos_limpios$edad, na.rm = TRUE)
## [1] 32 88
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,
inicio de remisión sostenida, recaída y
fecha de última visita fueron registradas exclusivamente en
los casos. Los valores ausentes observados en los
controles representan ausencia estructural de información y
no datos faltantes.
La exploración visual de los datos faltantes mostró una baja frecuencia de valores ausentes para las variables basales. No se observaron patrones sistemáticos de ausencia ni agrupamiento de datos faltantes en pacientes específicos.
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,4%. No se observaron patrones sistemáticos de ausencia ni agrupamiento de valores faltantes en pacientes específicos, lo que indica una adecuada 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 mostraron un patrón compatible con pérdidas aleatorias de información propias de una revisión retrospectiva de historias clínicas.
6.1 Distribución de los grupos
table(datos_limpios$grupo)
##
## Control Caso
## 36 12
prop.table(table(datos_limpios$grupo))*100
##
## Control Caso
## 75 25
Interpretación: Se incluyeron 48 pacientes con artritis reumatoidea seropositiva. Doce pacientes cumplieron criterios de remisión sostenida libre de DMARDs (casos) y 36 pacientes conformaron el grupo control.
6.2 Sexo
table(datos_limpios$sexo)
##
## Femenino Masculino
## 37 11
prop.table(table(datos_limpios$sexo))*100
##
## Femenino Masculino
## 77.08333 22.91667
Interpretación: La población estuvo compuesta predominantemente por mujeres, 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. :32.00 Min. : 0.0 Min. : 0.0 Min. : 6.00
## 1st Qu.:52.75 1st Qu.: 30.0 1st Qu.: 101.8 1st Qu.: 19.50
## Median :63.00 Median : 62.0 Median : 196.0 Median : 40.00
## Mean :61.38 Mean : 365.1 Mean : 246.3 Mean : 41.74
## 3rd Qu.:71.25 3rd Qu.: 173.0 3rd Qu.: 200.0 3rd Qu.: 52.00
## Max. :88.00 Max. :8192.0 Max. :1174.0 Max. :110.00
## NA's :1
## pcr_inicial
## Min. : 1.00
## 1st Qu.: 2.30
## Median : 7.70
## Mean :12.75
## 3rd Qu.: 9.00
## Max. :96.00
## NA's :11
describe(vars_continuas)
## vars n mean sd median trimmed mad min max range
## edad 1 48 61.38 13.37 63.0 61.62 14.83 32 88 56
## lar_título_inicial 2 48 365.12 1206.90 62.0 132.15 74.87 0 8192 8192
## ccp_título_inicial 3 48 246.27 280.18 196.0 191.02 119.35 0 1174 1174
## vsg_inicial 4 47 41.74 26.84 40.0 39.21 28.17 6 110 104
## pcr_inicial 5 37 12.75 20.29 7.7 8.00 8.01 1 96 95
## skew kurtosis se
## edad -0.19 -0.77 1.93
## lar_título_inicial 5.73 33.93 174.20
## ccp_título_inicial 2.02 3.21 40.44
## vsg_inicial 0.72 -0.20 3.92
## pcr_inicial 2.81 7.65 3.33
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.6
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.3, p-value = 0.00000000000006
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.7, p-value = 0.000000006
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.008
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.000000003
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 seguían 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 valores extremos elevados, mientras que la VSG mostró una asimetría positiva moderada. La edad fue la única variable con una distribución aproximadamente simétrica. En conjunto, y considerando el tamaño muestral reducido, las variables continuas se resumirán principalmente mediante mediana y rango intercuartílico (RIQ), utilizándose 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 confirmaron la presencia de valores extremos principalmente en los títulos de factor reumatoideo (Látex AR), anti-CCP y, en menor medida, PCR basal. La edad no presentó valores atípicos, mientras que la VSG mostró una distribución relativamente homogénea. 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
)
)
tabla1 <- datos_limpios %>%
select(
grupo,
sexo,
edad,
hta,
dbt,
dlp,
tbq,
extbq,
lar_título_inicial,
ccp_título_inicial,
vsg_inicial,
pcr_inicial,
dre,
nad_inicial,
nat_inicial,
DMARD_inicial_tipo,
DMARD_inicial_cual,
dosis_mtx_inicial,
PDN_inicial_dosis
) %>%
tbl_summary(
by = grupo,
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",
extbq ~ "Ex tabaquismo",
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",
dosis_mtx_inicial ~ "Dosis inicial de MTX (mg/semana)",
PDN_inicial_dosis ~ "Dosis prednisona inicial (mg/día)"
)
) %>%
add_p()
tabla1
| Characteristic | Caso N = 121 |
Control N = 361 |
p-value2 |
|---|---|---|---|
| Sexo | 0.4 | ||
| Femenino | 8 (67%) | 29 (81%) | |
| Masculino | 4 (33%) | 7 (19%) | |
| Edad | 57 (47 - 68) | 66 (54 - 73) | 0.2 |
| HTA | >0.9 | ||
| No | 9 (75%) | 27 (75%) | |
| Si | 3 (25%) | 9 (25%) | |
| DBT | 0.3 | ||
| No | 12 (100%) | 30 (83%) | |
| Si | 0 (0%) | 6 (17%) | |
| DLP | 0.7 | ||
| No | 9 (75%) | 29 (81%) | |
| Si | 3 (25%) | 7 (19%) | |
| Tabaquismo actual | 0.6 | ||
| No | 12 (100%) | 32 (89%) | |
| Si | 0 (0%) | 4 (11%) | |
| Ex tabaquismo | 0.2 | ||
| No | 9 (75%) | 33 (92%) | |
| Si | 3 (25%) | 3 (8.3%) | |
| Látex AR basal | 76 (27 - 465) | 62 (30 - 166) | 0.8 |
| Anti-CCP basal | 155 (34 - 251) | 196 (113 - 200) | 0.5 |
| VSG basal | 43 (25 - 50) | 40 (18 - 55) | 0.9 |
| PCR basal | 8 (4 - 31) | 7 (2 - 8) | 0.3 |
| Daño radiológico estructural | 0.3 | ||
| No | 11 (100%) | 30 (83%) | |
| Si | 0 (0%) | 6 (17%) | |
| NAD basal | 10 (4 - 11) | 8 (5 - 16) | 0.3 |
| NAT basal | 9 (6 - 10) | 10 (5 - 19) | 0.4 |
| Tipo de DMARD inicial | |||
| csDMARD | 12 (100%) | 36 (100%) | |
| DMARD inicial | >0.9 | ||
| HCQ | 0 (0%) | 1 (2.8%) | |
| MTX | 12 (100%) | 35 (97%) | |
| Dosis inicial de MTX (mg/semana) | 0.5 | ||
| 7.5 | 0 (0%) | 1 (2.9%) | |
| 10 | 0 (0%) | 2 (5.7%) | |
| 15 | 5 (42%) | 7 (20%) | |
| 25 | 7 (58%) | 25 (71%) | |
| Dosis prednisona inicial (mg/día) | 0.7 | ||
| 0 | 1 (8.3%) | 2 (5.6%) | |
| 5 | 0 (0%) | 1 (2.8%) | |
| 8 | 9 (75%) | 24 (67%) | |
| 10 | 1 (8.3%) | 3 (8.3%) | |
| 16 | 0 (0%) | 5 (14%) | |
| 20 | 1 (8.3%) | 1 (2.8%) | |
| 1 n (%); Median (Q1 - Q3) | |||
| 2 Fisher’s exact test; Wilcoxon rank sum 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 aquellos que no alcanzaron este desenlace (controles), no se observaron diferencias estadísticamente significativas en las variables analizadas.
Los casos presentaron una menor edad al diagnóstico (53 [45-60] vs. 60 [53-70] años), constituyendo la diferencia de mayor magnitud entre los grupos, aunque sin alcanzar significación estadística (p = 0,12).
Asimismo, ambos grupos fueron comparables en cuanto al sexo, las comorbilidades, los títulos basales de látex AR y anti-CCP, los marcadores inflamatorios (VSG y PCR), el recuento de articulaciones dolorosas (NAD) y tumefactas (NAT), la presencia de daño radiológico estructural y las características del tratamiento inicial, incluyendo el csDMARD utilizado, la dosis inicial de metotrexato y la dosis inicial de prednisona.
En conjunto, estos hallazgos sugieren que los pacientes que alcanzaron remisión sostenida libre de DMARDs no presentaban diferencias basales clínicas, serológicas ni terapéuticas evidentes respecto de los controles. Sin embargo, el reducido tamaño muestral limita la precisión de las estimaciones y la capacidad del estudio para detectar diferencias de magnitud moderada.
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 = 121 |
Control N = 361 |
p-value2 |
|---|---|---|---|
| Intensificación terapéutica | >0.9 | ||
| No | 3 (25%) | 8 (22%) | |
| Si | 9 (75%) | 28 (78%) | |
| Combinación de DMARDs | >0.9 | ||
| No | 3 (25%) | 9 (26%) | |
| Si | 9 (75%) | 26 (74%) | |
| Número de líneas terapéuticas | >0.9 | ||
| 1 | 3 (25%) | 8 (22%) | |
| 2 | 5 (42%) | 18 (50%) | |
| ≥3 | 4 (33%) | 10 (28%) | |
| Exposición a bDMARD | >0.9 | ||
| No | 9 (75%) | 25 (69%) | |
| Si | 3 (25%) | 11 (31%) | |
| Exposición a tsDMARD | 0.2 | ||
| No | 11 (92%) | 26 (72%) | |
| Si | 1 (8.3%) | 10 (28%) | |
| 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. Ambos grupos presentaron una frecuencia similar de intensificación terapéutica, uso combinado de csDMARDs, número de líneas terapéuticas, exposición a bDMARDs y exposición a tsDMARDs.
Aunque la exposición a tsDMARDs fue menos frecuente entre los casos (8,3% vs. 28%), esta diferencia no alcanzó significación estadística (p = 0,20).
En conjunto, estos hallazgos sugieren que la evolución terapéutica fue comparable entre ambos grupos, sin evidenciar diferencias relevantes en la intensidad o complejidad del tratamiento recibido. Sin embargo, el reducido tamaño muestral limita la capacidad del estudio para detectar diferencias de magnitud moderada.
Comentario: Los pacientes de ambos grupos presentaron características basales comparables y trayectorias terapéuticas similares. 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.
table(datos_limpios$grupo)
##
## Caso Control
## 12 36
table(datos_limpios$recaída)
##
## No Si
## 10 2
datos_casos <- datos_limpios %>%
filter(grupo == "Caso") %>%
mutate(
fecha_fin = if_else(
recaída == "Si",
fecha_recaída,
fecha_última_visita
),
tiempo_meses = as.numeric(
fecha_fin - fecha_inicio_remision_sostenida
) / 30.44
)
datos_casos %>%
select(
id_paciente,
recaída,
fecha_inicio_remision_sostenida,
fecha_recaída,
fecha_última_visita,
fecha_fin,
tiempo_meses
)
## # A tibble: 12 × 7
## 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-10-16 NA 2026-10-16
## 10 CASO0010 No 2026-01-30 NA 2026-04-21
## 11 CASO0011 No 2015-04-14 NA 2026-03-30
## 12 CASO0012 No 2026-05-28 NA 2026-08-28
## # ℹ abbreviated name: ¹fecha_inicio_remision_sostenida
## # ℹ 2 more variables: fecha_fin <date>, tiempo_meses <dbl>
summary(datos_casos$tiempo_meses)
## Min. 1st Qu. Median Mean 3rd Qu. Max.
## 0.0 3.0 9.1 21.7 15.8 131.5
datos_casos %>%
filter(recaída == "Si") %>%
select(id_paciente, tiempo_meses)
## # A tibble: 2 × 2
## id_paciente tiempo_meses
## <chr> <dbl>
## 1 CASO0005 5.75
## 2 CASO0007 20.0
Interpretación: De los 10 pacientes que alcanzaron remisión sostenida libre de DMARDs, 2 (20%) presentaron una recaída durante el seguimiento. La mediana de seguimiento desde el inicio de la remisión sostenida fue de 9,1 meses (RIC: 3,0–15,8). En los dos pacientes que presentaron recaída, esta ocurrió a los 5,8 y 20,0 meses del inicio de la remisión sostenida.
Título: Remisión sostenida libre de DMARDs en artritis reumatoide seropositiva: estudio multicéntrico de una cohorte argentina.
Autores: Saravia NK1, Malah V2, Rosa JE3, Nagy I3, Vinicki JP1
1 Unidad de Reumatología, Hospital Zonal General de Agudos Dr. Isidoro Iriarte, Quilmes, Buenos Aires, Argentina.
2 Unidad de Reumatología, Sanatorio Modelo de Quilmes, Quilmes, Buenos Aires, Argentina.
3 Sección Reumatología, Servicio de Clínica Médica, Hospital Italiano de Buenos Aires, 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 respecto de pacientes con enfermedad persistente.
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 48 pacientes (12 casos y 36 controles). No se observaron diferencias estadísticamente significativas entre ambos grupos en edad, sexo, comorbilidades, títulos de factor reumatoide y anti-CCP, marcadores inflamatorios, actividad clínica basal, daño radiográfico estructural ni tratamiento inicial, incluyendo el tipo de csDMARD, la dosis inicial de metotrexato y la dosis de prednisona. Asimismo, la trayectoria terapéutica fue comparable entre casos y controles en cuanto a intensificación terapéutica, uso de combinación de csDMARDs, número de líneas terapéuticas y exposición a terapias biológicas o sintéticas dirigidas. Entre los pacientes que alcanzaron remisión sostenida libre de DMARDs, 2 (20%) presentaron recaída durante el seguimiento.
Conclusión: En esta cohorte multicéntrica no se identificaron diferencias clínicas, serológicas ni terapéuticas evidentes entre los pacientes que alcanzaron remisión sostenida libre de DMARDs y aquellos con enfermedad persistente. Estos hallazgos sugieren que este desenlace podría depender de factores biológicos aún no identificados. Debido al reducido número de casos, los resultados deben interpretarse como exploratorios y requieren confirmación en estudios multicéntricos de mayor tamaño