Tabla 2
data = read_csv("C:\\Users\\gio73\\Documents\\Tesis\\Rmarkdown\\Framingham\\framingham_dataset.csv")
## New names:
## Rows: 11627 Columns: 40
## ── Column specification
## ──────────────────────────────────────────────────────── Delimiter: "," dbl
## (40): ...1, randid, sex, totchol, age, sysbp, diabp, cursmoke, cigpday, ...
## ℹ Use `spec()` to retrieve the full column specification for this data. ℹ
## Specify the column types or set `show_col_types = FALSE` to quiet this message.
## • `` -> `...1`
# Diccionario de nombres traducidos
diccionario <- c(
sex = "Sexo",
age = "Edad",
totchol = "Colesterol total (mg/dL)",
sysbp = "Presión sistólica (mm Hg)",
diabp = "Presión diastólica (mm Hg)",
bmi = "Índice de masa corporal (kg/m²)",
glucose = "Glucosa en ayunas (mg/dL)",
heartrte = "Frecuencia cardíaca (lpm)",
hdlc = "Colesterol HDL (mg/dL)",
ldlc = "Colesterol LDL (mg/dL)",
cigpday = "Cigarrillos por día"
)
# Generar vector completo con nombres nuevos
nombres_originales = names(data)
nombres_nuevos = sapply(nombres_originales, function(nombre) {
if (nombre %in% names(diccionario)) {
diccionario[[nombre]]
} else {
nombre # para conservar nombre original si no está en diccionario
}
})
# Asignar los nuevos nombres
names(data) = nombres_nuevos
# Eliminar columnas solo si existen
cols_quitar <- c("Unnamed: 0", "randid")
cols_quitar <- cols_quitar[cols_quitar %in% colnames(data)]
data <- data[, !(colnames(data) %in% cols_quitar)]
# Definir variables a analizar
vars_clinicas <- c("Colesterol total (mg/dL)", "Presión sistólica (mm Hg)",
"Presión diastólica (mm Hg)", "Índice de masa corporal (kg/m²)",
"Glucosa en ayunas (mg/dL)", "Frecuencia cardíaca (lpm)",
"Colesterol HDL (mg/dL)", "Colesterol LDL (mg/dL)",
"Cigarrillos por día")
var_exposicion <- "Colesterol total (mg/dL)"
# Variables para imputar
subset_vars <- unique(c(vars_clinicas, "Edad", "Sexo"))
# Fijar semilla para reproducibilidad
set.seed(123)
# Ejecutar MICE con 1 imputación (m = 1) para análisis simple
imp <- mice(data[, subset_vars], m = 1, method = "pmm", maxit = 10, seed = 123)
##
## iter imp variable
## 1 1 Colesterol total (mg/dL) Índice de masa corporal (kg/m²) Glucosa en ayunas (mg/dL) Frecuencia cardíaca (lpm) Colesterol HDL (mg/dL) Colesterol LDL (mg/dL) Cigarrillos por día
## 2 1 Colesterol total (mg/dL) Índice de masa corporal (kg/m²) Glucosa en ayunas (mg/dL) Frecuencia cardíaca (lpm) Colesterol HDL (mg/dL) Colesterol LDL (mg/dL) Cigarrillos por día
## 3 1 Colesterol total (mg/dL) Índice de masa corporal (kg/m²) Glucosa en ayunas (mg/dL) Frecuencia cardíaca (lpm) Colesterol HDL (mg/dL) Colesterol LDL (mg/dL) Cigarrillos por día
## 4 1 Colesterol total (mg/dL) Índice de masa corporal (kg/m²) Glucosa en ayunas (mg/dL) Frecuencia cardíaca (lpm) Colesterol HDL (mg/dL) Colesterol LDL (mg/dL) Cigarrillos por día
## 5 1 Colesterol total (mg/dL) Índice de masa corporal (kg/m²) Glucosa en ayunas (mg/dL) Frecuencia cardíaca (lpm) Colesterol HDL (mg/dL) Colesterol LDL (mg/dL) Cigarrillos por día
## 6 1 Colesterol total (mg/dL) Índice de masa corporal (kg/m²) Glucosa en ayunas (mg/dL) Frecuencia cardíaca (lpm) Colesterol HDL (mg/dL) Colesterol LDL (mg/dL) Cigarrillos por día
## 7 1 Colesterol total (mg/dL) Índice de masa corporal (kg/m²) Glucosa en ayunas (mg/dL) Frecuencia cardíaca (lpm) Colesterol HDL (mg/dL) Colesterol LDL (mg/dL) Cigarrillos por día
## 8 1 Colesterol total (mg/dL) Índice de masa corporal (kg/m²) Glucosa en ayunas (mg/dL) Frecuencia cardíaca (lpm) Colesterol HDL (mg/dL) Colesterol LDL (mg/dL) Cigarrillos por día
## 9 1 Colesterol total (mg/dL) Índice de masa corporal (kg/m²) Glucosa en ayunas (mg/dL) Frecuencia cardíaca (lpm) Colesterol HDL (mg/dL) Colesterol LDL (mg/dL) Cigarrillos por día
## 10 1 Colesterol total (mg/dL) Índice de masa corporal (kg/m²) Glucosa en ayunas (mg/dL) Frecuencia cardíaca (lpm) Colesterol HDL (mg/dL) Colesterol LDL (mg/dL) Cigarrillos por día
# Extraer datos imputados completos
data_imputada <- complete(imp, 1)
data_imputada$`Sexo` <- factor(data_imputada$`Sexo`, levels = c(1, 2), labels = c("Hombre", "Mujer"))
resultados <- list()
for (var in vars_clinicas) {
if (var != var_exposicion) {
df <- data_imputada %>% select(all_of(var), all_of(var_exposicion))
modelo <- lm(as.formula(paste0("`", var, "` ~ `", var_exposicion, "`")), data = df)
resumen <- tidy(modelo, conf.int = TRUE)
beta <- resumen[2, ]
resultados[[var]] <- tibble(
Variable = var,
Beta = round(beta$estimate, 3),
`IC 95% Inferior` = round(beta$conf.low, 3),
`IC 95% Superior` = round(beta$conf.high, 3),
`Valor p` = as.character(ifelse(beta$p.value < 0.0001, "<0.0001", round(beta$p.value, 4))),
n = nrow(df)
)
}
}
tabla2_mice <- bind_rows(resultados)
tabla2_mice %>%
kable(format = "html", caption = "Tabla 2 (MICE): usando Colesterol total (mg/dL)") %>%
kable_styling(full_width = FALSE, bootstrap_options = c("striped", "hover", "condensed"))
Tabla 2 (MICE): usando Colesterol total (mg/dL)
Variable
|
Beta
|
IC 95% Inferior
|
IC 95% Superior
|
Valor p
|
n
|
Presión sistólica (mm Hg)
|
0.075
|
0.066
|
0.084
|
<0.0001
|
11627
|
Presión diastólica (mm Hg)
|
0.033
|
0.029
|
0.038
|
<0.0001
|
11627
|
Índice de masa corporal (kg/m²)
|
0.007
|
0.006
|
0.009
|
<0.0001
|
11627
|
Glucosa en ayunas (mg/dL)
|
-0.002
|
-0.013
|
0.008
|
0.6497
|
11627
|
Frecuencia cardíaca (lpm)
|
0.022
|
0.017
|
0.027
|
<0.0001
|
11627
|
Colesterol HDL (mg/dL)
|
0.044
|
0.038
|
0.050
|
<0.0001
|
11627
|
Colesterol LDL (mg/dL)
|
0.896
|
0.886
|
0.906
|
<0.0001
|
11627
|
Cigarrillos por día
|
-0.009
|
-0.014
|
-0.004
|
2e-04
|
11627
|
Tabla 2 ajustada por edad y sexo
for (var in vars_clinicas) {
if (var != var_exposicion) {
df <- data_imputada %>% select(all_of(var), all_of(var_exposicion), Edad, Sexo)
modelo <- lm(as.formula(paste0("`", var, "` ~ `", var_exposicion, "` + Edad + Sexo")), data = df)
resumen <- tidy(modelo, conf.int = TRUE)
beta <- resumen[resumen$term == paste0("`", var_exposicion, "`"), ]
resultados_ajustados[[var]] <- tibble(
Variable = var,
Beta = round(beta$estimate, 3),
`IC 95% Inferior` = round(beta$conf.low, 3),
`IC 95% Superior` = round(beta$conf.high, 3),
`Valor p` = as.character(ifelse(beta$p.value < 0.0001, "<0.0001", round(beta$p.value, 4))),
n = nrow(df)
)
}
}
tabla2_mice_ajustada <- bind_rows(resultados_ajustados)
tabla2_mice_ajustada %>%
kable(format = "html", caption = "Tabla 2 Ajustada (MICE): usando Colesterol total (mg/dL)") %>%
kable_styling(full_width = FALSE, bootstrap_options = c("striped", "hover", "condensed"))
Tabla 2 Ajustada (MICE): usando Colesterol total (mg/dL)
Variable
|
Beta
|
IC 95% Inferior
|
IC 95% Superior
|
Valor p
|
n
|
Presión sistólica (mm Hg)
|
0.045
|
0.036
|
0.054
|
<0.0001
|
11627
|
Presión diastólica (mm Hg)
|
0.034
|
0.029
|
0.038
|
<0.0001
|
11627
|
Índice de masa corporal (kg/m²)
|
0.008
|
0.006
|
0.009
|
<0.0001
|
11627
|
Glucosa en ayunas (mg/dL)
|
-0.014
|
-0.025
|
-0.004
|
0.0063
|
11627
|
Frecuencia cardíaca (lpm)
|
0.018
|
0.013
|
0.023
|
<0.0001
|
11627
|
Colesterol HDL (mg/dL)
|
0.030
|
0.025
|
0.036
|
<0.0001
|
11627
|
Colesterol LDL (mg/dL)
|
0.913
|
0.903
|
0.924
|
<0.0001
|
11627
|
Cigarrillos por día
|
0.009
|
0.004
|
0.013
|
3e-04
|
11627
|