Se carga la base de datos ya filtrada y compactada. En esta base
En esta base se inclyeron un total de 494 registros
#Ajuste de variables inicial (dolor + sintomas/tamizaje + Charlson)
library(dplyr)
BASE$dolor <- ifelse(
apply(BASE[, c(76,81, 82)] == "Checked", 1, any), # Verificar si hay algún "Checked" en cada fila
"Sí",
"No")
BASE$ingreso <- ifelse(BASE$`¿Cuenta con estudios previos de tamizaje para cáncer de cuello uterino?`== "Si", "tamizaje", "sintomas")
BASE$ingreso[is.na(BASE$ingreso)] <- "sintomas"
BASE <- BASE %>%
mutate(charls_cat= cut(`Índice de Charlson`,
breaks = c(-Inf, 2, 4, Inf),
right = T,
labels = c("<=2","3-4", ">=5")))
#table(BASE$`Régimen Afiliación Salud (Colombia)`)
#table(BASE$`Régimen afiliación salud (Guatemala)`)
BASE <- BASE %>%
mutate(AFILIACION = case_when(
`Régimen Afiliación Salud (Colombia)` %in% c("Contributivo", "Particular/Prepagada") |
`Régimen afiliación salud (Guatemala)` %in% c("Privado/Seguro médico") ~ "Contributivo/Privado",
`Régimen Afiliación Salud (Colombia)` %in% c("Subsidiado") |
`Régimen afiliación salud (Guatemala)` %in% c("Sector público", "Seguro social") ~ "Subsidiado/Público",
TRUE ~ NA_character_ # Para los casos que no cumplen ninguna condición
))
BASE$AFILIACION <- factor(BASE$AFILIACION, levels = c("Subsidiado/Público", "Contributivo/Privado")) #REORDENANDO LAS CATEGORIAS
#summary(BASE$`Edad a la fecha de diagnóstico`)
# se convierten en NA los mayores o iguales a 100
BASE$`Edad a la fecha de diagnóstico`[BASE$`Edad a la fecha de diagnóstico` >= 100] <- NA
#summary(BASE$`Intervalo entre Radioterapia Externa y Braquiterapia`)
BASE$`Intervalo entre Radioterapia Externa y Braquiterapia`[BASE$`Intervalo entre Radioterapia Externa y Braquiterapia` >= 1000] <- NA
#table(BASE$`Máximo nivel de educación alcanzado`)
BASE$EDUCACION <- ifelse(BASE$`Máximo nivel de educación alcanzado` %in% c("No sabe leer/escribir", "Primaria"), "Primaria <",
ifelse(BASE$`Máximo nivel de educación alcanzado` %in% c("Secundaria", "Técnico"), "Secundaria + tecnico", ifelse(BASE$`Máximo nivel de educación alcanzado` %in% c("Profesional", "Posgrado (maestría, doctorado)"), "Profesional + posgrado", BASE$`Máximo nivel de educación alcanzado`)))
BASE$EDUCACION <- factor(BASE$EDUCACION, levels = c("Primaria <", "Secundaria + tecnico", "Profesional + posgrado") ) #REORDENANDO LAS CATEGORIAS
#table(BASE$`Grupo étnico`)
BASE$GRUPO_ET <- ifelse(BASE$`Grupo étnico` %in% c("Afroamericano", "Gitanos o romanos", "Latino", "Mestizo", "Otros", "No aplica"), "Sin etnia especifica", ifelse(BASE$`Grupo étnico` %in% c("Indígena (etnias)"), "Indigena", BASE$`Grupo étnico`))
BASE$GRUPO_ET <- factor(BASE$GRUPO_ET, levels = c("Indigena", "Sin etnia especifica")) #REORDENANDO LAS CATEGORIAS
BASE$EST_clin_FIGO<- factor(recode(BASE$`Estadio clínico según clasificación FIGO`, "IB3: Tumor confinado al cuello uterino que mide 4 cm o más de ancho." = "IB3,II,IIA", "II: Cáncer se ha diseminado más allá del útero hacia la vagina o tejido cercano al cuello uterino y esta dentro del área pélvica." = "IB3,II,IIA",
"IIA: Tumor limitado a los dos tercios superiores de la vagina." = "IB3,II,IIA",
"IIB: Tumor diseminado a región parametrial sin llegar a la pared pélvica." = "IIB, III, IIIA, IIIB, IIIC, IVA", "III: Tumor compromete tercio inferior de vagina y/o se ha diseminado a la pared pélvica y/o causa hidronefrosis y/o compromete ganglios linfáticos regionales, sin desiminación a distancia." = "IIB, III, IIIA, IIIB, IIIC, IVA", "IIIA: Tumor compromete tercio inferior de la vagina, no ha crecido hasta interior de la pared pélvica." = "IIB, III, IIIA, IIIB, IIIC, IVA", "IIIB: Tumor ha crecido dentro de la pared pélvica y/o afecta un riñón." = "IIB, III, IIIA, IIIB, IIIC, IVA", "IIIC: Tumor compromete ganglios linfáticos regionales (pelvis y paraaórticos)." = "IIB, III, IIIA, IIIB, IIIC, IVA",
"IVA: Cáncer se ha diseminado a vejiga o recto, pero no hay metástasis a distancia." = "IIB, III, IIIA, IIIB, IIIC, IVA"))
BASE$EST_clin_FIGO <- factor(BASE$EST_clin_FIGO, levels = c("IB3,II,IIA", "IIB, III, IIIA, IIIB, IIIC, IVA")) #REORDENANDO LAS CATEGORIAS
BASE$TABAQUISMO <- ifelse(BASE$Tabaquismo %in% c("Fumadora al momento del diagnóstico 1 paquete año o menos", "Fumadora al momento del diagnóstico 2 paquetes año o más"), "Fumadora", ifelse(BASE$Tabaquismo %in% c("Fumó hasta menos de 15 años previos al diagnóstico (al momento del diagnóstico sin consumo)"), "Ex-Fumadora", ifelse(BASE$Tabaquismo %in% c("Nunca o dejó de fumar 15 años o más antes del diagnóstico"), "No fumadora", BASE$Tabaquismo)))
BASE$TABAQUISMO <- factor(BASE$TABAQUISMO, levels = c("No fumadora","Ex-Fumadora", "Fumadora"))
BASE$ECOG <- factor(recode(BASE$ECOG, "0 Asintomático, sin restricciones para realización de la actividad física" = "ECOG0", "1 Sintomático con limitación para actividades arduas. Logra desempeñar sin asistencia trabajos ligeros y actividades cotidianas. Permanece en cama solo en las horas de sueño" = "ECOG1",
"2 Paciente encamado menos del 50% del día. Satisface la mayoría de sus necesidades solo" = "ECOG2",
"3 Paciente encamado más del 50% del día. Necesita ayuda para satisfacer la mayoría de las actividades diarias" = "ECOG3", "6 Sin dato" = "SIN DATO"))
BASE$ECOG[BASE$ECOG == "SIN DATO"] <- NA
#Numero de casos por intitucion (verificados en calidad)
País | Centro | n |
---|---|---|
Colombia | HUSI | 132 |
Colombia | COAJ | 122 |
Guatemala | ANGELES | 121 |
Guatemala | MIRARI | 119 |
Total | 488 |
myVars1 <- c("Edad a la fecha de diagnóstico", "EDUCACION", "GRUPO_ET", "Estado civil", "AFILIACION","tipo_residencia")
catVars1 <- c("EDUCACION", "GRUPO_ET", "Estado civil", "AFILIACION","tipo_residencia")
# Reordenando las categorias para la tabla 1 PENDIENTES
BASE$`Estado civil` <- factor(BASE$`Estado civil`, levels = c("Soltero", "Casado o en pareja", "Divorciado o viudo")) #REORDENANDO LAS CATEGORIAS
library(tableone)
tab1 <- CreateTableOne(vars = myVars1, factorVars= catVars1, strata = "Procedencia", data = BASE, includeNA = F, test = T,addOverall = T, testNonNormal = T)
table1 <- as.data.frame(print(tab1, showAllLevels= TRUE, printToggle = FALSE, noSpaces = TRUE))
rownames(table1) <- gsub("\\.{3,}", "", rownames(table1)) # Quita puntos suspensivos "..."
rownames(table1) <- gsub("\\.{1,}", "_", rownames(table1)) # Quita puntos suspensivos "..."
rownames(table1) <- gsub("\\_{1,}", " ", rownames(table1)) # Quita puntos suspensivos "..."
library(knitr)
library(kableExtra)
kable(table1, format = "html", caption = "Variable sociodemograficas") %>%
kable_styling(bootstrap_options = c("striped", "hover", "condensed"), full_width = F,position = "center") %>%
column_spec(1, bold = T, color = "white", background = "#D7261E") %>%
column_spec(2, border_left = T, background = "#F3E6E3")
level | Overall | Colombia | Guatemala | p | test | |
---|---|---|---|---|---|---|
n | 494 | 254 | 240 | |||
Edad a la fecha de diagnóstico mean SD | 51.25 (13.39) | 51.77 (14.65) | 50.71 (11.91) | 0.379 | ||
EDUCACION | Primaria < | 144 (37.0) | 47 (30.1) | 97 (41.6) | 0.001 | |
X | Secundaria + tecnico | 209 (53.7) | 85 (54.5) | 124 (53.2) | ||
X 1 | Profesional + posgrado | 36 (9.3) | 24 (15.4) | 12 (5.2) | ||
GRUPO ET | Indigena | 35 (7.1) | 3 (1.2) | 32 (13.3) | <0.001 | |
X 2 | Sin etnia especifica | 459 (92.9) | 251 (98.8) | 208 (86.7) | ||
Estado civil | Soltero | 110 (24.4) | 58 (26.9) | 52 (22.2) | 0.043 | |
X 3 | Casado o en pareja | 254 (56.4) | 127 (58.8) | 127 (54.3) | ||
X 4 | Divorciado o viudo | 86 (19.1) | 31 (14.4) | 55 (23.5) | ||
AFILIACION | Subsidiado/Público | 197 (39.9) | 131 (51.6) | 66 (27.5) | <0.001 | |
X 5 | Contributivo/Privado | 297 (60.1) | 123 (48.4) | 174 (72.5) |
library(openxlsx)
write.xlsx(table1, "tablasocio_dm_Junio.xlsx", rowNames = TRUE)
#cambiando nombres variables y niveles para mejor visualizacion de la tabla 1
colnames(BASE)[colnames(BASE) == "Número de gestaciones (incluyendo abortos, ectópicos y nacimientos vivos previos al ingreso al estudio)"] <- "N.de gestaciones"
colnames(BASE)[colnames(BASE) == "Número de partos vaginales"] <- "N. partos
vaginales"
colnames(BASE)[colnames(BASE) == "Tipo de estudio de tamizaje (choice=Citología)"] <- "Citologia"
colnames(BASE)[colnames(BASE) == "Tipo de estudio de tamizaje (choice=Pruebas moleculares VPH)"] <- "P. molecular VPH"
colnames(BASE)[colnames(BASE) == "Antecedente de procedimientos en cérvix (choice=Conización cervical)"] <- "Conización cervical"
colnames(BASE)[colnames(BASE) == "Antecedente de procedimientos en cérvix (choice=Crioterapia)"] <- "Crioterapia"
colnames(BASE)[colnames(BASE) == "Antecedente de procedimientos en cérvix (choice=Ablación térmica)"] <- "Ablación térmica"
colnames(BASE)[colnames(BASE) == "Antecedente de procedimientos en cérvix (choice=Biopsia exocervical o endocervical)"] <- "Biopsia exocervical o endocervical"
colnames(BASE)[colnames(BASE) == "Antecedente de procedimientos en cérvix (choice=Ninguno)"] <- "Ningun procedimiento cervix previo"
#names(BASE) 35:37, 45:49
BASE <- BASE %>%
mutate(across(c(35:37, 45:49), ~ recode(., "Checked" = "Si", "Unchecked" = "No")))
BASE$`Historia de lesiones premalignas` <- ifelse(BASE$`Historia de lesiones premalignas` %in% c("NIC 1 (displasia leve) - Lesión escamosa intraepitelial de bajo grado"), "NIC 1", ifelse(BASE$`Historia de lesiones premalignas` %in% c("NIC 2 (displasia moderada - Lesión escamosa intraepitelial de alto grado", "NIC 3 (displasia grave) - Lesión escamosa intraepitelial de alto grado"), "NIC 2 - 3", BASE$`Historia de lesiones premalignas`))
BASE$`Historia de lesiones premalignas` <- factor(BASE$`Historia de lesiones premalignas`, levels = c("NIC 2 - 3", "NIC 1", "Carcinoma in situ", "Nunca")) #REORDENANDO LAS CATEGORIAS
BASE <- BASE %>%
mutate(
# Contar cuántas respuestas "Sí" hay
n_procedimientos = (`Ningun procedimiento cervix previo` == "Si") +
(`Biopsia exocervical o endocervical` == "Si") +
(`Ablación térmica`== "Si") +
(`Conización cervical` == "Si") +
(`Crioterapia` == "Si"),
# Crear la columna con la clasificación
Procedimiento_Cervix = case_when(
`Ningun procedimiento cervix previo` == "Si" ~ "NINGUNA",
`Biopsia exocervical o endocervical` == "Si" ~ "BIOPSIA",
`Ablación térmica` == "Si" | `Crioterapia` == "Si" ~ "TRAT. ABLATIVO",
`Conización cervical` == "Si" ~ "CONIZACION",
TRUE ~ NA_character_
)
)
# Ver casos con múltiples respuestas
casos_multiples <- BASE %>%
filter(n_procedimientos > 1) %>%
select(contains("cervix"), contains("Ablación"), contains("Crioterapia"),
contains("Biopsia"), contains("Conización"), Procedimiento_Cervix)
BASE$Procedimiento_Cervix <- factor(BASE$Procedimiento_Cervix, levels = c("NINGUNA", "BIOPSIA", "TRAT. ABLATIVO", "CONIZACION")) #REORDENANDO LAS CATEGORIAS
print(casos_multiples)
## # A tibble: 7 × 7
## Ningun procedimiento cer…¹ Procedimiento_Cervix `Ablación térmica` Crioterapia
## <chr> <chr> <chr> <chr>
## 1 No BIOPSIA No No
## 2 No BIOPSIA No No
## 3 Si NINGUNA No No
## 4 No BIOPSIA No No
## 5 No BIOPSIA No Si
## 6 No BIOPSIA No No
## 7 No BIOPSIA No No
## # ℹ abbreviated name: ¹`Ningun procedimiento cervix previo`
## # ℹ 3 more variables: `Biopsia exocervical o endocervical` <chr>,
## # `Especifique el tipo histologico reportado en biopsia de diagnóstico` <chr>,
## # `Conización cervical` <chr>
myVars2<-c("TABAQUISMO", "N.de gestaciones", "N. partos vaginales", "Citologia", "P. molecular VPH", "Historia de lesiones premalignas", "Procedimiento_Cervix", "charls_cat")
catVars2<-c("TABAQUISMO", "Citologia", "P. molecular VPH", "Historia de lesiones premalignas", "Conización cervical", "Crioterapia", "Procedimiento_Cervix", "charls_cat")
tab2 <- CreateTableOne(vars = myVars2, factorVars= catVars2, strata = "Procedencia", data = BASE, includeNA = F, test = T, addOverall = T, testNonNormal = T)
table2 <- as.data.frame(print(tab2, showAllLevels= TRUE, printToggle = FALSE, noSpaces = TRUE))
rownames(table2) <- gsub("\\.{3,}", "", rownames(table2)) # Quita 3 puntos suspensivos
rownames(table2) <- gsub("\\.{2,}", " ", rownames(table2)) # Quita 2 puntos suspensivos
rownames(table2) <- gsub("\\.{1,}", " ", rownames(table2)) # Quita 1 punto
kable(table2, format = "html", caption = "Antecedentes") %>%
kable_styling(bootstrap_options = c("striped", "hover", "condensed"), full_width = F,position = "center") %>%
column_spec(1, bold = T, color = "white", background = "#698B22") %>%
column_spec(2, border_left = T, background = "#98FB98")
level | Overall | Colombia | Guatemala | p | test | |
---|---|---|---|---|---|---|
n | 494 | 254 | 240 | |||
TABAQUISMO | No fumadora | 422 (90.9) | 210 (87.9) | 212 (94.2) | 0.032 | |
X | Ex-Fumadora | 17 (3.7) | 10 (4.2) | 7 (3.1) | ||
X 1 | Fumadora | 25 (5.4) | 19 (7.9) | 6 (2.7) | ||
N de gestaciones mean SD | 3.73 (2.67) | 3.84 (3.06) | 3.62 (2.18) | 0.357 | ||
Citologia | No | 373 (75.5) | 163 (64.2) | 210 (87.5) | <0.001 | |
X 2 | Si | 121 (24.5) | 91 (35.8) | 30 (12.5) | ||
P molecular VPH | No | 485 (98.2) | 245 (96.5) | 240 (100.0) | 0.009 | |
X 3 | Si | 9 (1.8) | 9 (3.5) | 0 (0.0) | ||
Historia de lesiones premalignas | NIC 2 - 3 | 17 (5.8) | 7 (3.8) | 10 (9.2) | <0.001 | |
X 4 | NIC 1 | 9 (3.1) | 3 (1.6) | 6 (5.5) | ||
X 5 | Carcinoma in situ | 9 (3.1) | 1 (0.5) | 8 (7.3) | ||
X 6 | Nunca | 259 (88.1) | 174 (94.1) | 85 (78.0) | ||
Procedimiento_Cervix | NINGUNA | 319 (64.6) | 196 (77.2) | 123 (51.2) | <0.001 | |
X 7 | BIOPSIA | 157 (31.8) | 53 (20.9) | 104 (43.3) | ||
X 8 | TRAT. ABLATIVO | 6 (1.2) | 0 (0.0) | 6 (2.5) | ||
X 9 | CONIZACION | 12 (2.4) | 5 (2.0) | 7 (2.9) | ||
charls_cat | <=2 | 200 (40.5) | 117 (46.1) | 83 (34.6) | 0.008 | |
X 10 | 3-4 | 189 (38.3) | 95 (37.4) | 94 (39.2) | ||
X 11 | >=5 | 105 (21.3) | 42 (16.5) | 63 (26.2) |
write.xlsx(table2, "tabla_antc_jun_2025.xlsx", rowNames = TRUE)
colnames(BASE)[colnames(BASE) == "Estudios de extensión (choice=TC tórax)"] <- "TC TORAX"
colnames(BASE)[colnames(BASE) == "Estudios de extensión (choice=TC abdomen)"] <- "TC ABDOMEN"
colnames(BASE)[colnames(BASE) == "Estudios de extensión (choice=TC pelvis)"] <- "TC PELVIS"
colnames(BASE)[colnames(BASE) == "Estudios de extensión (choice=RMN pelvis)"] <- "RMN PELVIS"
colnames(BASE)[colnames(BASE) == "Estudios de extensión (choice=PET-CT)"] <- "PET-CT"
colnames(BASE)[colnames(BASE) == "Estudios de extensión (choice=Rayos X tórax)"] <- "RAYOS X TORAX"
colnames(BASE)[colnames(BASE) == "Estudios de extensión (choice=Laparoscopia exploratoria)"] <- "Laparoscopia exploratoria"
colnames(BASE)[colnames(BASE) == "Estudios de extensión (choice=Cistoscopia)"] <- "Cistoscopia"
colnames(BASE)[colnames(BASE) == "Estudios de extensión (choice=Ultrasonido transvaginal)"] <- "Ultrasonido transvaginal"
colnames(BASE)[colnames(BASE) == "Estudios de extensión (choice=Ultrasonido de renal y de vías urinarias)"] <- "Ultrasonido de renal y de vías urinaria"
colnames(BASE)[colnames(BASE) == "Estudios de extensión (choice=Otro ¿Cuál?)"] <- "Otro estudio de extension"
#names(BASE) 119:129
BASE <- BASE %>%
mutate(across(c(119:129), ~ recode(., "Checked" = "Si", "Unchecked" = "No")))
myVars3<-c("ingreso", "dolor", "Subtipo histológico", "Grado de diferenciación", "TC TORAX", "TC ABDOMEN", "TC PELVIS", "RMN PELVIS", "PET-CT", "RAYOS X TORAX", "Laparoscopia exploratoria", "Cistoscopia","Ultrasonido transvaginal", "Ultrasonido de renal y de vías urinaria","Otro estudio de extension")
catVars3<-c("ingreso", "dolor", "Subtipo histológico", "Grado de diferenciación", "TC TORAX", "TC ABDOMEN", "TC PELVIS", "RMN PELVIS", "PET-CT", "RAYOS X TORAX", "Laparoscopia exploratoria", "Cistoscopia","Ultrasonido transvaginal", "Ultrasonido de renal y de vías urinaria","Otro estudio de extension")
tab3 <- CreateTableOne(vars = myVars3, factorVars= catVars3, strata = "Procedencia", data = BASE, includeNA = F, test = T, addOverall = T, testNonNormal = T)
table3 <- as.data.frame(print(tab3, showAllLevels= TRUE, printToggle = FALSE))
rownames(table3) <- gsub("\\.{3,}", "", rownames(table3)) # Quita 3 puntos
rownames(table3) <- gsub("\\.{1,}", " ", rownames(table3)) # Quita 1 puntos
kable(table3, format = "html", caption = "Deteccion - estudios de extension") %>%
kable_styling(bootstrap_options = c("striped", "hover", "condensed"), full_width = F,position = "center") %>%
column_spec(1, bold = T, color = "white", background = "#FFB90F") %>%
column_spec(2, border_left = T, background = "#FFFFE0")
level | Overall | Colombia | Guatemala | p | test | |
---|---|---|---|---|---|---|
n | 494 | 254 | 240 | |||
ingreso | sintomas | 368 (74.5) | 161 (63.4) | 207 ( 86.2) | <0.001 | |
X | tamizaje | 126 (25.5) | 93 (36.6) | 33 ( 13.8) | ||
dolor | No | 403 (95.3) | 177 (94.7) | 226 ( 95.8) | 0.761 | |
X 1 | Sí | 20 ( 4.7) | 10 ( 5.3) | 10 ( 4.2) | ||
Subtipo histológico | Adenocarcinoma | 59 (11.9) | 22 ( 8.7) | 37 ( 15.4) | 0.025 | |
X 2 | Carcinoma adenoescamoso | 2 ( 0.4) | 0 ( 0.0) | 2 ( 0.8) | ||
X 3 | Carcinoma escamocelular | 429 (86.8) | 228 (89.8) | 201 ( 83.8) | ||
X 4 | Carcinoma neuroendocrino de células pequeñas | 1 ( 0.2) | 1 ( 0.4) | 0 ( 0.0) | ||
X 5 | Otro, ¿Cuál? | 3 ( 0.6) | 3 ( 1.2) | 0 ( 0.0) | ||
Grado de diferenciación | Bien diferenciado | 112 (25.4) | 59 (28.5) | 53 ( 22.6) | 0.271 | |
X 6 | Mal diferenciado o Indiferenciado | 71 (16.1) | 29 (14.0) | 42 ( 17.9) | ||
X 7 | Moderadamente diferenciado | 258 (58.5) | 119 (57.5) | 139 ( 59.4) | ||
TC TORAX | No | 134 (27.1) | 54 (21.3) | 80 ( 33.3) | 0.004 | |
X 8 | Si | 360 (72.9) | 200 (78.7) | 160 ( 66.7) | ||
TC ABDOMEN | No | 37 ( 7.5) | 28 (11.0) | 9 ( 3.8) | 0.004 | |
X 9 | Si | 457 (92.5) | 226 (89.0) | 231 ( 96.2) | ||
TC PELVIS | No | 134 (27.1) | 58 (22.8) | 76 ( 31.7) | 0.035 | |
X 10 | Si | 360 (72.9) | 196 (77.2) | 164 ( 68.3) | ||
RMN PELVIS | No | 353 (71.5) | 187 (73.6) | 166 ( 69.2) | 0.319 | |
X 11 | Si | 141 (28.5) | 67 (26.4) | 74 ( 30.8) | ||
PET CT | No | 456 (92.3) | 239 (94.1) | 217 ( 90.4) | 0.172 | |
X 12 | Si | 38 ( 7.7) | 15 ( 5.9) | 23 ( 9.6) | ||
RAYOS X TORAX | No | 394 (79.8) | 192 (75.6) | 202 ( 84.2) | 0.024 | |
X 13 | Si | 100 (20.2) | 62 (24.4) | 38 ( 15.8) | ||
Laparoscopia exploratoria | No | 490 (99.2) | 251 (98.8) | 239 ( 99.6) | 0.656 | |
X 14 | Si | 4 ( 0.8) | 3 ( 1.2) | 1 ( 0.4) | ||
Cistoscopia | No | 483 (97.8) | 245 (96.5) | 238 ( 99.2) | 0.083 | |
X 15 | Si | 11 ( 2.2) | 9 ( 3.5) | 2 ( 0.8) | ||
Ultrasonido transvaginal | No | 397 (80.4) | 174 (68.5) | 223 ( 92.9) | <0.001 | |
X 16 | Si | 97 (19.6) | 80 (31.5) | 17 ( 7.1) | ||
Ultrasonido de renal y de vías urinaria | No | 483 (97.8) | 248 (97.6) | 235 ( 97.9) | 1.000 | |
X 17 | Si | 11 ( 2.2) | 6 ( 2.4) | 5 ( 2.1) | ||
Otro estudio de extension | No | 457 (92.5) | 217 (85.4) | 240 (100.0) | <0.001 | |
X 18 | Si | 37 ( 7.5) | 37 (14.6) | 0 ( 0.0) |
write.xlsx(table3, "tabla_dx.xlsx", rowNames = TRUE)
#if (!require("BiocManager", quietly = TRUE))
# install.packages("BiocManager")
#BiocManager::install("limma")
library(limma)
library(UpSetR)
BASE_UPSET <- BASE %>% select(`TC TORAX`, `TC ABDOMEN`, `TC PELVIS`, `RMN PELVIS`, `RAYOS X TORAX`,`PET-CT`,`Ultrasonido transvaginal`)
BASE_UPSET <- BASE_UPSET %>%
mutate(across(c(1:7), ~ recode(., "Si" = 1, "No" = 0)))
BASE_UPSET<- as.data.frame(BASE_UPSET)
upset(BASE_UPSET, order.by = "freq", nsets = 9, nintersects = 25, matrix.color = "#2F4F4F", main.bar.color = "#5F9EA0", sets.bar.color = "skyblue", mainbar.y.label = "Cuidado soporte", sets.x.label = "Estudios de extension", point.size = 2, line.size = 0.5, number.angles = 0, group.by = "degree", shade.alpha = 1, matrix.dot.alpha = 1, scale.intersections = "identity", scale.sets = "identity", text.scale = 1, set_size.show = T)
#estudios de extension; las tres al tiempo
BASE <- BASE %>%
mutate(ext_TO_AD_PE3 = ifelse(`TC TORAX` == "Si" & `TC ABDOMEN` == "Si" & `TC PELVIS` == "Si", "Si", "No"))
BASE <- BASE %>%
mutate(ext_TO_AD_2 = ifelse(`TC TORAX` == "Si" & `TC ABDOMEN` == "Si" & `TC PELVIS` != "Si", "Si", "No"))
BASE <- BASE %>%
mutate(ext_TO_PE_2 = ifelse(`TC TORAX` == "Si" & `TC ABDOMEN` != "Si" & `TC PELVIS` == "Si", "Si", "No"))
BASE <- BASE %>%
mutate(ext_AD_PE_2 = ifelse(`TC TORAX` != "Si" & `TC ABDOMEN` == "Si" & `TC PELVIS` == "Si", "Si", "No"))
#, `RMN PELVIS`, `RAYOS X TORAX`,`PET-CT`,`Laparoscopia exploratoria`, `Cistoscopia`, `Ultrasonido transvaginal`, `Ultrasonido de renal y de vías urinaria`, `Otro estudio de extension`)
#Se verifican los cruces
#install.packages("summarytools")
library(summarytools)
freq(BASE$ext_TO_AD_PE3)
## Frequencies
## BASE$ext_TO_AD_PE3
## Type: Character
##
## Freq % Valid % Valid Cum. % Total % Total Cum.
## ----------- ------ --------- -------------- --------- --------------
## No 236 47.77 47.77 47.77 47.77
## Si 258 52.23 100.00 52.23 100.00
## <NA> 0 0.00 100.00
## Total 494 100.00 100.00 100.00 100.00
253 PACIENTES TUVIERON los tres estudios de extensión (TC TORAX, ABDOMEN, PELVIS)
ctable(BASE$ext_TO_AD_2, BASE$`Ultrasonido transvaginal`)
## Cross-Tabulation, Row Proportions
## ext_TO_AD_2 * `Ultrasonido transvaginal`
## Data Frame: BASE
##
## ------------- -------------------------- ------------- ------------ --------------
## Ultrasonido transvaginal No Si Total
## ext_TO_AD_2
## No 324 (78.6%) 88 (21.4%) 412 (100.0%)
## Si 73 (89.0%) 9 (11.0%) 82 (100.0%)
## Total 397 (80.4%) 97 (19.6%) 494 (100.0%)
## ------------- -------------------------- ------------- ------------ --------------
Pacientes que les realizaron TC torax + abdomen (392), a 9 les realizaron ultrasonido vaginal
ctable(BASE$ext_TO_AD_2, BASE$`RMN PELVIS`)
## Cross-Tabulation, Row Proportions
## ext_TO_AD_2 * `RMN PELVIS`
## Data Frame: BASE
##
## ------------- ------------ ------------- ------------- --------------
## RMN PELVIS No Si Total
## ext_TO_AD_2
## No 298 (72.3%) 114 (27.7%) 412 (100.0%)
## Si 55 (67.1%) 27 (32.9%) 82 (100.0%)
## Total 353 (71.5%) 141 (28.5%) 494 (100.0%)
## ------------- ------------ ------------- ------------- --------------
ctable(BASE$ext_TO_AD_2, BASE$`Otro estudio de extension`)
## Cross-Tabulation, Row Proportions
## ext_TO_AD_2 * `Otro estudio de extension`
## Data Frame: BASE
##
## ------------- --------------------------- ------------- ----------- --------------
## Otro estudio de extension No Si Total
## ext_TO_AD_2
## No 381 (92.5%) 31 (7.5%) 412 (100.0%)
## Si 76 (92.7%) 6 (7.3%) 82 (100.0%)
## Total 457 (92.5%) 37 (7.5%) 494 (100.0%)
## ------------- --------------------------- ------------- ----------- --------------
Pacientes que les realizaron TC torax + abdomen (392), a 27 les realizaRON rmn pelvis
ctable(BASE$ext_AD_PE_2, BASE$`RAYOS X TORAX`)
## Cross-Tabulation, Row Proportions
## ext_AD_PE_2 * `RAYOS X TORAX`
## Data Frame: BASE
##
## ------------- --------------- ------------- ------------- --------------
## RAYOS X TORAX No Si Total
## ext_AD_PE_2
## No 343 (87.1%) 51 (12.9%) 394 (100.0%)
## Si 51 (51.0%) 49 (49.0%) 100 (100.0%)
## Total 394 (79.8%) 100 (20.2%) 494 (100.0%)
## ------------- --------------- ------------- ------------- --------------
A pacientes que les realizaron TC abdomen y pelvis a 49 les realizaron rayos x.
ctable(BASE$ext_TO_PE_2, BASE$`Ultrasonido de renal y de vías urinaria`)
## Cross-Tabulation, Row Proportions
## ext_TO_PE_2 * `Ultrasonido de renal y de vías urinaria`
## Data Frame: BASE
##
## ------------- ----------------------------------------- ------------- ----------- --------------
## Ultrasonido de renal y de vías urinaria No Si Total
## ext_TO_PE_2
## No 483 (97.8%) 11 (2.2%) 494 (100.0%)
## Total 483 (97.8%) 11 (2.2%) 494 (100.0%)
## ------------- ----------------------------------------- ------------- ----------- --------------
Ningun paciente tuvo solammente TORAX Y PELVIS
BASE$`Tamaño tumoral clínico` <- factor(BASE$`Tamaño tumoral clínico`, levels=c("tumor microscópico", "≤ 2 cm", ">2 cm - ≤ 4cm", ">4 cm"))
BASE$`Especialidad que realizó la primera consulta` <- ifelse(BASE$`Especialidad que realizó la primera consulta` %in% c("Cuidados Paliativos", "Oncología clínica", "Otra ¿Cuál?", "Radioterapia"), "Otra", BASE$`Especialidad que realizó la primera consulta`)
myVars4<-c("Especialidad que realizó la primera consulta","Diagnóstico CIE-10 registrado", "Tamaño tumoral clínico", "EST_clin_FIGO", "ECOG")
catVars4<-c("Especialidad que realizó la primera consulta","Diagnóstico CIE-10 registrado", "Tamaño tumoral clínico", "EST_clin_FIGO", "ECOG")
tab4 <- CreateTableOne(vars = myVars4, factorVars= catVars4, strata = "Procedencia", data = BASE, includeNA = F, test = T, addOverall = T, testNonNormal = T)
table4 <- as.data.frame(print(tab4, showAllLevels= TRUE, printToggle = FALSE))
rownames(table4) <- gsub("\\.{3,}", "", rownames(table4)) # Quita 3 puntos
rownames(table4) <- gsub("\\.{1,}", " ", rownames(table4)) # Quita 1 puntos
kable(table4, format = "html", caption = "Variables clinicas") %>%
kable_styling(bootstrap_options = c("striped", "hover", "condensed"), full_width = F,position = "center") %>%
column_spec(1, bold = T, color = "white", background = "blue") %>%
column_spec(2, border_left = T, background = "#ADD8E6")
level | Overall | Colombia | Guatemala | p | test | |
---|---|---|---|---|---|---|
n | 494 | 254 | 240 | |||
Especialidad que realizó la primera consulta | Ginecología Oncológica | 399 (80.9) | 200 (79.1) | 199 (82.9) | 0.328 | |
X | Otra | 94 (19.1) | 53 (20.9) | 41 (17.1) | ||
Diagnóstico CIE 10 registrado | C530 Tumor maligno del endocérvix | 91 (18.4) | 50 (19.7) | 41 (17.1) | <0.001 | |
X 1 | C531 Tumor maligno del exocérvix | 292 (59.1) | 103 (40.6) | 189 (78.8) | ||
X 2 | C539 Tumor maligno del cuello del útero, sin otra especificación | 103 (20.9) | 97 (38.2) | 6 ( 2.5) | ||
X 3 | C55X Tumor maligno del útero, parte no especificada | 8 ( 1.6) | 4 ( 1.6) | 4 ( 1.7) | ||
Tamaño tumoral clínico | tumor microscópico | 5 ( 1.1) | 5 ( 2.1) | 0 ( 0.0) | 0.001 | |
X 4 | ≤ 2 cm | 2 ( 0.4) | 2 ( 0.9) | 0 ( 0.0) | ||
X 5 | >2 cm - ≤ 4cm | 89 (18.8) | 31 (13.3) | 58 (24.2) | ||
X 6 | >4 cm | 377 (79.7) | 195 (83.7) | 182 (75.8) | ||
EST_clin_FIGO | IB3,II,IIA | 61 (12.3) | 17 ( 6.7) | 44 (18.3) | <0.001 | |
X 7 | IIB, III, IIIA, IIIB, IIIC, IVA | 433 (87.7) | 237 (93.3) | 196 (81.7) | ||
ECOG | ECOG0 | 181 (37.1) | 147 (59.3) | 34 (14.2) | <0.001 | |
X 8 | ECOG1 | 240 (49.2) | 92 (37.1) | 148 (61.7) | ||
X 9 | ECOG2 | 63 (12.9) | 9 ( 3.6) | 54 (22.5) | ||
X 10 | ECOG3 | 4 ( 0.8) | 0 ( 0.0) | 4 ( 1.7) |
write.xlsx(table4, "tabla_clinica.xlsx", rowNames = TRUE)
colnames(BASE)[colnames(BASE) == "Tratamiento instaurado como primera línea (si selecciona quimiorradiación no debe seleccionar ni terapia sistémica adyuvante ni radiación adyuvante) (choice=Quimio-radiación concomitante)"] <- "Quimio-radiación concomitante"
colnames(BASE)[colnames(BASE) == "Tratamiento instaurado como primera línea (si selecciona quimiorradiación no debe seleccionar ni terapia sistémica adyuvante ni radiación adyuvante) (choice=Cirugía)"] <- "Cirugía"
colnames(BASE)[colnames(BASE) == "Tratamiento instaurado como primera línea (si selecciona quimiorradiación no debe seleccionar ni terapia sistémica adyuvante ni radiación adyuvante) (choice=Terapia sistémica adyuvante)"] <- "Terapia sistémica adyuvante"
colnames(BASE)[colnames(BASE) =="Tratamiento instaurado como primera línea (si selecciona quimiorradiación no debe seleccionar ni terapia sistémica adyuvante ni radiación adyuvante) (choice=Radiación adyuvante)"] <- "Radiación adyuvante"
colnames(BASE)[colnames(BASE) =="Tratamiento instaurado como primera línea (si selecciona quimiorradiación no debe seleccionar ni terapia sistémica adyuvante ni radiación adyuvante) (choice=Cuidado de soporte)"] <- "Cuidado soporte"
colnames(BASE)[colnames(BASE) =="Tratamiento instaurado como primera línea (si selecciona quimiorradiación no debe seleccionar ni terapia sistémica adyuvante ni radiación adyuvante) (choice=No recibió tratamiento)"] <- "No recibio tratamiento"
colnames(BASE)[colnames(BASE) =="Esquema de terapia sistémica en quimio-radiación concomitante (primera línea) (choice=Quimioterapia)"] <- "Esquema:Quimioterapia)"
colnames(BASE)[colnames(BASE) =="Esquema de terapia sistémica en quimio-radiación concomitante (primera línea) (choice=Terapias de blanco molecular)"] <- "Esquema:Terapias de blanco molecular)"
colnames(BASE)[colnames(BASE) =="Esquema de terapia sistémica en quimio-radiación concomitante (primera línea) (choice=Terapias de blanco molecular)"] <- "Esquema:Terapias de blanco molecular)"
colnames(BASE)[colnames(BASE) =="¿La terapia sistémica prescrita se administró en su totalidad? (Primera Línea)"] <- "Esquema completo t sistemica"
colnames(BASE)[colnames(BASE) =="¿Prescripción de Radioterapia Externa (Primera Línea)"] <- "Prescripcion radio externa"
colnames(BASE)[colnames(BASE) =="¿¿Completo en su totalidad el tratamiento por radioterapia externa?"] <- "Esquema completo radioterapia"
colnames(BASE)[colnames(BASE) =="¿Completo en su totalidad el tratamiento por radioterapia externa?"] <- "Esquema completo radioterapia"
colnames(BASE)[colnames(BASE) =="Prescripción de Braquiterapia"] <- "Prescripcion braquiterapia"
colnames(BASE)[colnames(BASE) =="¿Finalizo regimen de braquiterapia prescrito?"] <- "Esquema completo braquiterapia"
colnames(BASE)[colnames(BASE) =="Cirugía (choice=Histerectomía extrafascial)"] <- "Histerectomía extrafascial"
colnames(BASE)[colnames(BASE) =="Cirugía (choice=Histerectomía radical modificada)"] <- "Histerectomía radical modificada"
colnames(BASE)[colnames(BASE) =="Cirugía (choice=Histerectomía radical)"] <- "Histerectomía radical"
colnames(BASE)[colnames(BASE) =="Cirugía (choice=Salpingooforectomía bilateral)"] <- "Salpingooforectomía bilateral"
colnames(BASE)[colnames(BASE) =="Cirugía (choice=Linfadenectomía pélvica)"] <- "Linfadenectomía pélvica"
colnames(BASE)[colnames(BASE) =="Cirugía (choice=Otro)"] <- "Otra cirugia"
BASE$`Esquema completo t sistemica` <- factor(recode(BASE$`Esquema completo t sistemica`, "Desconocido" = "No"))
myVars5<-c("Quimio-radiación concomitante", "Cirugía", "Terapia sistémica adyuvante", "Radiación adyuvante", "Cuidado soporte", "No recibio tratamiento",
"Esquema:Quimioterapia)", "Esquema:Terapias de blanco molecular)", "Esquema completo t sistemica", "Prescripcion radio externa", "Esquema completo radioterapia",
"Prescripcion braquiterapia", "Intervalo entre Radioterapia Externa y Braquiterapia", "Prescripcion braquiterapia", "Esquema completo braquiterapia", "Histerectomía extrafascial", "Histerectomía radical modificada", "Histerectomía radical",
"Salpingooforectomía bilateral", "Linfadenectomía pélvica", "Otra cirugia")
catVars5<-c("Quimio-radiación concomitante", "Cirugía", "Terapia sistémica adyuvante", "Radiación adyuvante", "Cuidado soporte", "No recibio tratamiento",
"Esquema:Quimioterapia)", "Esquema:Terapias de blanco molecular)", "Esquema completo t sistemica", "Prescripcion radio externa", "Esquema completo radioterapia",
"Prescripcion braquiterapia", "Prescripcion braquiterapia", "Esquema completo braquiterapia", "Histerectomía extrafascial", "Histerectomía radical modificada", "Histerectomía radical", "Salpingooforectomía bilateral", "Linfadenectomía pélvica", "Otra cirugia")
#names(BASE) 154, 155, 156, 157, 158, 159, 161, 162, 194, 195, 196, 197, 198, 199
BASE <- BASE %>%
mutate(across(c(154, 155, 156, 157, 158, 159, 161, 162, 194, 195, 196, 197, 198, 199), ~ recode(., "Checked" = "Si", "Unchecked" = "No")))
tab5 <- CreateTableOne(vars = myVars5, factorVars= catVars5, strata = "Procedencia", data = BASE, includeNA = F, test = T, addOverall = T, testNonNormal = T)
table5 <- as.data.frame(print(tab5, showAllLevels= TRUE, printToggle = FALSE))
rownames(table5) <- gsub("\\.{3,}", "", rownames(table5)) # Quita 3 puntos
rownames(table5) <- gsub("\\.{1,}", " ", rownames(table5)) # Quita 1 puntos
kable(table5, format = "html", caption = "Tratamiento") %>%
kable_styling(bootstrap_options = c("striped", "hover", "condensed"), full_width = F,position = "center") %>%
column_spec(1, bold = T, color = "white", background = "#8B475D") %>%
column_spec(2, border_left = T, background = "#FFC0CB")
level | Overall | Colombia | Guatemala | p | test | |
---|---|---|---|---|---|---|
n | 494 | 254 | 240 | |||
Quimio radiación concomitante | No | 19 ( 3.8) | 15 ( 5.9) | 4 ( 1.7) | 0.027 | |
X | Si | 475 ( 96.2) | 239 ( 94.1) | 236 ( 98.3) | ||
Cirugía | No | 468 ( 94.7) | 234 ( 92.1) | 234 ( 97.5) | 0.013 | |
X 1 | Si | 26 ( 5.3) | 20 ( 7.9) | 6 ( 2.5) | ||
Terapia sistémica adyuvante | No | 490 ( 99.2) | 250 ( 98.4) | 240 (100.0) | 0.147 | |
X 2 | Si | 4 ( 0.8) | 4 ( 1.6) | 0 ( 0.0) | ||
Radiación adyuvante | No | 480 ( 97.2) | 241 ( 94.9) | 239 ( 99.6) | 0.004 | |
X 3 | Si | 14 ( 2.8) | 13 ( 5.1) | 1 ( 0.4) | ||
Cuidado soporte | No | 494 (100.0) | 254 (100.0) | 240 (100.0) | NA | |
No recibio tratamiento | No | 494 (100.0) | 254 (100.0) | 240 (100.0) | NA | |
Esquema Quimioterapia | No | 20 ( 4.0) | 16 ( 6.3) | 4 ( 1.7) | 0.017 | |
X 4 | Si | 474 ( 96.0) | 238 ( 93.7) | 236 ( 98.3) | ||
Esquema Terapias de blanco molecular | No | 492 ( 99.6) | 252 ( 99.2) | 240 (100.0) | 0.504 | |
X 5 | Si | 2 ( 0.4) | 2 ( 0.8) | 0 ( 0.0) | ||
Esquema completo t sistemica | No | 36 ( 7.5) | 27 ( 11.1) | 9 ( 3.8) | 0.004 | |
X 6 | Si | 443 ( 92.5) | 216 ( 88.9) | 227 ( 96.2) | ||
Esquema completo radioterapia | No | 13 ( 2.7) | 6 ( 2.4) | 7 ( 3.0) | 0.916 | |
X 7 | Si | 473 ( 97.3) | 244 ( 97.6) | 229 ( 97.0) | ||
Prescripcion braquiterapia | No | 52 ( 10.7) | 10 ( 4.0) | 42 ( 17.7) | <0.001 | |
X 8 | Si | 436 ( 89.3) | 241 ( 96.0) | 195 ( 82.3) | ||
Intervalo entre Radioterapia Externa y Braquiterapia mean SD | 20.76 (20.28) | 21.52 (19.76) | 19.84 (20.90) | 0.392 | ||
Esquema completo braquiterapia | No | 18 ( 4.2) | 10 ( 4.1) | 8 ( 4.2) | 1.000 | |
X 9 | Si | 414 ( 95.8) | 231 ( 95.9) | 183 ( 95.8) | ||
Histerectomía extrafascial | No | 491 ( 99.4) | 254 (100.0) | 237 ( 98.8) | 0.227 | |
X 10 | Si | 3 ( 0.6) | 0 ( 0.0) | 3 ( 1.2) | ||
Histerectomía radical modificada | No | 487 ( 98.6) | 249 ( 98.0) | 238 ( 99.2) | 0.493 | |
X 11 | Si | 7 ( 1.4) | 5 ( 2.0) | 2 ( 0.8) | ||
Histerectomía radical | No | 482 ( 97.6) | 242 ( 95.3) | 240 (100.0) | 0.002 | |
X 12 | Si | 12 ( 2.4) | 12 ( 4.7) | 0 ( 0.0) | ||
Salpingooforectomía bilateral | No | 481 ( 97.4) | 241 ( 94.9) | 240 (100.0) | 0.001 | |
X 13 | Si | 13 ( 2.6) | 13 ( 5.1) | 0 ( 0.0) | ||
Linfadenectomía pélvica | No | 482 ( 97.6) | 242 ( 95.3) | 240 (100.0) | 0.002 | |
X 14 | Si | 12 ( 2.4) | 12 ( 4.7) | 0 ( 0.0) | ||
Otra cirugia | No | 491 ( 99.4) | 252 ( 99.2) | 239 ( 99.6) | 1.000 | |
X 15 | Si | 3 ( 0.6) | 2 ( 0.8) | 1 ( 0.4) |
write.xlsx(table5, "tabla_tratamiento.xlsx", rowNames = TRUE)
#momento adicional
BASE$dif_quim_braq <- round(as.numeric(BASE$`Fecha de finalización de braquiterapia` - BASE$`Fecha de inicio de tratamiento sistémico (día de primera aplicación de terapia)`
) / 30, 3)
myVars6<-c("M_quim", "M_quim0", "M_rad0", "M_rad", "M_braq", "M_braq0", "dif_dx_primtrat", "dif_quim_braq", "Frecuencia del seguimiento imagenológico: Número de imágenes en el Primer Año", "Frecuencia de seguimiento por Oncología Clínica: Número de visitas en el Primer Año", "Frecuencia de seguimiento por Ginecología Oncológica: Número de visitas en el Primer Año")
tab6 <- CreateTableOne(vars = myVars6, strata = "Procedencia", data = BASE, includeNA = F, test = T, addOverall = T, testNonNormal = T)
table6 <- as.data.frame(print(tab6, showAllLevels= TRUE, printToggle = FALSE))
rownames(table6) <- gsub("\\.{3,}", "", rownames(table6)) # Quita 3 puntos
rownames(table6) <- gsub("\\.{1,}", " ", rownames(table6)) # Quita 1 puntos
kable(table6, format = "html", caption = "Tiempo tratamientos") %>%
kable_styling(bootstrap_options = c("striped", "hover", "condensed"), full_width = F,position = "center") %>%
column_spec(1, bold = T, color = "white", background = "#B03060")
level | Overall | Colombia | Guatemala | p | test | |
---|---|---|---|---|---|---|
n | 494 | 254 | 240 | |||
M_quim (mean (SD)) | 1.33 (2.44) | 1.47 (2.42) | 1.19 (2.47) | 0.215 | ||
M_quim0 (mean (SD)) | 0.85 (1.81) | 1.09 (2.47) | 0.61 (0.61) | 0.004 | ||
M_rad0 (mean (SD)) | 0.77 (0.62) | 0.95 (0.60) | 0.59 (0.59) | <0.001 | ||
M_rad (mean (SD)) | 1.45 (2.04) | 1.44 (0.50) | 1.46 (2.86) | 0.942 | ||
M_braq (mean (SD)) | 0.55 (1.88) | 0.64 (2.52) | 0.44 (0.29) | 0.264 | ||
M_braq0 (mean (SD)) | 1.56 (1.23) | 1.85 (1.39) | 1.21 (0.89) | <0.001 | ||
dif_dx_primtrat (mean (SD)) | 3.03 (2.87) | 3.40 (3.38) | 2.64 (2.16) | 0.003 | ||
dif_quim_braq (mean (SD)) | 2.53 (2.03) | 2.73 (2.64) | 2.30 (0.85) | 0.029 | ||
Frecuencia del seguimiento imagenológico: Número de imágenes en el Primer Año (mean (SD)) | 1.66 (1.63) | 2.45 (1.81) | 0.84 (0.84) | <0.001 | ||
Frecuencia de seguimiento por Oncología Clínica: Número de visitas en el Primer Año (mean (SD)) | 3.33 (2.17) | 3.30 (2.11) | 3.72 (2.78) | 0.428 | ||
Frecuencia de seguimiento por Ginecología Oncológica: Número de visitas en el Primer Año (mean (SD)) | 3.02 (1.17) | 2.58 (1.35) | 3.46 (0.72) | <0.001 |
write.xlsx(table6, "tabla_tiempo.xlsx", rowNames = TRUE)
colnames(BASE)[colnames(BASE) =="Cuidado de soporte (choice=Cuidados paliativos)"] <- "Cuidado paliativo"
colnames(BASE)[colnames(BASE) =="Cuidado de soporte (choice=Nutrición)"] <- "Nutricion"
colnames(BASE)[colnames(BASE) =="Cuidado de soporte (choice=Patología oral)"] <- "Patologia oral"
colnames(BASE)[colnames(BASE) =="Cuidado de soporte (choice=Psicología)"] <- "Psicologia"
colnames(BASE)[colnames(BASE) =="Cuidado de soporte (choice=Fertilidad/Sexualidad)"] <- "Fertilidad/sexualidad"
colnames(BASE)[colnames(BASE) =="Cuidado de soporte (choice=Otro, ¿Cuál?)"] <- "Otro cuidado de soporte"
colnames(BASE)[colnames(BASE) =="Cuidado de soporte (choice=Ninguno)"] <- "Ningun cuidado de soporte"
#names(BASE) 242, 243, 244, 245, 246, 247, 248
BASE <- BASE %>%
mutate(across(c(242, 243, 244, 245, 246, 247, 248), ~ recode(., "Checked" = "Si", "Unchecked" = "No")))
myVars7<-c("Ningun cuidado de soporte", "Cuidado paliativo","Nutricion", "Patologia oral", "Psicologia", "Fertilidad/sexualidad", "Otro cuidado de soporte" )
catVars7<-c("Ningun cuidado de soporte", "Cuidado paliativo","Nutricion", "Patologia oral", "Psicologia", "Fertilidad/sexualidad", "Otro cuidado de soporte")
tab7 <- CreateTableOne(vars = myVars7, factorVars= catVars7, strata = "Procedencia", data = BASE, includeNA = F, test = T, addOverall = T, testNonNormal = T)
table7 <- as.data.frame(print(tab7, showAllLevels= TRUE, printToggle = FALSE))
rownames(table7) <- gsub("\\.{3,}", "", rownames(table7)) # Quita 3 puntos
rownames(table7) <- gsub("\\.{1,}", " ", rownames(table7)) # Quita 1 puntos
kable(table7, format = "html", caption = "Cuidado de soporte") %>%
kable_styling(bootstrap_options = c("striped", "hover", "condensed"), full_width = F,position = "center") %>%
column_spec(1, bold = T, color = "white", background = "purple") %>%
column_spec(2, border_left = T, background = "#CD96CD")
level | Overall | Colombia | Guatemala | p | test | |
---|---|---|---|---|---|---|
n | 494 | 254 | 240 | |||
Ningun cuidado de soporte | No | 216 (43.7) | 186 (73.2) | 30 (12.5) | <0.001 | |
X | Si | 278 (56.3) | 68 (26.8) | 210 (87.5) | ||
Cuidado paliativo | No | 339 (68.6) | 110 (43.3) | 229 (95.4) | <0.001 | |
X 1 | Si | 155 (31.4) | 144 (56.7) | 11 ( 4.6) | ||
Nutricion | No | 399 (80.8) | 167 (65.7) | 232 (96.7) | <0.001 | |
X 2 | Si | 95 (19.2) | 87 (34.3) | 8 ( 3.3) | ||
Patologia oral | No | 426 (86.2) | 187 (73.6) | 239 (99.6) | <0.001 | |
X 3 | Si | 68 (13.8) | 67 (26.4) | 1 ( 0.4) | ||
Psicologia | No | 422 (85.4) | 186 (73.2) | 236 (98.3) | <0.001 | |
X 4 | Si | 72 (14.6) | 68 (26.8) | 4 ( 1.7) | ||
Fertilidad sexualidad | No | 489 (99.0) | 253 (99.6) | 236 (98.3) | 0.336 | |
X 5 | Si | 5 ( 1.0) | 1 ( 0.4) | 4 ( 1.7) | ||
Otro cuidado de soporte | No | 463 (93.7) | 225 (88.6) | 238 (99.2) | <0.001 | |
X 6 | Si | 31 ( 6.3) | 29 (11.4) | 2 ( 0.8) |
write.xlsx(table7, "tabla_cuidadosoporte_junio.xlsx", rowNames = TRUE)
Revision combinaciones cuidado de soporte
BASE_VENN2 <- BASE %>% select(`Cuidado paliativo`, Nutricion, `Patologia oral`, Psicologia, `Otro cuidado de soporte`)
BASE_VENN2 <- BASE_VENN2 %>%
mutate(across(c(1:5), ~ recode(., "Si" = 1, "No" = 0)))
PLOT_venn2 <- vennCounts(BASE_VENN2)
vennDiagram(PLOT_venn2, cex = 1, circle.col = c("black", "#8B7E66","#CDAA7D", "skyblue", "#FFD39B"),counts.col = "black", show.include = T)
# Diagrama sankey
#se codificia las nuevas variables
#1 Completitud del tratamiento Quimio + Radio + Braqui
BASE <- BASE %>%
mutate(trat_complete2 = ifelse(coalesce(`Esquema completo t sistemica`, "No") == "Si" & coalesce(`Esquema completo radioterapia`, "No") == "Si" & coalesce(`Esquema completo braquiterapia`, "No") == "Si", "+compl", "-compl"))
#2 Ingreso:sintomas o tamizaje
BASE$ingreso <- as.factor(BASE$ingreso)
#3 Atencion por ginecooncologia
BASE$gineco <- factor(ifelse(grepl("Ginecología Oncológica", BASE$`Especialidad que realizó la primera consulta`), "+gineco", "-gineco"))
#Tratamientos--------------------------------------------------------------
#Cirugia
BASE$cirugia <- factor(ifelse(!is.na(BASE$`Fecha de cirugía`), "+cir", "-cir"))
#Quimioterapia
BASE$quimio <- factor(ifelse(
!is.na(BASE$`Fecha de inicio de tratamiento sistémico (día de primera aplicación de terapia)`) | !is.na(BASE$`Fecha de aplicación de finalización de tratamiento sistémico`) |
BASE$`Esquema completo t sistemica` == "Si", "+quim", "-quim"))
BASE$quimio[is.na(BASE$quimio)] <- "-quim"
#Radioterapia
BASE$radio <- factor(ifelse(
!is.na(BASE$`Fecha de inicio de radioterapia (primera sesión)`) |
!is.na(BASE$`Fecha de finalización de radioterapia (última sesión)`) |
BASE$`Esquema completo radioterapia` == "Si", "+rad", "-rad"))
BASE$radio <- as.character(BASE$radio)
BASE$radio[is.na(BASE$radio)] <- "-rad"
BASE$radio <- factor(BASE$radio)
#Braquiterapia
BASE$braqu <- factor(ifelse(
!is.na(BASE$`Fecha de primera aplicación de braquiterapia`) |
!is.na(BASE$`Fecha de finalización de braquiterapia`) |
BASE$`Esquema completo braquiterapia` == "Si", "+braq", "-braq"))
BASE$braqu[is.na(BASE$braqu)] <- "-braq"
BASE_AL <- BASE %>% select(AFILIACION,Procedencia, ingreso, gineco, cirugia, quimio, radio, braqu, trat_complete2)
#levels(BASE_AL$AFILIACION)
library(dplyr)
BASE_AL <- BASE_AL %>%
mutate(AFILIACION = recode(AFILIACION, "Subsidiado/Público" = "Público", "Contributivo/Privado" = "Privado"))
BASE_transformado <- BASE_AL %>% group_by(AFILIACION, Procedencia, ingreso, gineco, cirugia,quimio, radio, braqu, trat_complete2) %>%
summarise(Freq = n()) %>% ungroup() %>% rename(Afiliacion = AFILIACION, Procedencia = Procedencia, Ingreso = ingreso, Gineco = gineco, Cirugia = cirugia, Quimio = quimio,
Radio = radio, Braq = braqu, Complete = trat_complete2)
library(easyalluvial)
alluvial_wide( data = BASE_AL,
max_variables = 8, fill_by = 'first_variable',
col_vector_flow = c("skyblue", "salmon"))
conteo de los “trayectos
library(gt)
BASE_transformado %>%
gt() %>%
tab_header(title = "Conteo trayectos") %>%
cols_label_with(fn = toupper)
Conteo trayectos | |||||||||
AFILIACION | PROCEDENCIA | INGRESO | GINECO | CIRUGIA | QUIMIO | RADIO | BRAQ | COMPLETE | FREQ |
---|---|---|---|---|---|---|---|---|---|
Público | Colombia | sintomas | -gineco | -cir | -quim | +rad | +braq | -compl | 1 |
Público | Colombia | sintomas | -gineco | -cir | +quim | -rad | -braq | -compl | 1 |
Público | Colombia | sintomas | -gineco | -cir | +quim | +rad | +braq | +compl | 13 |
Público | Colombia | sintomas | -gineco | -cir | +quim | +rad | +braq | -compl | 1 |
Público | Colombia | sintomas | +gineco | -cir | -quim | -rad | -braq | -compl | 1 |
Público | Colombia | sintomas | +gineco | -cir | -quim | +rad | +braq | -compl | 3 |
Público | Colombia | sintomas | +gineco | -cir | +quim | +rad | -braq | -compl | 1 |
Público | Colombia | sintomas | +gineco | -cir | +quim | +rad | +braq | +compl | 62 |
Público | Colombia | sintomas | +gineco | -cir | +quim | +rad | +braq | -compl | 6 |
Público | Colombia | sintomas | +gineco | +cir | -quim | +rad | +braq | -compl | 1 |
Público | Colombia | sintomas | +gineco | +cir | +quim | +rad | +braq | +compl | 1 |
Público | Colombia | tamizaje | -gineco | -cir | +quim | +rad | +braq | +compl | 4 |
Público | Colombia | tamizaje | +gineco | -cir | +quim | +rad | +braq | +compl | 30 |
Público | Colombia | tamizaje | +gineco | -cir | +quim | +rad | +braq | -compl | 4 |
Público | Colombia | tamizaje | +gineco | +cir | -quim | +rad | +braq | -compl | 2 |
Público | Guatemala | sintomas | -gineco | -cir | +quim | +rad | +braq | +compl | 10 |
Público | Guatemala | sintomas | +gineco | -cir | +quim | +rad | -braq | -compl | 3 |
Público | Guatemala | sintomas | +gineco | -cir | +quim | +rad | +braq | +compl | 40 |
Público | Guatemala | sintomas | +gineco | -cir | +quim | +rad | +braq | -compl | 5 |
Público | Guatemala | sintomas | +gineco | +cir | +quim | +rad | +braq | +compl | 1 |
Público | Guatemala | tamizaje | +gineco | -cir | +quim | +rad | -braq | -compl | 1 |
Público | Guatemala | tamizaje | +gineco | -cir | +quim | +rad | +braq | +compl | 6 |
Privado | Colombia | sintomas | -gineco | -cir | -quim | +rad | +braq | -compl | 2 |
Privado | Colombia | sintomas | -gineco | -cir | +quim | +rad | +braq | +compl | 18 |
Privado | Colombia | sintomas | -gineco | -cir | +quim | +rad | +braq | -compl | 3 |
Privado | Colombia | sintomas | -gineco | +cir | +quim | +rad | -braq | -compl | 1 |
Privado | Colombia | sintomas | -gineco | +cir | +quim | +rad | +braq | +compl | 3 |
Privado | Colombia | sintomas | +gineco | -cir | +quim | +rad | -braq | -compl | 6 |
Privado | Colombia | sintomas | +gineco | -cir | +quim | +rad | +braq | +compl | 29 |
Privado | Colombia | sintomas | +gineco | -cir | +quim | +rad | +braq | -compl | 3 |
Privado | Colombia | sintomas | +gineco | +cir | +quim | +rad | +braq | +compl | 3 |
Privado | Colombia | sintomas | +gineco | +cir | +quim | +rad | +braq | -compl | 2 |
Privado | Colombia | tamizaje | -gineco | -cir | +quim | +rad | +braq | +compl | 6 |
Privado | Colombia | tamizaje | -gineco | -cir | +quim | +rad | +braq | -compl | 1 |
Privado | Colombia | tamizaje | +gineco | -cir | -quim | +rad | +braq | -compl | 2 |
Privado | Colombia | tamizaje | +gineco | -cir | +quim | +rad | -braq | -compl | 4 |
Privado | Colombia | tamizaje | +gineco | -cir | +quim | +rad | +braq | +compl | 29 |
Privado | Colombia | tamizaje | +gineco | -cir | +quim | +rad | +braq | -compl | 5 |
Privado | Colombia | tamizaje | +gineco | +cir | -quim | -rad | -braq | -compl | 1 |
Privado | Colombia | tamizaje | +gineco | +cir | +quim | +rad | +braq | +compl | 4 |
Privado | Colombia | tamizaje | +gineco | +cir | +quim | +rad | +braq | -compl | 1 |
Privado | Guatemala | sintomas | -gineco | -cir | -quim | +rad | +braq | -compl | 1 |
Privado | Guatemala | sintomas | -gineco | -cir | +quim | +rad | -braq | -compl | 5 |
Privado | Guatemala | sintomas | -gineco | -cir | +quim | +rad | +braq | +compl | 19 |
Privado | Guatemala | sintomas | -gineco | -cir | +quim | +rad | +braq | -compl | 1 |
Privado | Guatemala | sintomas | -gineco | +cir | -quim | -rad | -braq | -compl | 1 |
Privado | Guatemala | sintomas | +gineco | -cir | +quim | +rad | -braq | -compl | 29 |
Privado | Guatemala | sintomas | +gineco | -cir | +quim | +rad | +braq | +compl | 80 |
Privado | Guatemala | sintomas | +gineco | -cir | +quim | +rad | +braq | -compl | 8 |
Privado | Guatemala | sintomas | +gineco | +cir | -quim | -rad | -braq | -compl | 2 |
Privado | Guatemala | sintomas | +gineco | +cir | +quim | +rad | +braq | +compl | 2 |
Privado | Guatemala | tamizaje | -gineco | -cir | +quim | +rad | -braq | -compl | 1 |
Privado | Guatemala | tamizaje | -gineco | -cir | +quim | +rad | +braq | +compl | 3 |
Privado | Guatemala | tamizaje | +gineco | -cir | +quim | +rad | -braq | -compl | 3 |
Privado | Guatemala | tamizaje | +gineco | -cir | +quim | +rad | +braq | +compl | 17 |
Privado | Guatemala | tamizaje | +gineco | -cir | +quim | +rad | +braq | -compl | 2 |
write.xlsx(BASE_transformado, "SANKEY1.xlsx", rowNames = TRUE)
¿Cuántos fallecieron?
table(BASE$Procedencia, BASE$`¿La pérdida en el seguimiento fue debido a fallecimiento?`)
##
## No No data Yes
## Colombia 184 36 26
## Guatemala 146 30 63
BASE <- BASE %>%
mutate(retiro = ifelse(rowSums(across(c(`Motivo por el cuál no se completó la terapia sistémica (Primera Línea)`, `Causa de suspender tratamiento radioterapia`, `Causa de suspender braquiterapia`), ~ . == "Contraindicación médica"),
na.rm = TRUE) > 0, "+cont.m", "-cont.m"))
BASE$rta1 <- factor(recode(BASE$`Respuesta a Primera Línea de Tratamiento`,
"Completa" = "+rta_trat",
"Parcial" = "+rta_trat",
"Sin dato" = "-rta_trat",
"Sin respuesta" = "-rta_trat"))
BASE$seg_onco_cli <- factor(recode(BASE$`Especialista de seguimiento (choice=Oncología clínica)`, "Checked" = "+seg_onco",
"Unchecked" = "-seg_onco"))
BASE$linea_2 <- factor(recode(BASE$`¿Recibió segunda línea de tratamiento?`,
"Yes" = "Si",
"No" = "No"))
BASE$linea_3 <- factor(recode(BASE$`Recibio tercera línea de tratamiento`,
"Yes" = "Si",
"No" = "No"))
BASE$fall <- factor(recode(BASE$`¿La pérdida en el seguimiento fue debido a fallecimiento?`,
"Yes" = "+fall",
"No" = "-fall",
"No data" = "-fall"))
table(is.na(BASE$fall))
##
## FALSE TRUE
## 485 9
BASE$fall[is.na(BASE$fall)] <- "-fall"
BASE$linea_2[is.na(BASE$linea_2)] <- "No"
BASE$linea_3[is.na(BASE$linea_3)] <- "No"
BASE$rta1[is.na(BASE$rta1)] <- "-rta_trat"
BASE$retiro <- as.factor(BASE$retiro)
BASE$retiro <- relevel(BASE$retiro, ref = "+cont.m")
BASE_AL_pos <- BASE %>% select(trat_complete2, retiro, rta1, seg_onco_cli, linea_2, linea_3, fall)
BASE_transformado2 <- BASE_AL_pos %>% group_by(trat_complete2, retiro, rta1, seg_onco_cli, linea_2, linea_3, fall) %>%
summarise(Freq = n()) %>% ungroup() %>% rename(Trat_completo=trat_complete2, retiro = retiro, Rta_1liena = rta1, seg_onco_clinica=seg_onco_cli, linea_trat_2=linea_2, linea_trat_3=linea_3, fallecimiento = fall)
alluvial_wide( data = BASE_AL_pos,
max_variables = 8, fill_by = 'last_variable',
col_vector_flow = c("mediumseagreen", "darkorange"))
library(gt)
BASE_transformado2 %>%
gt() %>%
tab_header(title = "Conteo trayectos") %>%
cols_label_with(fn = toupper)
Conteo trayectos | |||||||
TRAT_COMPLETO | RETIRO | RTA_1LIENA | SEG_ONCO_CLINICA | LINEA_TRAT_2 | LINEA_TRAT_3 | FALLECIMIENTO | FREQ |
---|---|---|---|---|---|---|---|
+compl | -cont.m | -rta_trat | -seg_onco | No | No | -fall | 7 |
+compl | -cont.m | -rta_trat | -seg_onco | No | No | +fall | 1 |
+compl | -cont.m | -rta_trat | -seg_onco | Si | No | -fall | 1 |
+compl | -cont.m | -rta_trat | -seg_onco | Si | No | +fall | 2 |
+compl | -cont.m | -rta_trat | +seg_onco | No | No | -fall | 5 |
+compl | -cont.m | -rta_trat | +seg_onco | No | No | +fall | 1 |
+compl | -cont.m | -rta_trat | +seg_onco | Si | No | -fall | 4 |
+compl | -cont.m | -rta_trat | +seg_onco | Si | No | +fall | 4 |
+compl | -cont.m | -rta_trat | +seg_onco | Si | Si | -fall | 2 |
+compl | -cont.m | -rta_trat | +seg_onco | Si | Si | +fall | 1 |
+compl | -cont.m | +rta_trat | -seg_onco | No | No | -fall | 158 |
+compl | -cont.m | +rta_trat | -seg_onco | No | No | +fall | 5 |
+compl | -cont.m | +rta_trat | -seg_onco | Si | No | -fall | 18 |
+compl | -cont.m | +rta_trat | -seg_onco | Si | No | +fall | 21 |
+compl | -cont.m | +rta_trat | -seg_onco | Si | Si | +fall | 1 |
+compl | -cont.m | +rta_trat | +seg_onco | No | No | -fall | 127 |
+compl | -cont.m | +rta_trat | +seg_onco | No | No | +fall | 11 |
+compl | -cont.m | +rta_trat | +seg_onco | Si | No | -fall | 5 |
+compl | -cont.m | +rta_trat | +seg_onco | Si | No | +fall | 1 |
+compl | -cont.m | +rta_trat | +seg_onco | Si | Si | -fall | 4 |
+compl | -cont.m | +rta_trat | +seg_onco | Si | Si | +fall | 1 |
-compl | +cont.m | -rta_trat | -seg_onco | No | No | -fall | 3 |
-compl | +cont.m | -rta_trat | -seg_onco | No | No | +fall | 1 |
-compl | +cont.m | -rta_trat | -seg_onco | Si | No | +fall | 1 |
-compl | +cont.m | -rta_trat | +seg_onco | Si | No | -fall | 4 |
-compl | +cont.m | -rta_trat | +seg_onco | Si | No | +fall | 1 |
-compl | +cont.m | +rta_trat | -seg_onco | No | No | -fall | 5 |
-compl | +cont.m | +rta_trat | -seg_onco | No | No | +fall | 1 |
-compl | +cont.m | +rta_trat | +seg_onco | No | No | -fall | 13 |
-compl | +cont.m | +rta_trat | +seg_onco | Si | No | -fall | 4 |
-compl | +cont.m | +rta_trat | +seg_onco | Si | No | +fall | 1 |
-compl | -cont.m | -rta_trat | -seg_onco | No | No | -fall | 5 |
-compl | -cont.m | -rta_trat | -seg_onco | No | No | +fall | 8 |
-compl | -cont.m | -rta_trat | -seg_onco | Si | No | -fall | 1 |
-compl | -cont.m | -rta_trat | -seg_onco | Si | No | +fall | 1 |
-compl | -cont.m | -rta_trat | -seg_onco | Si | Si | +fall | 1 |
-compl | -cont.m | -rta_trat | +seg_onco | No | No | -fall | 3 |
-compl | -cont.m | -rta_trat | +seg_onco | No | No | +fall | 1 |
-compl | -cont.m | -rta_trat | +seg_onco | Si | No | -fall | 3 |
-compl | -cont.m | -rta_trat | +seg_onco | Si | No | +fall | 2 |
-compl | -cont.m | +rta_trat | -seg_onco | No | No | -fall | 17 |
-compl | -cont.m | +rta_trat | -seg_onco | No | No | +fall | 3 |
-compl | -cont.m | +rta_trat | -seg_onco | Si | No | -fall | 5 |
-compl | -cont.m | +rta_trat | -seg_onco | Si | No | +fall | 17 |
-compl | -cont.m | +rta_trat | -seg_onco | Si | Si | -fall | 1 |
-compl | -cont.m | +rta_trat | -seg_onco | Si | Si | +fall | 1 |
-compl | -cont.m | +rta_trat | +seg_onco | No | No | -fall | 10 |
-compl | -cont.m | +rta_trat | +seg_onco | No | No | +fall | 1 |
write.xlsx(BASE_transformado2, "SANKEY2.xlsx", rowNames = TRUE)
#modelo de asociacion
BASE$fall_reg <- ifelse(BASE$fall == "+fall", 1, 0)
BASE$`Subtipo histológico` <- as.character(BASE$`Subtipo histológico`)
BASE$`Subtipo histológico`[!(BASE$`Subtipo histológico` %in% c("Adenocarcinoma", "Carcinoma escamocelular"))] <- "Otro"
BASE$`Subtipo histológico` <- factor(BASE$`Subtipo histológico`)
#m1 <- glm (fall_reg ~ AFILIACION + EDUCACION + Procedencia + GRUPO_ET+ `Estado civil`+ EST_clin_FIGO + TABAQUISMO + Citologia + `Historia de lesiones premalignas` + `Biopsia exocervical o endocervical` + `Ningun procedimiento cervix previo` + + charls_cat + ingreso + `Subtipo histológico` + `TC ABDOMEN` + `TC PELVIS` + `RAYOS X TORAX` + `Ultrasonido transvaginal` + `Tamaño tumoral clínico` + ECOG + `Quimio-radiación concomitante` + Cirugía + `Radiación adyuvante` + `Prescripcion braquiterapia` + linea_2 + linea_3 + rta1 + trat_complete2 + M_rad0 + dif_dx_primtrat + `Ningun cuidado de soporte` + `Frecuencia de seguimiento por Ginecología Oncológica: Número de visitas en el Primer Año` + braqu + quimio, family = "binomial", data= BASE)
#summary(m1)
m2 <- glm (fall_reg ~ charls_cat + ECOG + linea_2 + braqu, family = "binomial", data= BASE)
summary(m2)
##
## Call:
## glm(formula = fall_reg ~ charls_cat + ECOG + linea_2 + braqu,
## family = "binomial", data = BASE)
##
## Coefficients:
## Estimate Std. Error z value Pr(>|z|)
## (Intercept) -1.6327 0.4783 -3.414 0.000640 ***
## charls_cat3-4 -0.7461 0.3344 -2.231 0.025660 *
## charls_cat>=5 -0.5011 0.3718 -1.348 0.177811
## ECOGECOG1 0.7204 0.3641 1.978 0.047883 *
## ECOGECOG2 1.4418 0.4483 3.216 0.001299 **
## ECOGECOG3 2.8195 1.2355 2.282 0.022485 *
## linea_2Si 2.2758 0.2885 7.890 3.03e-15 ***
## braqu+braq -1.2263 0.3590 -3.416 0.000636 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## (Dispersion parameter for binomial family taken to be 1)
##
## Null deviance: 460.56 on 487 degrees of freedom
## Residual deviance: 329.98 on 480 degrees of freedom
## (6 observations deleted due to missingness)
## AIC: 345.98
##
## Number of Fisher Scoring iterations: 5
library(sjPlot)
tab_model(m2, transform = "exp")
fall_reg | |||
---|---|---|---|
Predictors | Odds Ratios | CI | p |
(Intercept) | 0.20 | 0.07 – 0.49 | 0.001 |
charls_cat3-4 | 0.47 | 0.24 – 0.90 | 0.026 |
charls cat [>=5] | 0.61 | 0.29 – 1.24 | 0.178 |
ECOG [ECOG1] | 2.06 | 1.03 – 4.31 | 0.048 |
ECOG [ECOG2] | 4.23 | 1.77 – 10.34 | 0.001 |
ECOG [ECOG3] | 16.77 | 1.12 – 189.37 | 0.022 |
linea 2 [Si] | 9.74 | 5.58 – 17.33 | <0.001 |
braqu [+braq] | 0.29 | 0.14 – 0.59 | 0.001 |
Observations | 488 | ||
R2 Tjur | 0.300 |
#install.packages("sjPlot")
library(sjPlot)
#install.packages("sjmisc")
library(sjmisc)
#install.packages("sjlabelled")
library(sjlabelled)
library(gtsummary)
tbl_regression(m2, exponentiate = TRUE, add_estimate_to_reference_rows=TRUE) %>% add_global_p()
Characteristic | OR | 95% CI | p-value |
---|---|---|---|
charls_cat | 0.067 | ||
<=2 | 1.00 | — | |
3-4 | 0.47 | 0.24, 0.90 | |
>=5 | 0.61 | 0.29, 1.24 | |
ECOG | 0.004 | ||
ECOG0 | 1.00 | — | |
ECOG1 | 2.06 | 1.03, 4.31 | |
ECOG2 | 4.23 | 1.77, 10.3 | |
ECOG3 | 16.8 | 1.12, 189 | |
linea_2 | <0.001 | ||
No | 1.00 | — | |
Si | 9.74 | 5.58, 17.3 | |
braqu | <0.001 | ||
-braq | 1.00 | — | |
+braq | 0.29 | 0.14, 0.59 | |
Abbreviations: CI = Confidence Interval, OR = Odds Ratio |
library(ResourceSelection)
hoslem.test(m2$y, fitted(m2), g=10)
##
## Hosmer and Lemeshow goodness of fit (GOF) test
##
## data: m2$y, fitted(m2)
## X-squared = 12.31, df = 6, p-value = 0.0554
El modelo ajusta bien a los datos
library(performance)
check_model(m2)
Se incluyen las variables de tiempo a analizar
Se usan dos bases de datos: Eliminado NA (n = 415) e imputando datos ( n = 494)
PROFILES <- BASE %>% select(ID_merge, Procedencia, dif_dx_primtrat, M_quim0, M_quim, M_rad0, M_rad, M_braq0, M_braq, dif_quim_braq)
colnames(PROFILES)[colnames(PROFILES) == "M_quim"] <- "Inicio - fin quim"
colnames(PROFILES)[colnames(PROFILES) == "M_quim0"] <- "Pres - Inicio quim"
colnames(PROFILES)[colnames(PROFILES) == "M_rad0"] <- "Pres - Inicio rad"
colnames(PROFILES)[colnames(PROFILES) == "M_rad"] <- "Inicio - Fin rad"
colnames(PROFILES)[colnames(PROFILES) == "M_braq0"] <- "Pres - Inicio Braq"
colnames(PROFILES)[colnames(PROFILES) == "M_braq"] <- "Inicio - Fin Braq"
colnames(PROFILES)[colnames(PROFILES) == "dif_dx_primtrat"] <- "Dx - Trat"
colnames(PROFILES)[colnames(PROFILES) == "dif_quim_braq"] <- "Inicio quim - Fin braq"
PROFILES2 <- PROFILES %>%
filter(if_all(3:10, ~ !is.na(.)))
library(VIM)
PROFILESimp <- kNN(PROFILES,
variable = 3:10,
k = 5,
imp_var = FALSE)
library(mclust)
p1 <-mclustBIC(PROFILES2[,3:10]) # 6 perfiles
summary(p1)
## Best BIC values:
## VVV,6 VVV,5 VVV,7
## BIC -4457.057 -4517.25982 -4579.967
## BIC diff 0.000 -60.20266 -122.910
p1.1<-Mclust(PROFILES2[,3:10])
library(factoextra)
fviz_mclust_bic(p1.1)
p2 <-mclustBIC(PROFILESimp[,3:10]) # 6 perfiles
summary(p2)
## Best BIC values:
## VVI,9 VVI,8 VVI,7
## BIC -6531.775 -6582.41966 -6632.0291
## BIC diff 0.000 -50.64427 -100.2537
p2.1<-Mclust(PROFILESimp[,3:10])
fviz_mclust_bic(p2.1)
Se selecciona solucion con 6 componentes con la base imputada, no hay diferencia al imputar la base y no hacerlo.
model <- Mclust(PROFILESimp[,3:10], modelNames = "VVV", G = 6)
summary(model)
## ----------------------------------------------------
## Gaussian finite mixture model fitted by EM algorithm
## ----------------------------------------------------
##
## Mclust VVV (ellipsoidal, varying volume, shape, and orientation) model with 6
## components:
##
## log-likelihood n df BIC ICL
## -2728.713 494 269 -7125.909 -7167.027
##
## Clustering table:
## 1 2 3 4 5 6
## 125 111 27 101 57 73
#Graficando la solucion
library(tibble)
library(tidyr)
means <- data.frame(model$parameters$mean) %>%
rownames_to_column() %>%
rename(PROFILESimp = rowname) %>%
pivot_longer(cols = c(X1, X2, X3, X4, X5, X6), names_to = "Profile", values_to = "Mean") %>%
mutate(
Mean = round(Mean, 2),
# Estandarización Z (normalización usando media y desviación estándar)
Mean = (Mean - mean(Mean)) / sd(Mean)
)
means
## # A tibble: 48 × 3
## PROFILESimp Profile Mean
## <chr> <chr> <dbl>
## 1 Dx - Trat X1 2.78
## 2 Dx - Trat X2 0.523
## 3 Dx - Trat X3 2.50
## 4 Dx - Trat X4 0.484
## 5 Dx - Trat X5 0.290
## 6 Dx - Trat X6 -0.230
## 7 Pres - Inicio quim X1 -0.323
## 8 Pres - Inicio quim X2 -0.773
## 9 Pres - Inicio quim X3 0.919
## 10 Pres - Inicio quim X4 -0.657
## # ℹ 38 more rows
p <- means %>%
mutate(Profile = recode(Profile,
X1 = "Prof 1",
X2 = "Prof 2",
X3 = "Prof 3",
X4 = "Prof 4",
X5 = "Prof 5",
X6 = "Prof 6",)) %>%
ggplot(aes(PROFILESimp, Mean, group = Profile, color = Profile)) +
geom_point(size = 2.25) +
geom_line(size = 1.25) +
scale_x_discrete(limits = c("Inicio - fin quim", "Pres - Inicio quim", "Pres - Inicio rad", "Inicio - Fin rad", "Pres - Inicio Braq", "Inicio - Fin Braq","Dx - Trat", "Inicio quim - Fin braq" )) +
labs(x = "Diferencia momentos", y = "Standardized means") +
theme_bw(base_size = 14) +
theme(
axis.text.x = element_text(angle = 90, hjust = 1, size = 10, face = "bold"), # Letras eje X más grandes y en negrita
axis.text.y = element_text(size = 14, face = "bold"), # Letras eje Y más grandes y en negrita
axis.title.x = element_text(size = 16, face = "bold"), # Aumentar tamaño de la etiqueta del eje X
axis.title.y = element_text(size = 16, face = "bold"), # Aumentar tamaño de la etiqueta del eje Y
legend.position = "top",
legend.text = element_text(size = 14, face = "bold"), # Aumentar el tamaño de la leyenda y ponerla en negrita
legend.title = element_text(size = 16, face = "bold") # Aumentar tamaño del título de la leyenda
)
p
#Se revisa por país, ya que puede ser dificil caracterizar los 6 grupos de pacientes.
Colombia
PROFILESimp_COL <- PROFILESimp %>% filter(Procedencia == "Colombia")
PROFILESimp_GUAT <- PROFILESimp %>% filter(Procedencia == "Guatemala")
p1_Col <-mclustBIC(PROFILESimp_COL[,3:10]) # 4 perfiles
summary(p1_Col)
## Best BIC values:
## VVV,4 VVV,5 VVV,6
## BIC -3285.687 -3475.3044 -3580.4457
## BIC diff 0.000 -189.6176 -294.7588
p1_Col_2<-Mclust(PROFILESimp_COL[,3:10])
fviz_mclust_bic(p1_Col_2)
Para Colombia hay 4 perfiles.
model_Col <- Mclust(PROFILESimp_COL[,3:10], modelNames = "VVV", G = 4)
summary(model_Col)
## ----------------------------------------------------
## Gaussian finite mixture model fitted by EM algorithm
## ----------------------------------------------------
##
## Mclust VVV (ellipsoidal, varying volume, shape, and orientation) model with 4
## components:
##
## log-likelihood n df BIC ICL
## -1147.252 254 179 -3285.687 -3289.871
##
## Clustering table:
## 1 2 3 4
## 79 82 12 81
means_Col <- data.frame(model_Col$parameters$mean) %>%
rownames_to_column() %>%
rename(PROFILESimp_Col = rowname) %>%
pivot_longer(cols = c(X1, X2, X3, X4), names_to = "Profile", values_to = "Mean") %>%
mutate(
Mean = round(Mean, 2),
# Estandarización Z (normalización usando media y desviación estándar)
Mean = (Mean - mean(Mean)) / sd(Mean)
)
p_Col <- means_Col %>%
mutate(Profile = recode(Profile,
X1 = "Prof 1",
X2 = "Prof 2",
X3 = "Prof 3",
X4 = "Prof 4")) %>%
ggplot(aes(PROFILESimp_Col, Mean, group = Profile, color = Profile)) +
geom_point(size = 2.25) +
geom_line(size = 1.25) +
scale_x_discrete(limits = c("Inicio - fin quim", "Pres - Inicio quim", "Pres - Inicio rad", "Inicio - Fin rad", "Pres - Inicio Braq", "Inicio - Fin Braq","Dx - Trat", "Inicio quim - Fin braq" )) +
labs(x = "Diferencia momentos", y = "Standardized means", title = "Perfiles Colombia") +
theme_bw(base_size = 14) +
theme(
axis.text.x = element_text(angle = 90, hjust = 1, size = 10, face = "bold"), # Letras eje X más grandes y en negrita
axis.text.y = element_text(size = 14, face = "bold"), # Letras eje Y más grandes y en negrita
axis.title.x = element_text(size = 16, face = "bold"), # Aumentar tamaño de la etiqueta del eje X
axis.title.y = element_text(size = 16, face = "bold"), # Aumentar tamaño de la etiqueta del eje Y
legend.position = "top",
legend.text = element_text(size = 14, face = "bold"), # Aumentar el tamaño de la leyenda y ponerla en negrita
legend.title = element_text(size = 16, face = "bold") # Aumentar tamaño del título de la leyenda
)
p_Col
p1_Guat <-mclustBIC(PROFILESimp_GUAT[,3:10]) # 7 perfiles en guatemala
summary(p1_Guat)
## Best BIC values:
## VVI,7 VVI,6 VVI,5
## BIC -2303.739 -2312.71795 -2341.24225
## BIC diff 0.000 -8.97875 -37.50305
p1_Guat_2<-Mclust(PROFILESimp_GUAT[,3:10])
fviz_mclust_bic(p1_Guat_2)
Se consolida el modelo
model_Guat <- Mclust(PROFILESimp_GUAT[,3:10], modelNames = "VVI", G = 7)
summary(model_Guat)
## ----------------------------------------------------
## Gaussian finite mixture model fitted by EM algorithm
## ----------------------------------------------------
##
## Mclust VVI (diagonal, varying volume and shape) model with 7 components:
##
## log-likelihood n df BIC ICL
## -828.5119 240 118 -2303.739 -2318.197
##
## Clustering table:
## 1 2 3 4 5 6 7
## 45 9 33 55 26 49 23
Graficando los perfiles
means_Guat <- data.frame(model_Guat$parameters$mean) %>%
rownames_to_column() %>%
rename(PROFILESimp_GUAT = rowname) %>%
pivot_longer(cols = c(X1, X2, X3, X4, X5, X6, X7), names_to = "Profile", values_to = "Mean") %>%
mutate(
Mean = round(Mean, 2),
# Estandarización Z (normalización usando media y desviación estándar)
Mean = (Mean - mean(Mean)) / sd(Mean)
)
p_Guat <- means_Guat %>%
mutate(Profile = recode(Profile,
X1 = "Prof 1",
X2 = "Prof 2",
X3 = "Prof 3",
X4 = "Prof 4",
X5 = "Prof 5",
X6 = "Prof 6",
X7 = "Prof 7")) %>%
ggplot(aes(PROFILESimp_GUAT, Mean, group = Profile, color = Profile)) +
geom_point(size = 2.25) +
geom_line(size = 1.25) +
scale_x_discrete(limits = c("Inicio - fin quim", "Pres - Inicio quim", "Pres - Inicio rad", "Inicio - Fin rad", "Pres - Inicio Braq", "Inicio - Fin Braq","Dx - Trat", "Inicio quim - Fin braq" )) +
labs(x = "Diferencia momentos", y = "Standardized means", title = "Perfiles Guatemala") +
theme_bw(base_size = 14) +
theme(
axis.text.x = element_text(angle = 90, hjust = 1, size = 10, face = "bold"), # Letras eje X más grandes y en negrita
axis.text.y = element_text(size = 14, face = "bold"), # Letras eje Y más grandes y en negrita
axis.title.x = element_text(size = 16, face = "bold"), # Aumentar tamaño de la etiqueta del eje X
axis.title.y = element_text(size = 16, face = "bold"), # Aumentar tamaño de la etiqueta del eje Y
legend.position = "top",
legend.text = element_text(size = 14, face = "bold"), # Aumentar el tamaño de la leyenda y ponerla en negrita
legend.title = element_text(size = 16, face = "bold") # Aumentar tamaño del título de la leyenda
)
p_Guat