Etapa 1: Explicar en forma detallada el plan de análisis.
Se construirá un modelo de regresión lineal múltiple para analizar la relación entre la concentración de Proteína C Reactiva ultrasensible (PCR) y un conjunto de variables clínicas y sociodemográficas.
La variable dependiente será la PCR (mg/L).
Las variables independientes consideradas inicialmente fueron: género, edad, estado civil, nivel educativo, diabetes, hipertensión arterial, hipercolesterolemia, tabaquismo, índice de masa corporal (IMC) y horas semanales de actividad física.
La selección de variables se realizará por dos vías complementarias:
Método manual secuencial, incorporando una a una las covariables según orden decreciente de significancia estadística en el análisis bivariado. La retención de cada variable en el modelo se decidirá con base en tres criterios preespecificados: significancia estadística (p < 0.05), relevancia clínica o biológica, y rol como potencial variable confundidora (cambio ≥ 10% en el coeficiente B de otra variable ya incluida).
Algoritmos automáticos de selección de variables
(Forward, Backward y Stepwise),
utilizando como criterio la reducción del Akaike Information Criterion
(AIC), que es el criterio por defecto en la función step() de
R.
Posteriormente, se compararán los resultados obtenidos entre ambos métodos, evaluando la consistencia de las variables seleccionadas y el desempeño general de los modelos.
El IMC será analizado primero como variable continua y
luego como variable categórica, agrupado en bajo peso, peso normal,
sobrepeso y obesidad.
Se trabajará con casos completos, eliminando observaciones con datos faltantes mediante la función na.omit().
La interpretación del modelo considerará únicamente asociaciones estadísticas, sin atribuir causalidad.
Etapa 2: Desarrollar los pasos de construcción del modelo, especificando en cada caso los criterios utilizados para decidir qué variables se incluyen. Presentar los outputs obtenidos de R que se consideren necesarios. NO incluir outputs sin explicación o comentarios.
Carga de librerías.
library(readxl)
## Warning: package 'readxl' was built under R version 4.4.2
library(dplyr)
## Warning: package 'dplyr' was built under R version 4.4.2
##
## 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(tidyverse)
## Warning: package 'tidyverse' was built under R version 4.4.3
## Warning: package 'tidyr' was built under R version 4.4.2
## ── Attaching core tidyverse packages ──────────────────────── tidyverse 2.0.0 ──
## ✔ forcats 1.0.0 ✔ readr 2.1.5
## ✔ ggplot2 3.5.1 ✔ stringr 1.5.1
## ✔ lubridate 1.9.3 ✔ tibble 3.2.1
## ✔ purrr 1.0.2 ✔ tidyr 1.3.1
## ── Conflicts ────────────────────────────────────────── tidyverse_conflicts() ──
## ✖ dplyr::filter() masks stats::filter()
## ✖ dplyr::lag() masks stats::lag()
## ℹ Use the conflicted package (<http://conflicted.r-lib.org/>) to force all conflicts to become errors
library(parameters)
## Warning: package 'parameters' was built under R version 4.4.3
library(car)
## Warning: package 'car' was built under R version 4.4.3
## Cargando paquete requerido: carData
## Warning: package 'carData' was built under R version 4.4.1
##
## Adjuntando el paquete: 'car'
##
## The following object is masked from 'package:purrr':
##
## some
##
## The following object is masked from 'package:dplyr':
##
## recode
library(lmtest)
## Warning: package 'lmtest' was built under R version 4.4.2
## Cargando paquete requerido: zoo
##
## Adjuntando el paquete: 'zoo'
##
## The following objects are masked from 'package:base':
##
## as.Date, as.Date.numeric
library(reshape2)
##
## Adjuntando el paquete: 'reshape2'
##
## The following object is masked from 'package:tidyr':
##
## smiths
library(tableone)
## Warning: package 'tableone' was built under R version 4.4.3
library(broom)
library(kableExtra)
## Warning: package 'kableExtra' was built under R version 4.4.2
##
## Adjuntando el paquete: 'kableExtra'
##
## The following object is masked from 'package:dplyr':
##
## group_rows
library(knitr)
## Warning: package 'knitr' was built under R version 4.4.2
Carga y preparación de datos.
data <- read_excel("C:/Users/Usuario/Desktop/iecs/año_2/regresión_lineal_múltiple/take_home/TH_basePCR.xlsx")
names(data) <- tolower(names(data))
data <- data %>% mutate(across(c("genero", "estciv", "educ", "dbt", "hta", "hipercol", "tabaq"), as.factor))
data <- data %>% mutate(imc_cat = as.factor(case_when(
imc < 18.5 ~ "bajo peso",
imc >= 18.5 & imc <25 ~ "peso normal",
imc >= 25 & imc <30 ~ "sobrepeso",
imc >= 30 ~ "obesidad"
)))
levels(data$imc_cat)
## [1] "bajo peso" "obesidad" "peso normal" "sobrepeso"
data$imc_cat <- relevel(data$imc_cat, ref = "peso normal")
levels(data$imc_cat)
## [1] "peso normal" "bajo peso" "obesidad" "sobrepeso"
data <- na.omit(data)
Se eliminan casos con datos faltantes para permitir la ejecución del modelo de selección de variables.
Construcción del modelo.
Modelo vacío.
vacio <- lm(pcr ~ 1, data = data)
Modelo completo: IMC como variable
continua.
completo_cont <- lm(pcr ~ genero + edad + estciv + educ + dbt + hta + hipercol + tabaq + imc + hs_af, data = data)
Modelo completo: IMC como variable
categórica.
completo_cat <- lm(pcr ~ genero + edad + estciv + educ + dbt + hta + hipercol + tabaq + imc_cat + hs_af, data = data)
Algoritmo Forward: IMC como variable
continua.
regforw_cont <- step(vacio, scope = list(lower=vacio, upper=completo_cont), direction= "forward"); summary(regforw_cont)
## Start: AIC=-123.39
## pcr ~ 1
##
## Df Sum of Sq RSS AIC
## + imc 1 15.7099 198.67 -145.59
## + hipercol 1 11.7534 202.63 -139.32
## + hta 1 10.5739 203.81 -137.47
## + genero 1 9.4171 204.96 -135.67
## + hs_af 1 8.4526 205.93 -134.18
## + tabaq 1 7.9114 206.47 -133.35
## + educ 1 7.7763 206.60 -133.14
## + dbt 1 3.8275 210.55 -127.12
## + estciv 1 1.6117 212.77 -123.79
## <none> 214.38 -123.39
## + edad 1 0.0001 214.38 -121.39
##
## Step: AIC=-145.59
## pcr ~ imc
##
## Df Sum of Sq RSS AIC
## + genero 1 10.3400 188.33 -160.59
## + educ 1 8.5619 190.11 -157.60
## + hipercol 1 8.3585 190.31 -157.26
## + hs_af 1 7.6785 190.99 -156.12
## + hta 1 7.0778 191.59 -155.12
## + tabaq 1 6.4443 192.22 -154.08
## + dbt 1 2.7397 195.93 -148.01
## + estciv 1 2.1470 196.52 -147.04
## <none> 198.67 -145.59
## + edad 1 0.0355 198.63 -143.65
##
## Step: AIC=-160.59
## pcr ~ imc + genero
##
## Df Sum of Sq RSS AIC
## + educ 1 8.2786 180.05 -172.88
## + hs_af 1 8.1436 180.19 -172.64
## + hipercol 1 8.0658 180.26 -172.51
## + hta 1 6.4576 181.87 -169.68
## + tabaq 1 5.1817 183.15 -167.46
## + dbt 1 2.0234 186.31 -162.02
## + estciv 1 1.6659 186.66 -161.41
## <none> 188.33 -160.59
## + edad 1 0.0000 188.33 -158.59
##
## Step: AIC=-172.88
## pcr ~ imc + genero + educ
##
## Df Sum of Sq RSS AIC
## + hs_af 1 6.5511 173.50 -182.67
## + hipercol 1 6.4586 173.59 -182.50
## + hta 1 6.4382 173.61 -182.46
## + tabaq 1 3.7049 176.35 -177.49
## + dbt 1 2.1686 177.88 -174.74
## + estciv 1 1.3121 178.74 -173.21
## <none> 180.05 -172.88
## + edad 1 0.1217 179.93 -171.10
##
## Step: AIC=-182.67
## pcr ~ imc + genero + educ + hs_af
##
## Df Sum of Sq RSS AIC
## + hta 1 4.9319 168.57 -189.84
## + hipercol 1 3.6645 169.84 -187.46
## + tabaq 1 3.5320 169.97 -187.21
## + dbt 1 1.8661 171.63 -184.11
## + estciv 1 1.7409 171.76 -183.88
## <none> 173.50 -182.67
## + edad 1 0.1766 173.32 -180.99
##
## Step: AIC=-189.84
## pcr ~ imc + genero + educ + hs_af + hta
##
## Df Sum of Sq RSS AIC
## + hipercol 1 2.96339 165.60 -193.48
## + tabaq 1 2.91032 165.66 -193.38
## + estciv 1 1.84715 166.72 -191.34
## <none> 168.57 -189.84
## + edad 1 0.55514 168.01 -188.89
## + dbt 1 0.29031 168.28 -188.39
##
## Step: AIC=-193.48
## pcr ~ imc + genero + educ + hs_af + hta + hipercol
##
## Df Sum of Sq RSS AIC
## + tabaq 1 2.67139 162.93 -196.65
## + estciv 1 2.38681 163.22 -196.09
## <none> 165.60 -193.48
## + edad 1 0.35828 165.25 -192.17
## + dbt 1 0.21187 165.39 -191.89
##
## Step: AIC=-196.65
## pcr ~ imc + genero + educ + hs_af + hta + hipercol + tabaq
##
## Df Sum of Sq RSS AIC
## + estciv 1 1.96108 160.97 -198.50
## <none> 162.93 -196.65
## + edad 1 0.36423 162.57 -195.36
## + dbt 1 0.13853 162.79 -194.92
##
## Step: AIC=-198.5
## pcr ~ imc + genero + educ + hs_af + hta + hipercol + tabaq +
## estciv
##
## Df Sum of Sq RSS AIC
## <none> 160.97 -198.50
## + edad 1 0.37632 160.60 -197.25
## + dbt 1 0.26286 160.71 -197.02
##
## Call:
## lm(formula = pcr ~ imc + genero + educ + hs_af + hta + hipercol +
## tabaq + estciv, data = data)
##
## Residuals:
## Min 1Q Median 3Q Max
## -2.26579 -0.46166 0.01653 0.47312 2.33792
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 1.46508 0.22735 6.444 4.46e-10 ***
## imc 0.03402 0.00729 4.666 4.58e-06 ***
## genero1 0.33231 0.08268 4.019 7.34e-05 ***
## educ2 -0.24921 0.08325 -2.994 0.00298 **
## hs_af -0.04043 0.01647 -2.455 0.01466 *
## hta1 0.23635 0.08760 2.698 0.00736 **
## hipercol1 -0.21466 0.08649 -2.482 0.01360 *
## tabaq1 0.21083 0.10154 2.076 0.03870 *
## estciv1 -0.16160 0.08329 -1.940 0.05326 .
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 0.7218 on 309 degrees of freedom
## Multiple R-squared: 0.2491, Adjusted R-squared: 0.2297
## F-statistic: 12.82 on 8 and 309 DF, p-value: 6.241e-16
modelo_regforw_cont <- lm(pcr ~ genero + educ + hta + hipercol + imc + tabaq + estciv + hs_af, data = data)
options(scipen = 999)
summary(modelo_regforw_cont)
##
## Call:
## lm(formula = pcr ~ genero + educ + hta + hipercol + imc + tabaq +
## estciv + hs_af, data = data)
##
## Residuals:
## Min 1Q Median 3Q Max
## -2.26579 -0.46166 0.01653 0.47312 2.33792
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 1.46508 0.22735 6.444 0.000000000446 ***
## genero1 0.33231 0.08268 4.019 0.000073420545 ***
## educ2 -0.24921 0.08325 -2.994 0.00298 **
## hta1 0.23635 0.08760 2.698 0.00736 **
## hipercol1 -0.21466 0.08649 -2.482 0.01360 *
## imc 0.03402 0.00729 4.666 0.000004577589 ***
## tabaq1 0.21083 0.10154 2.076 0.03870 *
## estciv1 -0.16160 0.08329 -1.940 0.05326 .
## hs_af -0.04043 0.01647 -2.455 0.01466 *
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 0.7218 on 309 degrees of freedom
## Multiple R-squared: 0.2491, Adjusted R-squared: 0.2297
## F-statistic: 12.82 on 8 and 309 DF, p-value: 0.0000000000000006241
model_parameters(modelo_regforw_cont, ci = 0.95, digits = 6)
## Parameter | Coefficient | SE | 95% CI | t(309) | p
## -----------------------------------------------------------------------------------
## (Intercept) | 1.465081 | 0.227352 | [ 1.017726, 1.912435] | 6.444098 | < .001
## genero [1] | 0.332306 | 0.082679 | [ 0.169620, 0.494992] | 4.019208 | < .001
## educ [2] | -0.249214 | 0.083250 | [-0.413023, -0.085405] | -2.993552 | 0.003
## hta [1] | 0.236347 | 0.087602 | [ 0.063975, 0.408719] | 2.697970 | 0.007
## hipercol [1] | -0.214658 | 0.086487 | [-0.384835, -0.044480] | -2.481971 | 0.014
## imc | 0.034016 | 0.007290 | [ 0.019672, 0.048360] | 4.666161 | < .001
## tabaq [1] | 0.210830 | 0.101545 | [ 0.011024, 0.410636] | 2.076230 | 0.039
## estciv [1] | -0.161605 | 0.083292 | [-0.325495, 0.002286] | -1.940221 | 0.053
## hs af | -0.040426 | 0.016470 | [-0.072834, -0.008019] | -2.454561 | 0.015
##
## Uncertainty intervals (equal-tailed) and p-values (two-tailed) computed
## using a Wald t-distribution approximation.
Interpretación:
Se construyó un modelo de regresión lineal múltiple, seleccionando
las variables mediante el algoritmo de selección Forward.
La variable dependiente (Y) fue la concentración de Proteína C Reactiva
ultrasensible (PCR), medida en mg/L. Las variables independientes
obtenidas mediante el proceso de construcción automática fueron seis
variables categóricas (género, nivel educativo, hipertensión arterial,
hipercolesterolemia, tabaquismo, estado civil), dos variables continuas
(índice de masa corporal, horas semana de actividad física) y 2
variables fueron eliminadas (diabetes, edad). El valor esperado de PCR
ultrasensible es 1.47 mg/L en pacientes mujeres (categoría de referencia
de género), con nivel educativo hasta secundario completo, sin
diagnóstico de hipertensión arterial ni de hipercolesterolemia así como
no fumadora, soltera, viuda, separada y/o divorciada. Por cada unidad de
aumento en el índice de masa corporal (kg/m2), se espera un cambio
promedio de 0.03 mg/L en el nivel de PCR, manteniendo constantes el
resto de las variables del modelo. Por cada unidad de aumento en la
actividad física semanal (en horas), se espera un cambio promedio de
-0.04 mg/L en el nivel de PCR, manteniendo constantes el resto de las
variables del modelo. En comparación, el valor esperado de PCR
ultrasensible fue 0.33 mg/L mayor en hombres, 0.25 mg/L menor en
pacientes con educación secundaria completa o superior, 0.24 mg/L mayor
en pacientes con hipertensión arterial, 0.21 mg/L menor en pacientes con
hipercolesterolemia. Además, por cada unidad de incremento en el índice
de masa corporal (kg/m²), se observó un aumento promedio de 0.03 mg/L en
los niveles de PCR, manteniendo constantes el resto de las variables del
modelo. También, en casados o en pareja, se espera un cambio promedio de
-0.016 mg/L en el nivel de PCR y por cada unidad de aumento en la
actividad física semanal (en horas), se espera un cambio promedio de
-0.04 mg/L en el nivel de PCR, manteniendo constantes el resto de las
variables del modelo.
Algoritmo Forward: IMC como variable
categorica.
regforw_cat <- step(vacio, scope = list(lower=vacio, upper=completo_cat), direction= "forward"); summary(regforw_cat)
## Start: AIC=-123.39
## pcr ~ 1
##
## Df Sum of Sq RSS AIC
## + imc_cat 3 20.2536 194.13 -148.95
## + hipercol 1 11.7534 202.63 -139.32
## + hta 1 10.5739 203.81 -137.47
## + genero 1 9.4171 204.96 -135.67
## + hs_af 1 8.4526 205.93 -134.18
## + tabaq 1 7.9114 206.47 -133.35
## + educ 1 7.7763 206.60 -133.14
## + dbt 1 3.8275 210.55 -127.12
## + estciv 1 1.6117 212.77 -123.79
## <none> 214.38 -123.39
## + edad 1 0.0001 214.38 -121.39
##
## Step: AIC=-148.95
## pcr ~ imc_cat
##
## Df Sum of Sq RSS AIC
## + genero 1 9.6613 184.47 -163.18
## + hipercol 1 9.0299 185.10 -162.09
## + educ 1 8.4824 185.64 -161.16
## + hs_af 1 7.7886 186.34 -159.97
## + tabaq 1 6.6036 187.52 -157.95
## + hta 1 6.2727 187.85 -157.39
## + dbt 1 2.5313 191.59 -151.12
## + estciv 1 2.2683 191.86 -150.69
## <none> 194.13 -148.95
## + edad 1 0.0123 194.11 -146.97
##
## Step: AIC=-163.18
## pcr ~ imc_cat + genero
##
## Df Sum of Sq RSS AIC
## + hipercol 1 8.7380 175.73 -176.61
## + hs_af 1 8.3067 176.16 -175.83
## + educ 1 8.2137 176.25 -175.66
## + hta 1 5.7369 178.73 -171.23
## + tabaq 1 5.3938 179.07 -170.62
## + dbt 1 1.8596 182.60 -164.40
## + estciv 1 1.7941 182.67 -164.29
## <none> 184.47 -163.18
## + edad 1 0.0044 184.46 -161.19
##
## Step: AIC=-176.61
## pcr ~ imc_cat + genero + hipercol
##
## Df Sum of Sq RSS AIC
## + educ 1 6.5589 169.17 -186.71
## + tabaq 1 4.4837 171.24 -182.83
## + hs_af 1 4.4810 171.25 -182.83
## + hta 1 4.1781 171.55 -182.26
## + estciv 1 2.8031 172.92 -179.73
## + dbt 1 1.2644 174.46 -176.91
## <none> 175.73 -176.61
## + edad 1 0.0057 175.72 -174.62
##
## Step: AIC=-186.71
## pcr ~ imc_cat + genero + hipercol + educ
##
## Df Sum of Sq RSS AIC
## + hta 1 4.2100 164.96 -192.72
## + hs_af 1 3.6807 165.49 -191.70
## + tabaq 1 3.2617 165.91 -190.90
## + estciv 1 2.3070 166.86 -189.08
## + dbt 1 1.3783 167.79 -187.31
## <none> 169.17 -186.71
## + edad 1 0.0514 169.12 -184.81
##
## Step: AIC=-192.72
## pcr ~ imc_cat + genero + hipercol + educ + hta
##
## Df Sum of Sq RSS AIC
## + hs_af 1 2.94203 162.02 -196.45
## + tabaq 1 2.77418 162.18 -196.12
## + estciv 1 2.35643 162.60 -195.30
## <none> 164.96 -192.72
## + edad 1 0.32891 164.63 -191.36
## + dbt 1 0.17907 164.78 -191.07
##
## Step: AIC=-196.45
## pcr ~ imc_cat + genero + hipercol + educ + hta + hs_af
##
## Df Sum of Sq RSS AIC
## + tabaq 1 2.80799 159.21 -200.01
## + estciv 1 2.56260 159.45 -199.52
## <none> 162.02 -196.45
## + edad 1 0.38758 161.63 -195.21
## + dbt 1 0.20840 161.81 -194.85
##
## Step: AIC=-200.01
## pcr ~ imc_cat + genero + hipercol + educ + hta + hs_af + tabaq
##
## Df Sum of Sq RSS AIC
## + estciv 1 2.10697 157.10 -202.24
## <none> 159.21 -200.01
## + edad 1 0.40837 158.80 -198.82
## + dbt 1 0.13643 159.07 -198.28
##
## Step: AIC=-202.24
## pcr ~ imc_cat + genero + hipercol + educ + hta + hs_af + tabaq +
## estciv
##
## Df Sum of Sq RSS AIC
## <none> 157.10 -202.24
## + edad 1 0.41510 156.69 -201.08
## + dbt 1 0.26279 156.84 -200.78
##
## Call:
## lm(formula = pcr ~ imc_cat + genero + hipercol + educ + hta +
## hs_af + tabaq + estciv, data = data)
##
## Residuals:
## Min 1Q Median 3Q Max
## -2.21953 -0.45286 0.03096 0.46129 2.26692
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 2.14396 0.12778 16.778 < 0.0000000000000002 ***
## imc_catbajo peso -0.05592 0.25394 -0.220 0.825856
## imc_catobesidad 0.62861 0.11977 5.249 0.000000286 ***
## imc_catsobrepeso 0.28968 0.09826 2.948 0.003442 **
## genero1 0.32202 0.08197 3.928 0.000106 ***
## hipercol1 -0.22760 0.08584 -2.651 0.008431 **
## educ2 -0.24426 0.08292 -2.946 0.003469 **
## hta1 0.21487 0.08757 2.454 0.014697 *
## hs_af -0.04073 0.01639 -2.485 0.013470 *
## tabaq1 0.21621 0.10084 2.144 0.032815 *
## estciv1 -0.16767 0.08263 -2.029 0.043308 *
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 0.7154 on 307 degrees of freedom
## Multiple R-squared: 0.2672, Adjusted R-squared: 0.2433
## F-statistic: 11.19 on 10 and 307 DF, p-value: 0.0000000000000002556
modelo_regforw_cat <- lm(pcr ~ genero + educ + hta + hipercol + imc_cat + tabaq + hs_af + estciv, data = data)
summary(modelo_regforw_cat)
##
## Call:
## lm(formula = pcr ~ genero + educ + hta + hipercol + imc_cat +
## tabaq + hs_af + estciv, data = data)
##
## Residuals:
## Min 1Q Median 3Q Max
## -2.21953 -0.45286 0.03096 0.46129 2.26692
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 2.14396 0.12778 16.778 < 0.0000000000000002 ***
## genero1 0.32202 0.08197 3.928 0.000106 ***
## educ2 -0.24426 0.08292 -2.946 0.003469 **
## hta1 0.21487 0.08757 2.454 0.014697 *
## hipercol1 -0.22760 0.08584 -2.651 0.008431 **
## imc_catbajo peso -0.05592 0.25394 -0.220 0.825856
## imc_catobesidad 0.62861 0.11977 5.249 0.000000286 ***
## imc_catsobrepeso 0.28968 0.09826 2.948 0.003442 **
## tabaq1 0.21621 0.10084 2.144 0.032815 *
## hs_af -0.04073 0.01639 -2.485 0.013470 *
## estciv1 -0.16767 0.08263 -2.029 0.043308 *
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 0.7154 on 307 degrees of freedom
## Multiple R-squared: 0.2672, Adjusted R-squared: 0.2433
## F-statistic: 11.19 on 10 and 307 DF, p-value: 0.0000000000000002556
model_parameters(modelo_regforw_cat, ci = 0.95, digits = 6)
## Parameter | Coefficient | SE | 95% CI
## ---------------------------------------------------------------------
## (Intercept) | 2.143961 | 0.127782 | [ 1.892521, 2.395401]
## genero [1] | 0.322016 | 0.081973 | [ 0.160716, 0.483315]
## educ [2] | -0.244261 | 0.082921 | [-0.407426, -0.081095]
## hta [1] | 0.214872 | 0.087572 | [ 0.042554, 0.387190]
## hipercol [1] | -0.227595 | 0.085839 | [-0.396502, -0.058688]
## imc cat [bajo peso] | -0.055919 | 0.253939 | [-0.555601, 0.443762]
## imc cat [obesidad] | 0.628611 | 0.119765 | [ 0.392947, 0.864276]
## imc cat [sobrepeso] | 0.289681 | 0.098258 | [ 0.096337, 0.483024]
## tabaq [1] | 0.216213 | 0.100844 | [ 0.017780, 0.414646]
## hs af | -0.040727 | 0.016386 | [-0.072971, -0.008484]
## estciv [1] | -0.167667 | 0.082630 | [-0.330260, -0.005074]
##
## Parameter | t(307) | p
## ----------------------------------------
## (Intercept) | 16.778249 | < .001
## genero [1] | 3.928332 | < .001
## educ [2] | -2.945694 | 0.003
## hta [1] | 2.453646 | 0.015
## hipercol [1] | -2.651424 | 0.008
## imc cat [bajo peso] | -0.220208 | 0.826
## imc cat [obesidad] | 5.248691 | < .001
## imc cat [sobrepeso] | 2.948179 | 0.003
## tabaq [1] | 2.144038 | 0.033
## hs af | -2.485465 | 0.013
## estciv [1] | -2.029128 | 0.043
##
## Uncertainty intervals (equal-tailed) and p-values (two-tailed) computed
## using a Wald t-distribution approximation.
Interpretación:
Se construyó un modelo de regresión lineal múltiple, seleccionando las variables mediante el algoritmo de selección Forward. La variable dependiente (Y) fue la concentración de Proteína C Reactiva ultrasensible (PCR), medida en mg/L. Las variables independientes obtenidas mediante el proceso de construcción automática fueron siete variables categóricas (género, nivel educativo, hipertensión arterial, hipercolesterolemia, índice de masa corporal, tabaquismo, estado civil), una variable continua (horas semana de actividad física) y 2 variables fueron eliminadas (diabetes, edad). El valor esperado de PCR ultrasensible es 2.14 mg/L en pacientes mujeres (categoría de referencia de género), con nivel educativo hasta secundario completo, sin diagnóstico de hipertensión arterial ni de hipercolesterolemia, y peso normal (categoría de referencia de IMC). Los cambios en los niveles de PCR para las demás categorías de IMC se interpretan en relación a este grupo de referencia. En contraposición a la categoría de referencia, el valor esperado de PCR ultrasensible fue 0.32 mg/L mayor en hombres, 0.22 mg/L menor en pacientes con educación secundaria completa o superior, 0.21 mg/L mayor en pacientes con hipertensión arterial, y 0.23 mg/L menor en pacientes con hipercolesterolemia. Además, en pacientes con sobrepeso, la PCR promedio esperada es 0.29 mg/L más que en pacientes con peso normal; en pacientes con obesidad, 0.63 mg/L más que en pacientes con peso normal y en pacientes con bajo peso, la PCR es 0.06 mg/L menor. Por último, en pacientes soltero, viudo, separado y/o divorciado, la PCR es 0.17 mg/L menor.
Algoritmo Backward: IMC como
variable continua.
regback_cont <- step(completo_cont, direction = "backward"); summary(regback_cont)
## Start: AIC=-195.81
## pcr ~ genero + edad + estciv + educ + dbt + hta + hipercol +
## tabaq + imc + hs_af
##
## Df Sum of Sq RSS AIC
## - dbt 1 0.2864 160.60 -197.25
## - edad 1 0.3999 160.71 -197.02
## <none> 160.31 -195.81
## - estciv 1 2.1046 162.41 -193.66
## - tabaq 1 2.1407 162.45 -193.59
## - hta 1 2.7799 163.09 -192.35
## - hipercol 1 2.9318 163.24 -192.05
## - hs_af 1 3.2534 163.56 -191.42
## - educ 1 4.9930 165.30 -188.06
## - genero 1 8.3564 168.67 -181.65
## - imc 1 11.0498 171.36 -176.62
##
## Step: AIC=-197.24
## pcr ~ genero + edad + estciv + educ + hta + hipercol + tabaq +
## imc + hs_af
##
## Df Sum of Sq RSS AIC
## - edad 1 0.3763 160.97 -198.50
## <none> 160.60 -197.25
## - estciv 1 1.9732 162.57 -195.36
## - tabaq 1 2.2500 162.85 -194.82
## - hipercol 1 3.0019 163.60 -193.36
## - hs_af 1 3.2045 163.80 -192.96
## - hta 1 4.0692 164.66 -191.29
## - educ 1 4.9311 165.53 -189.63
## - genero 1 8.5810 169.18 -182.69
## - imc 1 11.0768 171.67 -178.03
##
## Step: AIC=-198.5
## pcr ~ genero + estciv + educ + hta + hipercol + tabaq + imc +
## hs_af
##
## Df Sum of Sq RSS AIC
## <none> 160.97 -198.50
## - estciv 1 1.9611 162.93 -196.65
## - tabaq 1 2.2457 163.22 -196.09
## - hs_af 1 3.1386 164.11 -194.36
## - hipercol 1 3.2091 164.18 -194.22
## - hta 1 3.7920 164.76 -193.10
## - educ 1 4.6684 165.64 -191.41
## - genero 1 8.4154 169.39 -184.30
## - imc 1 11.3426 172.31 -178.85
##
## Call:
## lm(formula = pcr ~ genero + estciv + educ + hta + hipercol +
## tabaq + imc + hs_af, data = data)
##
## Residuals:
## Min 1Q Median 3Q Max
## -2.26579 -0.46166 0.01653 0.47312 2.33792
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 1.46508 0.22735 6.444 0.000000000446 ***
## genero1 0.33231 0.08268 4.019 0.000073420545 ***
## estciv1 -0.16160 0.08329 -1.940 0.05326 .
## educ2 -0.24921 0.08325 -2.994 0.00298 **
## hta1 0.23635 0.08760 2.698 0.00736 **
## hipercol1 -0.21466 0.08649 -2.482 0.01360 *
## tabaq1 0.21083 0.10154 2.076 0.03870 *
## imc 0.03402 0.00729 4.666 0.000004577589 ***
## hs_af -0.04043 0.01647 -2.455 0.01466 *
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 0.7218 on 309 degrees of freedom
## Multiple R-squared: 0.2491, Adjusted R-squared: 0.2297
## F-statistic: 12.82 on 8 and 309 DF, p-value: 0.0000000000000006241
modelo_regback_cont <- lm(pcr ~ genero + educ + hta + hipercol + imc + tabaq + estciv + hs_af, data = data)
summary(modelo_regback_cont)
##
## Call:
## lm(formula = pcr ~ genero + educ + hta + hipercol + imc + tabaq +
## estciv + hs_af, data = data)
##
## Residuals:
## Min 1Q Median 3Q Max
## -2.26579 -0.46166 0.01653 0.47312 2.33792
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 1.46508 0.22735 6.444 0.000000000446 ***
## genero1 0.33231 0.08268 4.019 0.000073420545 ***
## educ2 -0.24921 0.08325 -2.994 0.00298 **
## hta1 0.23635 0.08760 2.698 0.00736 **
## hipercol1 -0.21466 0.08649 -2.482 0.01360 *
## imc 0.03402 0.00729 4.666 0.000004577589 ***
## tabaq1 0.21083 0.10154 2.076 0.03870 *
## estciv1 -0.16160 0.08329 -1.940 0.05326 .
## hs_af -0.04043 0.01647 -2.455 0.01466 *
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 0.7218 on 309 degrees of freedom
## Multiple R-squared: 0.2491, Adjusted R-squared: 0.2297
## F-statistic: 12.82 on 8 and 309 DF, p-value: 0.0000000000000006241
model_parameters(modelo_regback_cont, ci = 0.95, digits = 6)
## Parameter | Coefficient | SE | 95% CI | t(309) | p
## -----------------------------------------------------------------------------------
## (Intercept) | 1.465081 | 0.227352 | [ 1.017726, 1.912435] | 6.444098 | < .001
## genero [1] | 0.332306 | 0.082679 | [ 0.169620, 0.494992] | 4.019208 | < .001
## educ [2] | -0.249214 | 0.083250 | [-0.413023, -0.085405] | -2.993552 | 0.003
## hta [1] | 0.236347 | 0.087602 | [ 0.063975, 0.408719] | 2.697970 | 0.007
## hipercol [1] | -0.214658 | 0.086487 | [-0.384835, -0.044480] | -2.481971 | 0.014
## imc | 0.034016 | 0.007290 | [ 0.019672, 0.048360] | 4.666161 | < .001
## tabaq [1] | 0.210830 | 0.101545 | [ 0.011024, 0.410636] | 2.076230 | 0.039
## estciv [1] | -0.161605 | 0.083292 | [-0.325495, 0.002286] | -1.940221 | 0.053
## hs af | -0.040426 | 0.016470 | [-0.072834, -0.008019] | -2.454561 | 0.015
##
## Uncertainty intervals (equal-tailed) and p-values (two-tailed) computed
## using a Wald t-distribution approximation.
Algoritmo Backward: IMC como
variable categórica.
regback_cat <- step(completo_cat, direction = "backward")
## Start: AIC=-199.68
## pcr ~ genero + edad + estciv + educ + dbt + hta + hipercol +
## tabaq + imc_cat + hs_af
##
## Df Sum of Sq RSS AIC
## - dbt 1 0.2913 156.69 -201.08
## - edad 1 0.4436 156.84 -200.78
## <none> 156.39 -199.68
## - estciv 1 2.2484 158.64 -197.14
## - tabaq 1 2.2619 158.66 -197.11
## - hta 1 2.2693 158.66 -197.09
## - hs_af 1 3.2694 159.66 -195.10
## - hipercol 1 3.2950 159.69 -195.04
## - educ 1 4.7502 161.14 -192.16
## - genero 1 7.8387 164.23 -186.12
## - imc_cat 3 14.9650 171.36 -176.62
##
## Step: AIC=-201.08
## pcr ~ genero + edad + estciv + educ + hta + hipercol + tabaq +
## imc_cat + hs_af
##
## Df Sum of Sq RSS AIC
## - edad 1 0.4151 157.10 -202.24
## <none> 156.69 -201.08
## - estciv 1 2.1137 158.80 -198.82
## - tabaq 1 2.3708 159.06 -198.31
## - hs_af 1 3.2245 159.91 -196.61
## - hipercol 1 3.3651 160.05 -196.33
## - hta 1 3.3705 160.06 -196.32
## - educ 1 4.6963 161.38 -193.69
## - genero 1 8.0634 164.75 -187.13
## - imc_cat 3 14.9871 171.67 -178.03
##
## Step: AIC=-202.24
## pcr ~ genero + estciv + educ + hta + hipercol + tabaq + imc_cat +
## hs_af
##
## Df Sum of Sq RSS AIC
## <none> 157.10 -202.24
## - estciv 1 2.1070 159.21 -200.01
## - tabaq 1 2.3524 159.45 -199.52
## - hta 1 3.0808 160.18 -198.07
## - hs_af 1 3.1612 160.26 -197.91
## - hipercol 1 3.5975 160.70 -197.04
## - educ 1 4.4403 161.54 -195.38
## - genero 1 7.8969 165.00 -188.65
## - imc_cat 3 15.2141 172.31 -178.85
summary(regback_cat)
##
## Call:
## lm(formula = pcr ~ genero + estciv + educ + hta + hipercol +
## tabaq + imc_cat + hs_af, data = data)
##
## Residuals:
## Min 1Q Median 3Q Max
## -2.21953 -0.45286 0.03096 0.46129 2.26692
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 2.14396 0.12778 16.778 < 0.0000000000000002 ***
## genero1 0.32202 0.08197 3.928 0.000106 ***
## estciv1 -0.16767 0.08263 -2.029 0.043308 *
## educ2 -0.24426 0.08292 -2.946 0.003469 **
## hta1 0.21487 0.08757 2.454 0.014697 *
## hipercol1 -0.22760 0.08584 -2.651 0.008431 **
## tabaq1 0.21621 0.10084 2.144 0.032815 *
## imc_catbajo peso -0.05592 0.25394 -0.220 0.825856
## imc_catobesidad 0.62861 0.11977 5.249 0.000000286 ***
## imc_catsobrepeso 0.28968 0.09826 2.948 0.003442 **
## hs_af -0.04073 0.01639 -2.485 0.013470 *
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 0.7154 on 307 degrees of freedom
## Multiple R-squared: 0.2672, Adjusted R-squared: 0.2433
## F-statistic: 11.19 on 10 and 307 DF, p-value: 0.0000000000000002556
modelo_regback_cat <- lm(pcr ~ genero + educ + hta + hipercol + imc_cat + tabaq + estciv + hs_af, data = data)
summary(modelo_regback_cat)
##
## Call:
## lm(formula = pcr ~ genero + educ + hta + hipercol + imc_cat +
## tabaq + estciv + hs_af, data = data)
##
## Residuals:
## Min 1Q Median 3Q Max
## -2.21953 -0.45286 0.03096 0.46129 2.26692
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 2.14396 0.12778 16.778 < 0.0000000000000002 ***
## genero1 0.32202 0.08197 3.928 0.000106 ***
## educ2 -0.24426 0.08292 -2.946 0.003469 **
## hta1 0.21487 0.08757 2.454 0.014697 *
## hipercol1 -0.22760 0.08584 -2.651 0.008431 **
## imc_catbajo peso -0.05592 0.25394 -0.220 0.825856
## imc_catobesidad 0.62861 0.11977 5.249 0.000000286 ***
## imc_catsobrepeso 0.28968 0.09826 2.948 0.003442 **
## tabaq1 0.21621 0.10084 2.144 0.032815 *
## estciv1 -0.16767 0.08263 -2.029 0.043308 *
## hs_af -0.04073 0.01639 -2.485 0.013470 *
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 0.7154 on 307 degrees of freedom
## Multiple R-squared: 0.2672, Adjusted R-squared: 0.2433
## F-statistic: 11.19 on 10 and 307 DF, p-value: 0.0000000000000002556
model_parameters(modelo_regback_cat, ci = 0.95, digits = 6)
## Parameter | Coefficient | SE | 95% CI
## ---------------------------------------------------------------------
## (Intercept) | 2.143961 | 0.127782 | [ 1.892521, 2.395401]
## genero [1] | 0.322016 | 0.081973 | [ 0.160716, 0.483315]
## educ [2] | -0.244261 | 0.082921 | [-0.407426, -0.081095]
## hta [1] | 0.214872 | 0.087572 | [ 0.042554, 0.387190]
## hipercol [1] | -0.227595 | 0.085839 | [-0.396502, -0.058688]
## imc cat [bajo peso] | -0.055919 | 0.253939 | [-0.555601, 0.443762]
## imc cat [obesidad] | 0.628611 | 0.119765 | [ 0.392947, 0.864276]
## imc cat [sobrepeso] | 0.289681 | 0.098258 | [ 0.096337, 0.483024]
## tabaq [1] | 0.216213 | 0.100844 | [ 0.017780, 0.414646]
## estciv [1] | -0.167667 | 0.082630 | [-0.330260, -0.005074]
## hs af | -0.040727 | 0.016386 | [-0.072971, -0.008484]
##
## Parameter | t(307) | p
## ----------------------------------------
## (Intercept) | 16.778249 | < .001
## genero [1] | 3.928332 | < .001
## educ [2] | -2.945694 | 0.003
## hta [1] | 2.453646 | 0.015
## hipercol [1] | -2.651424 | 0.008
## imc cat [bajo peso] | -0.220208 | 0.826
## imc cat [obesidad] | 5.248691 | < .001
## imc cat [sobrepeso] | 2.948179 | 0.003
## tabaq [1] | 2.144038 | 0.033
## estciv [1] | -2.029128 | 0.043
## hs af | -2.485465 | 0.013
##
## Uncertainty intervals (equal-tailed) and p-values (two-tailed) computed
## using a Wald t-distribution approximation.
Algoritmo Stepwise: IMC como
variable continua.
regstep_cont <- step(completo_cont, direction = "both")
## Start: AIC=-195.81
## pcr ~ genero + edad + estciv + educ + dbt + hta + hipercol +
## tabaq + imc + hs_af
##
## Df Sum of Sq RSS AIC
## - dbt 1 0.2864 160.60 -197.25
## - edad 1 0.3999 160.71 -197.02
## <none> 160.31 -195.81
## - estciv 1 2.1046 162.41 -193.66
## - tabaq 1 2.1407 162.45 -193.59
## - hta 1 2.7799 163.09 -192.35
## - hipercol 1 2.9318 163.24 -192.05
## - hs_af 1 3.2534 163.56 -191.42
## - educ 1 4.9930 165.30 -188.06
## - genero 1 8.3564 168.67 -181.65
## - imc 1 11.0498 171.36 -176.62
##
## Step: AIC=-197.24
## pcr ~ genero + edad + estciv + educ + hta + hipercol + tabaq +
## imc + hs_af
##
## Df Sum of Sq RSS AIC
## - edad 1 0.3763 160.97 -198.50
## <none> 160.60 -197.25
## + dbt 1 0.2864 160.31 -195.81
## - estciv 1 1.9732 162.57 -195.36
## - tabaq 1 2.2500 162.85 -194.82
## - hipercol 1 3.0019 163.60 -193.36
## - hs_af 1 3.2045 163.80 -192.96
## - hta 1 4.0692 164.66 -191.29
## - educ 1 4.9311 165.53 -189.63
## - genero 1 8.5810 169.18 -182.69
## - imc 1 11.0768 171.67 -178.03
##
## Step: AIC=-198.5
## pcr ~ genero + estciv + educ + hta + hipercol + tabaq + imc +
## hs_af
##
## Df Sum of Sq RSS AIC
## <none> 160.97 -198.50
## + edad 1 0.3763 160.60 -197.25
## + dbt 1 0.2629 160.71 -197.02
## - estciv 1 1.9611 162.93 -196.65
## - tabaq 1 2.2457 163.22 -196.09
## - hs_af 1 3.1386 164.11 -194.36
## - hipercol 1 3.2091 164.18 -194.22
## - hta 1 3.7920 164.76 -193.10
## - educ 1 4.6684 165.64 -191.41
## - genero 1 8.4154 169.39 -184.30
## - imc 1 11.3426 172.31 -178.85
summary(regstep_cont)
##
## Call:
## lm(formula = pcr ~ genero + estciv + educ + hta + hipercol +
## tabaq + imc + hs_af, data = data)
##
## Residuals:
## Min 1Q Median 3Q Max
## -2.26579 -0.46166 0.01653 0.47312 2.33792
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 1.46508 0.22735 6.444 0.000000000446 ***
## genero1 0.33231 0.08268 4.019 0.000073420545 ***
## estciv1 -0.16160 0.08329 -1.940 0.05326 .
## educ2 -0.24921 0.08325 -2.994 0.00298 **
## hta1 0.23635 0.08760 2.698 0.00736 **
## hipercol1 -0.21466 0.08649 -2.482 0.01360 *
## tabaq1 0.21083 0.10154 2.076 0.03870 *
## imc 0.03402 0.00729 4.666 0.000004577589 ***
## hs_af -0.04043 0.01647 -2.455 0.01466 *
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 0.7218 on 309 degrees of freedom
## Multiple R-squared: 0.2491, Adjusted R-squared: 0.2297
## F-statistic: 12.82 on 8 and 309 DF, p-value: 0.0000000000000006241
modelo_regstep_cont <- lm(pcr ~ genero + educ + hta + hipercol + imc + tabaq + estciv + hs_af, data = data)
summary(modelo_regstep_cont)
##
## Call:
## lm(formula = pcr ~ genero + educ + hta + hipercol + imc + tabaq +
## estciv + hs_af, data = data)
##
## Residuals:
## Min 1Q Median 3Q Max
## -2.26579 -0.46166 0.01653 0.47312 2.33792
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 1.46508 0.22735 6.444 0.000000000446 ***
## genero1 0.33231 0.08268 4.019 0.000073420545 ***
## educ2 -0.24921 0.08325 -2.994 0.00298 **
## hta1 0.23635 0.08760 2.698 0.00736 **
## hipercol1 -0.21466 0.08649 -2.482 0.01360 *
## imc 0.03402 0.00729 4.666 0.000004577589 ***
## tabaq1 0.21083 0.10154 2.076 0.03870 *
## estciv1 -0.16160 0.08329 -1.940 0.05326 .
## hs_af -0.04043 0.01647 -2.455 0.01466 *
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 0.7218 on 309 degrees of freedom
## Multiple R-squared: 0.2491, Adjusted R-squared: 0.2297
## F-statistic: 12.82 on 8 and 309 DF, p-value: 0.0000000000000006241
model_parameters(modelo_regstep_cont, ci = 0.95, digits = 6)
## Parameter | Coefficient | SE | 95% CI | t(309) | p
## -----------------------------------------------------------------------------------
## (Intercept) | 1.465081 | 0.227352 | [ 1.017726, 1.912435] | 6.444098 | < .001
## genero [1] | 0.332306 | 0.082679 | [ 0.169620, 0.494992] | 4.019208 | < .001
## educ [2] | -0.249214 | 0.083250 | [-0.413023, -0.085405] | -2.993552 | 0.003
## hta [1] | 0.236347 | 0.087602 | [ 0.063975, 0.408719] | 2.697970 | 0.007
## hipercol [1] | -0.214658 | 0.086487 | [-0.384835, -0.044480] | -2.481971 | 0.014
## imc | 0.034016 | 0.007290 | [ 0.019672, 0.048360] | 4.666161 | < .001
## tabaq [1] | 0.210830 | 0.101545 | [ 0.011024, 0.410636] | 2.076230 | 0.039
## estciv [1] | -0.161605 | 0.083292 | [-0.325495, 0.002286] | -1.940221 | 0.053
## hs af | -0.040426 | 0.016470 | [-0.072834, -0.008019] | -2.454561 | 0.015
##
## Uncertainty intervals (equal-tailed) and p-values (two-tailed) computed
## using a Wald t-distribution approximation.
Algoritmo Stepwise: IMC como
variable categórica.
regstep_cat <- step(completo_cat, direction = "both")
## Start: AIC=-199.68
## pcr ~ genero + edad + estciv + educ + dbt + hta + hipercol +
## tabaq + imc_cat + hs_af
##
## Df Sum of Sq RSS AIC
## - dbt 1 0.2913 156.69 -201.08
## - edad 1 0.4436 156.84 -200.78
## <none> 156.39 -199.68
## - estciv 1 2.2484 158.64 -197.14
## - tabaq 1 2.2619 158.66 -197.11
## - hta 1 2.2693 158.66 -197.09
## - hs_af 1 3.2694 159.66 -195.10
## - hipercol 1 3.2950 159.69 -195.04
## - educ 1 4.7502 161.14 -192.16
## - genero 1 7.8387 164.23 -186.12
## - imc_cat 3 14.9650 171.36 -176.62
##
## Step: AIC=-201.08
## pcr ~ genero + edad + estciv + educ + hta + hipercol + tabaq +
## imc_cat + hs_af
##
## Df Sum of Sq RSS AIC
## - edad 1 0.4151 157.10 -202.24
## <none> 156.69 -201.08
## + dbt 1 0.2913 156.39 -199.68
## - estciv 1 2.1137 158.80 -198.82
## - tabaq 1 2.3708 159.06 -198.31
## - hs_af 1 3.2245 159.91 -196.61
## - hipercol 1 3.3651 160.05 -196.33
## - hta 1 3.3705 160.06 -196.32
## - educ 1 4.6963 161.38 -193.69
## - genero 1 8.0634 164.75 -187.13
## - imc_cat 3 14.9871 171.67 -178.03
##
## Step: AIC=-202.24
## pcr ~ genero + estciv + educ + hta + hipercol + tabaq + imc_cat +
## hs_af
##
## Df Sum of Sq RSS AIC
## <none> 157.10 -202.24
## + edad 1 0.4151 156.69 -201.08
## + dbt 1 0.2628 156.84 -200.78
## - estciv 1 2.1070 159.21 -200.01
## - tabaq 1 2.3524 159.45 -199.52
## - hta 1 3.0808 160.18 -198.07
## - hs_af 1 3.1612 160.26 -197.91
## - hipercol 1 3.5975 160.70 -197.04
## - educ 1 4.4403 161.54 -195.38
## - genero 1 7.8969 165.00 -188.65
## - imc_cat 3 15.2141 172.31 -178.85
summary(regstep_cat)
##
## Call:
## lm(formula = pcr ~ genero + estciv + educ + hta + hipercol +
## tabaq + imc_cat + hs_af, data = data)
##
## Residuals:
## Min 1Q Median 3Q Max
## -2.21953 -0.45286 0.03096 0.46129 2.26692
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 2.14396 0.12778 16.778 < 0.0000000000000002 ***
## genero1 0.32202 0.08197 3.928 0.000106 ***
## estciv1 -0.16767 0.08263 -2.029 0.043308 *
## educ2 -0.24426 0.08292 -2.946 0.003469 **
## hta1 0.21487 0.08757 2.454 0.014697 *
## hipercol1 -0.22760 0.08584 -2.651 0.008431 **
## tabaq1 0.21621 0.10084 2.144 0.032815 *
## imc_catbajo peso -0.05592 0.25394 -0.220 0.825856
## imc_catobesidad 0.62861 0.11977 5.249 0.000000286 ***
## imc_catsobrepeso 0.28968 0.09826 2.948 0.003442 **
## hs_af -0.04073 0.01639 -2.485 0.013470 *
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 0.7154 on 307 degrees of freedom
## Multiple R-squared: 0.2672, Adjusted R-squared: 0.2433
## F-statistic: 11.19 on 10 and 307 DF, p-value: 0.0000000000000002556
modelo_regstep_cat <- lm(pcr ~ genero + educ + hta + hipercol + imc_cat + tabaq + estciv + hs_af, data = data)
summary(modelo_regstep_cat)
##
## Call:
## lm(formula = pcr ~ genero + educ + hta + hipercol + imc_cat +
## tabaq + estciv + hs_af, data = data)
##
## Residuals:
## Min 1Q Median 3Q Max
## -2.21953 -0.45286 0.03096 0.46129 2.26692
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 2.14396 0.12778 16.778 < 0.0000000000000002 ***
## genero1 0.32202 0.08197 3.928 0.000106 ***
## educ2 -0.24426 0.08292 -2.946 0.003469 **
## hta1 0.21487 0.08757 2.454 0.014697 *
## hipercol1 -0.22760 0.08584 -2.651 0.008431 **
## imc_catbajo peso -0.05592 0.25394 -0.220 0.825856
## imc_catobesidad 0.62861 0.11977 5.249 0.000000286 ***
## imc_catsobrepeso 0.28968 0.09826 2.948 0.003442 **
## tabaq1 0.21621 0.10084 2.144 0.032815 *
## estciv1 -0.16767 0.08263 -2.029 0.043308 *
## hs_af -0.04073 0.01639 -2.485 0.013470 *
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 0.7154 on 307 degrees of freedom
## Multiple R-squared: 0.2672, Adjusted R-squared: 0.2433
## F-statistic: 11.19 on 10 and 307 DF, p-value: 0.0000000000000002556
model_parameters(modelo_regstep_cat, ci = 0.95, digits = 6)
## Parameter | Coefficient | SE | 95% CI
## ---------------------------------------------------------------------
## (Intercept) | 2.143961 | 0.127782 | [ 1.892521, 2.395401]
## genero [1] | 0.322016 | 0.081973 | [ 0.160716, 0.483315]
## educ [2] | -0.244261 | 0.082921 | [-0.407426, -0.081095]
## hta [1] | 0.214872 | 0.087572 | [ 0.042554, 0.387190]
## hipercol [1] | -0.227595 | 0.085839 | [-0.396502, -0.058688]
## imc cat [bajo peso] | -0.055919 | 0.253939 | [-0.555601, 0.443762]
## imc cat [obesidad] | 0.628611 | 0.119765 | [ 0.392947, 0.864276]
## imc cat [sobrepeso] | 0.289681 | 0.098258 | [ 0.096337, 0.483024]
## tabaq [1] | 0.216213 | 0.100844 | [ 0.017780, 0.414646]
## estciv [1] | -0.167667 | 0.082630 | [-0.330260, -0.005074]
## hs af | -0.040727 | 0.016386 | [-0.072971, -0.008484]
##
## Parameter | t(307) | p
## ----------------------------------------
## (Intercept) | 16.778249 | < .001
## genero [1] | 3.928332 | < .001
## educ [2] | -2.945694 | 0.003
## hta [1] | 2.453646 | 0.015
## hipercol [1] | -2.651424 | 0.008
## imc cat [bajo peso] | -0.220208 | 0.826
## imc cat [obesidad] | 5.248691 | < .001
## imc cat [sobrepeso] | 2.948179 | 0.003
## tabaq [1] | 2.144038 | 0.033
## estciv [1] | -2.029128 | 0.043
## hs af | -2.485465 | 0.013
##
## Uncertainty intervals (equal-tailed) and p-values (two-tailed) computed
## using a Wald t-distribution approximation.
Tabla comparativa entre algoritmos y formas de IMC.
tabla_modelos <- data.frame(
Algoritmo = rep(c("Forward", "Backward", "Stepwise"), each = 2),
IMC = rep(c("Continua", "Categórica"), times = 3),
AIC = c(-198.5, -202.24,
-198.5, -202.24,
-198.5, -202.24),
R2_ajustado = c(0.2297, 0.2433,
0.2297, 0.2433,
0.2297, 0.2433)
)
knitr::kable(tabla_modelos, caption = "Comparación entre algoritmos de selección y forma de IMC")
| Algoritmo | IMC | AIC | R2_ajustado |
|---|---|---|---|
| Forward | Continua | -198.50 | 0.2297 |
| Forward | Categórica | -202.24 | 0.2433 |
| Backward | Continua | -198.50 | 0.2297 |
| Backward | Categórica | -202.24 | 0.2433 |
| Stepwise | Continua | -198.50 | 0.2297 |
| Stepwise | Categórica | -202.24 | 0.2433 |
Conclusión:
El modelo final incluyó las variables género, estado civil, nivel educativo, hipertensión arterial, hipercolesterolemia, tabaquismo, índice de masa corporal (IMC) en su forma categórica, y horas semanales de actividad física.
El R2 ajustado fue de aproximadamente 0.243, indicando que el modelo explica un 24.3% de la variabilidad en los niveles de PCR en esta población.
Aunque el estado civil presentó un valor de p ligeramente superior a 0.05 (p = 0.053), se decidió su inclusión por su aporte al ajuste global y su posible relevancia clínica.
La aplicación de los algoritmos automáticos de selección
(Forward, Backward y Stepwise)
condujo a modelos equivalentes en términos de variables seleccionadas y
coeficientes, tanto con IMC como variable continua como categórica, lo
que refuerza la robustez del modelo.
Sin embargo, al comparar ambas codificaciones de IMC, el modelo con IMC categórica mostró un mejor ajuste (AIC = -202.24 frente a -198.5 y R2 ajustado = 0.243 frente a 0.2297).
Por lo tanto, se optó por conservar como modelo final el construido mediante algoritmo Forward, incluyendo IMC en su forma categórica, por combinar mejor ajuste estadístico y mayor claridad interpretativa.
Chequear los supuestos de linealidad, normalidad, homocedasticidad e independencia.
Generar valores predichos y residuos.
Valores predichos (Y sombrero)
predichos <- modelo_regforw_cat$fitted.values
Residuos crudos
residuos_crudos <- modelo_regforw_cat$residuals
Residuos estandarizados
residuos_standarizados <- rstandard(modelo_regforw_cat)
Evaluación del supuesto de linealidad.
Gráfico de residuos crudos frente a valores predichos
plot(y = residuos_crudos, x = predichos, main = "Gráfico de residuos crudos versus predichos")
abline(h = 0)
El supuesto de linealidad se cumple, ya que los residuos parecen distribuirse de forma aleatoria respecto de los valores predichos sin un patrón evidente. No se observan asimetrías notorias.
avPlots(modelo_regforw_cat)
Los gráficos avPlots() muestran que no hay evidencia de relaciones no lineales entre la variable dependiente y cada una de las variables independientes, ajustando por las otras. Por lo tanto, el supuesto de linealidad se considera cumplido en el modelo_regforw_cat.
Evaluación del supuesto de igualdad de varianzas (homocedasticidad).
plot(y = residuos_crudos, x = predichos, main = "Gráfico de residuos crudos versus predichos")
abline(h = 0)
bptest(modelo_regforw_cat)
##
## studentized Breusch-Pagan test
##
## data: modelo_regforw_cat
## BP = 20.19, df = 10, p-value = 0.02751
Conforme el gráfico, se evidencia una distribución no homogénea (imagen en embudo) y el Breusch-Pagan test rechaza la H0 de igualdad de varianzas, por lo cual, no se cumple el supuesto de homocedasticidad (hay heterocedasticidad).
Evaluación del supuesto de normalidad de los residuos.
residuos_crudos <- modelo_regforw_cat$residuals
residuos_estandarizados <- rstandard(modelo_regforw_cat)
hist(residuos_crudos, main = "Histograma de residuos", xlab = "Residuos", ylab = "Frecuencia", breaks = 10)
boxplot(residuos_crudos, main = "Boxplot de residuos")
plot(density(residuos_crudos), main = "Gráfico de densidad de residuos")
qqnorm(residuos_estandarizados, main = "Q-Q plot de residuos estandarizados")
qqline(residuos_estandarizados, col = "blue")
shapiro.test(residuos_crudos)
##
## Shapiro-Wilk normality test
##
## data: residuos_crudos
## W = 0.9981, p-value = 0.9779
El supuesto de normalidad de los residuos se cumple. Tanto la inspección visual como la evidencia estadística del test de Shapiro-Wilk (p > 0.05 → no rechaza normalidad) indican que los residuos del modelo modelo_regforw_cat se distribuyen normalmente.
Evaluación del supuesto de independencia.
plot(residuos_crudos, type = "b", main = "Residuos vs orden de ingreso")
abline(h = 0, col = "red")
A partir del gráfico de residuos en función del orden de ingreso de las observaciones, no se observa un patrón sistemático que sugiera dependencia temporal o secuencial entre los residuos. Por lo tanto, el supuesto de independencia se asume cumplido.
Prueba de Durbin-Watson
dwtest(modelo_regforw_cat)
##
## Durbin-Watson test
##
## data: modelo_regforw_cat
## DW = 1.7994, p-value = 0.03221
## alternative hypothesis: true autocorrelation is greater than 0
El estadístico de Durbin-Watson fue cercano a 1.8, con p-valores inferiores a 0.05. Esto sugiere evidencia estadísticamente significativa de autocorrelación positiva entre los residuos.
Este hallazgo indica una posible violación del supuesto de independencia de errores. A pesar de que el gráfico de residuos versus orden de ingreso no mostraba un patrón visual claro, el test formal refuerza la necesidad de considerar esta limitación en la interpretación de los resultados.
Evaluar la presencia de multicolinealidad en el modelo.
Matriz de correlación entre variables continuas
Seleccionar solo las variables continuas del modelo_regforw_cat
vars_continuas <- data[, c("imc", "hs_af")]
Calcular matriz de correlación
cor_matrix <- round(cor(vars_continuas), 2)
Reestructurar la matriz para ggplot
melted_cor <- melt(cor_matrix)
Graficar
ggplot(data = melted_cor, aes(x = Var1, y = Var2, fill = value)) +
geom_tile() +
geom_text(aes(label = sprintf("%.2f", value)), color = "white", size = 5) +
scale_fill_gradient2(low = "blue", high = "red", mid = "white",
midpoint = 0.5, limit = c(0, 1), space = "Lab",
name = "Correlación") +
theme_minimal() +
labs(title = "Matriz de correlación - Variables continuas (modelo_2a)",
x = "", y = "") +
coord_fixed()
Las correlaciones entre las variables continuas del modelo (imc, hs_af) no muestran asociación (r cercano a 0), por lo que, en esta instancia, no se evidencia colinealidad preocupante entre estas variables.
Índice VIF
vif(modelo_regforw_cat)
## GVIF Df GVIF^(1/(2*Df))
## genero 1.013812 1 1.006882
## educ 1.049581 1 1.024491
## hta 1.078260 1 1.038393
## hipercol 1.144527 1 1.069826
## imc_cat 1.093101 3 1.014947
## tabaq 1.050947 1 1.025157
## hs_af 1.117043 1 1.056903
## estciv 1.034506 1 1.017107
Todos los valores de VIF son muy cercanos a 1, lo cual indica que no existe multicolinealidad entre las variables independientes del modelo.
Tolerancia
1/vif(modelo_regforw_cat)
## GVIF Df GVIF^(1/(2*Df))
## genero 0.9863764 1.0000000 0.9931649
## educ 0.9527612 1.0000000 0.9760949
## hta 0.9274198 1.0000000 0.9630264
## hipercol 0.8737234 1.0000000 0.9347317
## imc_cat 0.9148285 0.3333333 0.9852731
## tabaq 0.9515223 1.0000000 0.9754601
## hs_af 0.8952206 1.0000000 0.9461610
## estciv 0.9666446 1.0000000 0.9831809
Dado que todos los valores de tolerancia se encuentran por encima del umbral de 0.2, se concluye que no existe evidencia de multicolinealidad significativa entre los predictores del modelo.
Explorar la presencia de outliers y valores influyentes.
Identificar observaciones con residuos studentizados > ±3
resid_student_mforw <- rstudent(modelo_regforw_cat)
outliers <- which(abs(resid_student_mforw) > 3)
plot(
x = modelo_regforw_cat$fitted.values,
y = resid_student_mforw,
xlab = "Valores predichos",
ylab = "Residuos studentizados",
pch = 19,
col = "darkblue"
)
abline(h = c(-3, 3), col = "red", lty = 2)
abline(h = 0, col = "gray50")
text(
x = modelo_regforw_cat$fitted.values[outliers],
y = resid_student_mforw[outliers],
labels = outliers,
pos = 4,
cex = 0.7,
col = "darkred"
)
Se calcularon los residuos studentizados externos. Se identificaron 2 observaciones con valores mayores a ±3 (casos 304 y 90), lo cual sugiere la presencia de posibles outliers. En el gráfico de residuos studentizados vs. valores predichos, la mayoría de las observaciones se distribuyen en torno a cero sin un patrón sistemático, y únicamente dos puntos (observaciones 304 y 90) se ubican por fuera del umbral convencional de ±3 DE.
cook <- cooks.distance(modelo_regforw_cat)
plot(cook, type = "h", main = "Distancia de Cook", ylab = "Cook's distance")
abline(h = 4/length(cook), col = "red", lty = 2)
abline(h = 0.5, col = "blue", lty = 2)
abline(h = 1.0, col = "darkgreen", lty = 2)
legend("topright", legend = c("4/n", "0.5", "1.0"),
col = c("red", "blue", "darkgreen"), lty = 2, cex = 0.8)
which(cook > 4/length(cook))
## 2 5 23 33 84 90 96 114 134 185 190 219 293 304
## 2 5 23 33 84 90 96 114 134 185 190 219 293 304
which(cook > 0.5)
## named integer(0)
which(cook > 1.0)
## named integer(0)
Se calculó la distancia de Cook para evaluar la influencia de cada observación en el modelo. Se identificaron 14 observaciones con valores por encima del umbral clásico (4/n), lo que sugiere que podrían ser potencialmente influyentes. Sin embargo, ninguna observación superó los umbrales más conservadores (> 0.5 o > 1), por lo que no se identificaron influencias graves sobre los coeficientes del modelo.
Las observaciones 304 y 90 tienen un residuo studentizado externo elevado (potencial outlier) y una alta influencia, evaluada con la distancia de Cook y/o leverage. Son candidatas prioritarias a ser evaluadas en profundidad.
Modelo base (modelo_regforw_cat)
modelo_regforw_cat <- lm(pcr ~ genero + educ + hta + hipercol + imc_cat + tabaq + hs_af + estciv, data = data)
summary(modelo_regforw_cat)
##
## Call:
## lm(formula = pcr ~ genero + educ + hta + hipercol + imc_cat +
## tabaq + hs_af + estciv, data = data)
##
## Residuals:
## Min 1Q Median 3Q Max
## -2.21953 -0.45286 0.03096 0.46129 2.26692
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 2.14396 0.12778 16.778 < 0.0000000000000002 ***
## genero1 0.32202 0.08197 3.928 0.000106 ***
## educ2 -0.24426 0.08292 -2.946 0.003469 **
## hta1 0.21487 0.08757 2.454 0.014697 *
## hipercol1 -0.22760 0.08584 -2.651 0.008431 **
## imc_catbajo peso -0.05592 0.25394 -0.220 0.825856
## imc_catobesidad 0.62861 0.11977 5.249 0.000000286 ***
## imc_catsobrepeso 0.28968 0.09826 2.948 0.003442 **
## tabaq1 0.21621 0.10084 2.144 0.032815 *
## hs_af -0.04073 0.01639 -2.485 0.013470 *
## estciv1 -0.16767 0.08263 -2.029 0.043308 *
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 0.7154 on 307 degrees of freedom
## Multiple R-squared: 0.2672, Adjusted R-squared: 0.2433
## F-statistic: 11.19 on 10 and 307 DF, p-value: 0.0000000000000002556
model_parameters(modelo_regforw_cat, ci = 0.95, digits = 6)
## Parameter | Coefficient | SE | 95% CI
## ---------------------------------------------------------------------
## (Intercept) | 2.143961 | 0.127782 | [ 1.892521, 2.395401]
## genero [1] | 0.322016 | 0.081973 | [ 0.160716, 0.483315]
## educ [2] | -0.244261 | 0.082921 | [-0.407426, -0.081095]
## hta [1] | 0.214872 | 0.087572 | [ 0.042554, 0.387190]
## hipercol [1] | -0.227595 | 0.085839 | [-0.396502, -0.058688]
## imc cat [bajo peso] | -0.055919 | 0.253939 | [-0.555601, 0.443762]
## imc cat [obesidad] | 0.628611 | 0.119765 | [ 0.392947, 0.864276]
## imc cat [sobrepeso] | 0.289681 | 0.098258 | [ 0.096337, 0.483024]
## tabaq [1] | 0.216213 | 0.100844 | [ 0.017780, 0.414646]
## hs af | -0.040727 | 0.016386 | [-0.072971, -0.008484]
## estciv [1] | -0.167667 | 0.082630 | [-0.330260, -0.005074]
##
## Parameter | t(307) | p
## ----------------------------------------
## (Intercept) | 16.778249 | < .001
## genero [1] | 3.928332 | < .001
## educ [2] | -2.945694 | 0.003
## hta [1] | 2.453646 | 0.015
## hipercol [1] | -2.651424 | 0.008
## imc cat [bajo peso] | -0.220208 | 0.826
## imc cat [obesidad] | 5.248691 | < .001
## imc cat [sobrepeso] | 2.948179 | 0.003
## tabaq [1] | 2.144038 | 0.033
## hs af | -2.485465 | 0.013
## estciv [1] | -2.029128 | 0.043
##
## Uncertainty intervals (equal-tailed) and p-values (two-tailed) computed
## using a Wald t-distribution approximation.
Comparación del coeficiente B para horas semanales de actividad
física hs_af excluyendo observaciones potencialmente
influyentes
Sin observación 304
modelo_sin_304 <- lm(pcr ~ genero + educ + hta + hipercol + imc_cat + tabaq + hs_af + estciv, data = data[-304,])
summary(modelo_sin_304)
##
## Call:
## lm(formula = pcr ~ genero + educ + hta + hipercol + imc_cat +
## tabaq + hs_af + estciv, data = data[-304, ])
##
## Residuals:
## Min 1Q Median 3Q Max
## -2.18455 -0.43822 0.02753 0.44659 2.03738
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 2.15314 0.12583 17.111 < 0.0000000000000002 ***
## genero1 0.30658 0.08084 3.792 0.00018 ***
## educ2 -0.23724 0.08166 -2.905 0.00394 **
## hta1 0.19748 0.08638 2.286 0.02293 *
## hipercol1 -0.22165 0.08453 -2.622 0.00917 **
## imc_catbajo peso -0.04813 0.25002 -0.192 0.84748
## imc_catobesidad 0.63790 0.11794 5.409 0.000000128 ***
## imc_catsobrepeso 0.27834 0.09680 2.876 0.00432 **
## tabaq1 0.18403 0.09977 1.845 0.06607 .
## hs_af -0.03817 0.01615 -2.363 0.01873 *
## estciv1 -0.18301 0.08148 -2.246 0.02542 *
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 0.7043 on 306 degrees of freedom
## Multiple R-squared: 0.2594, Adjusted R-squared: 0.2352
## F-statistic: 10.72 on 10 and 306 DF, p-value: 0.000000000000001314
Sin observación 90
modelo_sin_90 <- lm(pcr ~ genero + educ + hta + hipercol + imc_cat + tabaq + hs_af + estciv, data = data[-90,])
summary(modelo_sin_90)
##
## Call:
## lm(formula = pcr ~ genero + educ + hta + hipercol + imc_cat +
## tabaq + hs_af + estciv, data = data[-90, ])
##
## Residuals:
## Min 1Q Median 3Q Max
## -1.91858 -0.45433 0.04322 0.46079 2.23282
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 2.16641 0.12610 17.180 < 0.0000000000000002 ***
## genero1 0.33832 0.08093 4.181 0.000038006 ***
## educ2 -0.25407 0.08176 -3.108 0.00206 **
## hta1 0.23499 0.08651 2.716 0.00698 **
## hipercol1 -0.23894 0.08465 -2.823 0.00507 **
## imc_catbajo peso -0.05531 0.25020 -0.221 0.82521
## imc_catobesidad 0.62481 0.11801 5.295 0.000000228 ***
## imc_catsobrepeso 0.30157 0.09688 3.113 0.00203 **
## tabaq1 0.19861 0.09951 1.996 0.04684 *
## hs_af -0.04343 0.01617 -2.686 0.00763 **
## estciv1 -0.18673 0.08163 -2.287 0.02285 *
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 0.7048 on 306 degrees of freedom
## Multiple R-squared: 0.2837, Adjusted R-squared: 0.2603
## F-statistic: 12.12 on 10 and 306 DF, p-value: < 0.00000000000000022
Conclusión
Para cada modelo sin la observación atípica, compararemos el
coeficiente B de la variable horas semanales de actividad física
(hs_af) con el modelo original. Si la variación relativa es
mayor al 10%, se considera que la observación tiene un impacto
significativo en la estimación del coeficiente:
coef_original <- coef(modelo_regforw_cat)["hs_af"]
coef_sin_304 <- coef(modelo_sin_304)["hs_af"]
coef_sin_90 <- coef(modelo_sin_90)["hs_af"]
var_304 <- abs(1 - (coef_sin_304 / coef_original)) * 100
var_90 <- abs(1 - (coef_sin_90 / coef_original)) * 100
variaciones <- data.frame(
Observacion = c("304", "90"),
Coef_Original = rep(coef_original, 2),
Coef_Sin_Obs = c(coef_sin_304, coef_sin_90),
Variacion_Relativa_Porcentual = c(var_304, var_90)
)
variaciones
## Observacion Coef_Original Coef_Sin_Obs Variacion_Relativa_Porcentual
## 1 304 -0.04072738 -0.03817305 6.271785
## 2 90 -0.04072738 -0.04342564 6.625161
Se evaluó el impacto de dos observaciones potencialmente influyentes
(casos 304 y 90) sobre el coeficiente B de la variable horas semanales
de actividad física (hs_af) en el modelo de regresión
lineal múltiple. Si bien ambas mostraron una variación relativa del
coeficiente (6.27% y 6.63%, respectivamente), estos valores no superan
el umbral del 10%, por lo que se concluye que no ejercen una influencia
significativa sobre la estimación del coeficiente. En consecuencia, no
se consideran necesarias medidas adicionales.
Inspección visual de las observaciones atípicas detectadas
La inspección visual de las observaciones atípicas identificadas puede aportar información útil sobre posibles errores de carga o características particulares de los datos. Esta inspección es complementaria al análisis del impacto en el modelo y puede ser especialmente útil para interpretar la naturaleza de cada observación.
data %>%
mutate(fila_original = row_number()) %>%
filter(fila_original %in% c(304, 90)) %>%
kable(caption = "Valores de las observaciones 304 y 90") %>%
kable_styling(full_width = FALSE)
| id | genero | edad | estciv | educ | pcr | dbt | hta | hipercol | tabaq | imc | hs_af | imc_cat | fila_original |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| c099 | 1 | 44 | 0 | 1 | 0.751 | 0 | 1 | 0 | 0 | 28.9 | 0 | sobrepeso | 90 |
| c332 | 1 | 45 | 1 | 1 | 5.286 | 1 | 1 | 0 | 1 | 29.3 | 0 | sobrepeso | 304 |
Evaluación de potenciales confundidores y/o modificadores de efecto.
Se evaluó si las variables no seleccionadas por el algoritmo de Forward podían actuar como potenciales confundidores o modificadores de efecto, analizando su impacto en los coeficientes parciales del modelo.
1. Variable diabetes:
Se exploró si la variable diabetes actuaba como
confundidor o modificador de efecto en la asociación entre las variables
independientes seleccionadas y los niveles de PCR.
summary(modelo_regforw_cat)
##
## Call:
## lm(formula = pcr ~ genero + educ + hta + hipercol + imc_cat +
## tabaq + hs_af + estciv, data = data)
##
## Residuals:
## Min 1Q Median 3Q Max
## -2.21953 -0.45286 0.03096 0.46129 2.26692
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 2.14396 0.12778 16.778 < 0.0000000000000002 ***
## genero1 0.32202 0.08197 3.928 0.000106 ***
## educ2 -0.24426 0.08292 -2.946 0.003469 **
## hta1 0.21487 0.08757 2.454 0.014697 *
## hipercol1 -0.22760 0.08584 -2.651 0.008431 **
## imc_catbajo peso -0.05592 0.25394 -0.220 0.825856
## imc_catobesidad 0.62861 0.11977 5.249 0.000000286 ***
## imc_catsobrepeso 0.28968 0.09826 2.948 0.003442 **
## tabaq1 0.21621 0.10084 2.144 0.032815 *
## hs_af -0.04073 0.01639 -2.485 0.013470 *
## estciv1 -0.16767 0.08263 -2.029 0.043308 *
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 0.7154 on 307 degrees of freedom
## Multiple R-squared: 0.2672, Adjusted R-squared: 0.2433
## F-statistic: 11.19 on 10 and 307 DF, p-value: 0.0000000000000002556
model_parameters(modelo_regforw_cat, ci = 0.95, digits = 6)
## Parameter | Coefficient | SE | 95% CI
## ---------------------------------------------------------------------
## (Intercept) | 2.143961 | 0.127782 | [ 1.892521, 2.395401]
## genero [1] | 0.322016 | 0.081973 | [ 0.160716, 0.483315]
## educ [2] | -0.244261 | 0.082921 | [-0.407426, -0.081095]
## hta [1] | 0.214872 | 0.087572 | [ 0.042554, 0.387190]
## hipercol [1] | -0.227595 | 0.085839 | [-0.396502, -0.058688]
## imc cat [bajo peso] | -0.055919 | 0.253939 | [-0.555601, 0.443762]
## imc cat [obesidad] | 0.628611 | 0.119765 | [ 0.392947, 0.864276]
## imc cat [sobrepeso] | 0.289681 | 0.098258 | [ 0.096337, 0.483024]
## tabaq [1] | 0.216213 | 0.100844 | [ 0.017780, 0.414646]
## hs af | -0.040727 | 0.016386 | [-0.072971, -0.008484]
## estciv [1] | -0.167667 | 0.082630 | [-0.330260, -0.005074]
##
## Parameter | t(307) | p
## ----------------------------------------
## (Intercept) | 16.778249 | < .001
## genero [1] | 3.928332 | < .001
## educ [2] | -2.945694 | 0.003
## hta [1] | 2.453646 | 0.015
## hipercol [1] | -2.651424 | 0.008
## imc cat [bajo peso] | -0.220208 | 0.826
## imc cat [obesidad] | 5.248691 | < .001
## imc cat [sobrepeso] | 2.948179 | 0.003
## tabaq [1] | 2.144038 | 0.033
## hs af | -2.485465 | 0.013
## estciv [1] | -2.029128 | 0.043
##
## Uncertainty intervals (equal-tailed) and p-values (two-tailed) computed
## using a Wald t-distribution approximation.
diabetesmodelo_exploratorio <- lm(pcr ~ genero + educ + hta + hipercol + imc_cat + tabaq + hs_af + estciv + dbt, data = data)
summary(modelo_exploratorio)
##
## Call:
## lm(formula = pcr ~ genero + educ + hta + hipercol + imc_cat +
## tabaq + hs_af + estciv + dbt, data = data)
##
## Residuals:
## Min 1Q Median 3Q Max
## -2.18807 -0.44107 0.03203 0.46582 2.23549
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 2.14014 0.12799 16.721 < 0.0000000000000002 ***
## genero1 0.31816 0.08221 3.870 0.000133 ***
## educ2 -0.24542 0.08300 -2.957 0.003351 **
## hta1 0.18918 0.09470 1.998 0.046635 *
## hipercol1 -0.22574 0.08595 -2.626 0.009061 **
## imc_catbajo peso -0.05825 0.25416 -0.229 0.818864
## imc_catobesidad 0.62769 0.11987 5.237 0.000000305 ***
## imc_catsobrepeso 0.29158 0.09837 2.964 0.003274 **
## tabaq1 0.21177 0.10111 2.094 0.037048 *
## hs_af -0.04100 0.01640 -2.499 0.012972 *
## estciv1 -0.17344 0.08309 -2.087 0.037676 *
## dbt1 0.07311 0.10210 0.716 0.474511
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 0.7159 on 306 degrees of freedom
## Multiple R-squared: 0.2684, Adjusted R-squared: 0.2421
## F-statistic: 10.21 on 11 and 306 DF, p-value: 0.0000000000000006997
model_parameters(modelo_exploratorio, ci = 0.95, digits = 6)
## Parameter | Coefficient | SE | 95% CI
## ---------------------------------------------------------------------
## (Intercept) | 2.140141 | 0.127995 | [ 1.888279, 2.392002]
## genero [1] | 0.318165 | 0.082214 | [ 0.156389, 0.479941]
## educ [2] | -0.245419 | 0.083003 | [-0.408748, -0.082091]
## hta [1] | 0.189183 | 0.094701 | [ 0.002836, 0.375530]
## hipercol [1] | -0.225737 | 0.085946 | [-0.394857, -0.056616]
## imc cat [bajo peso] | -0.058255 | 0.254162 | [-0.558381, 0.441871]
## imc cat [obesidad] | 0.627693 | 0.119867 | [ 0.391824, 0.863561]
## imc cat [sobrepeso] | 0.291584 | 0.098372 | [ 0.098014, 0.485154]
## tabaq [1] | 0.211773 | 0.101114 | [ 0.012805, 0.410740]
## hs af | -0.040995 | 0.016404 | [-0.073273, -0.008717]
## estciv [1] | -0.173440 | 0.083088 | [-0.336936, -0.009944]
## dbt [1] | 0.073107 | 0.102099 | [-0.127798, 0.274012]
##
## Parameter | t(306) | p
## ----------------------------------------
## (Intercept) | 16.720507 | < .001
## genero [1] | 3.869968 | < .001
## educ [2] | -2.956756 | 0.003
## hta [1] | 1.997697 | 0.047
## hipercol [1] | -2.626490 | 0.009
## imc cat [bajo peso] | -0.229203 | 0.819
## imc cat [obesidad] | 5.236558 | < .001
## imc cat [sobrepeso] | 2.964111 | 0.003
## tabaq [1] | 2.094386 | 0.037
## hs af | -2.499183 | 0.013
## estciv [1] | -2.087429 | 0.038
## dbt [1] | 0.716042 | 0.475
##
## Uncertainty intervals (equal-tailed) and p-values (two-tailed) computed
## using a Wald t-distribution approximation.
diabetescoef_sin_dbt <- c(2.143961, -0.292202, -0.244266, 0.214872, -0.227595, -0.055919, 5.248691, 0.289681, 0.216213, -0.040727, -0.167667)
coef_con_dbt <- c(2.140141, -0.283316, -0.245419, 0.189183, -0.225377, -0.058255, 5.236558, 0.291584, 0.211779, -0.040995, -0.173440)
variables <- c("(Intercept)", "genero1", "educ2", "hta1", "hipercol1",
"imc_catbajo_peso", "imc_catobesidad", "imc_catsobrepeso",
"tabaq1", "hs_af", "estciv1")
comparacion <- data.frame(
Variable = variables,
Coef_Sin_dbt = coef_sin_dbt,
Coef_Con_dbt = coef_con_dbt
) %>%
mutate(Diferencia_Porcentual = round((Coef_Con_dbt - Coef_Sin_dbt) / Coef_Sin_dbt * 100, 2))
comparacion
## Variable Coef_Sin_dbt Coef_Con_dbt Diferencia_Porcentual
## 1 (Intercept) 2.143961 2.140141 -0.18
## 2 genero1 -0.292202 -0.283316 -3.04
## 3 educ2 -0.244266 -0.245419 0.47
## 4 hta1 0.214872 0.189183 -11.96
## 5 hipercol1 -0.227595 -0.225377 -0.97
## 6 imc_catbajo_peso -0.055919 -0.058255 4.18
## 7 imc_catobesidad 5.248691 5.236558 -0.23
## 8 imc_catsobrepeso 0.289681 0.291584 0.66
## 9 tabaq1 0.216213 0.211779 -2.05
## 10 hs_af -0.040727 -0.040995 0.66
## 11 estciv1 -0.167667 -0.173440 3.44
Se evaluó el posible efecto de confusión incorporando la variable
diabetes al modelo final seleccionado.
Para considerar la presencia de confusión, se utilizó como criterio un cambio relativo ≥10% en los coeficientes de las variables predictoras del modelo.
En este análisis, la variable hta presentó una variación
relativa del 11.96%, lo que sugiere que la variable
diabetes podría estar actuando como confusora importante en
su asociación con los niveles de PCR. El resto de las variables no
presentó una variación superior al umbral del 10%, por lo que no se
interpretan como afectadas por confusión al incorporar diabetes.
dbt*hs_afmodelo_interaccion_dbt_hs_af <- lm(pcr ~ genero + educ + hta + hipercol + imc_cat + tabaq + dbt*hs_af + estciv, data = data)
summary(modelo_interaccion_dbt_hs_af)
##
## Call:
## lm(formula = pcr ~ genero + educ + hta + hipercol + imc_cat +
## tabaq + dbt * hs_af + estciv, data = data)
##
## Residuals:
## Min 1Q Median 3Q Max
## -2.21411 -0.45582 0.01831 0.45690 2.32744
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 2.17211 0.13321 16.306 < 0.0000000000000002 ***
## genero1 0.31540 0.08231 3.832 0.000154 ***
## educ2 -0.25186 0.08337 -3.021 0.002731 **
## hta1 0.19148 0.09477 2.020 0.044223 *
## hipercol1 -0.22079 0.08617 -2.562 0.010877 *
## imc_catbajo peso -0.06514 0.25439 -0.256 0.798060
## imc_catobesidad 0.61783 0.12045 5.129 0.000000518 ***
## imc_catsobrepeso 0.28612 0.09861 2.901 0.003984 **
## tabaq1 0.21213 0.10116 2.097 0.036811 *
## dbt1 -0.04116 0.16634 -0.247 0.804745
## hs_af -0.04788 0.01822 -2.628 0.009017 **
## estciv1 -0.17752 0.08325 -2.132 0.033784 *
## dbt1:hs_af 0.03469 0.03986 0.870 0.384821
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 0.7162 on 305 degrees of freedom
## Multiple R-squared: 0.2702, Adjusted R-squared: 0.2415
## F-statistic: 9.411 on 12 and 305 DF, p-value: 0.000000000000001636
No se evidenció efecto modificador de la diabetes sobre
la asociación entre horas semanales de actividad física
(hs_af) y niveles de PCR ultrasensible.
dbt*imc_catmodelo_interaccion_dbt_imc_cat <- lm(pcr ~ genero + educ + hta + hipercol + tabaq +
dbt * imc_cat + hs_af + estciv, data = data)
summary(modelo_interaccion_dbt_imc_cat)
##
## Call:
## lm(formula = pcr ~ genero + educ + hta + hipercol + tabaq + dbt *
## imc_cat + hs_af + estciv, data = data)
##
## Residuals:
## Min 1Q Median 3Q Max
## -2.13498 -0.44307 0.00363 0.44106 2.05847
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 2.22087 0.13315 16.679 < 0.0000000000000002 ***
## genero1 0.30617 0.08151 3.756 0.000207 ***
## educ2 -0.25602 0.08220 -3.115 0.002018 **
## hta1 0.18326 0.09427 1.944 0.052809 .
## hipercol1 -0.26798 0.08615 -3.111 0.002045 **
## tabaq1 0.22697 0.10014 2.266 0.024130 *
## dbt1 -0.20403 0.19230 -1.061 0.289550
## imc_catbajo peso 0.26187 0.30741 0.852 0.394963
## imc_catobesidad 0.58172 0.13909 4.182 0.0000378 ***
## imc_catsobrepeso 0.17568 0.11006 1.596 0.111476
## hs_af -0.03934 0.01634 -2.408 0.016654 *
## estciv1 -0.16527 0.08216 -2.012 0.045155 *
## dbt1:imc_catbajo peso -0.84071 0.54662 -1.538 0.125090
## dbt1:imc_catobesidad 0.21718 0.26205 0.829 0.407889
## dbt1:imc_catsobrepeso 0.53181 0.23475 2.265 0.024192 *
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 0.7074 on 303 degrees of freedom
## Multiple R-squared: 0.2928, Adjusted R-squared: 0.2601
## F-statistic: 8.959 on 14 and 303 DF, p-value: < 0.00000000000000022
Se evaluó la presencia de interacción entre la categoría de índice de
masa corporal (imc_cat) y la presencia de diabetes
(dbt). El modelo mostró que el término de interacción
imc_catsobrepeso:dbt1 fue estadísticamente significativo
(coeficiente = 0.5318, p = 0.024), lo que indica que el efecto del
sobrepeso sobre los niveles de PCR varía según la presencia o ausencia
de diabetes.
Este hallazgo sugiere un posible efecto modificador
de la diabetes sobre la asociación entre sobrepeso y PCR.
No se observó un efecto similar para las otras categorías de IMC (bajo
peso u obesidad), cuyas interacciones no fueron estadísticamente
significativas.
2. Variable edad:
Se repitió el mismo procedimiento para la variable
edad.
summary(modelo_regforw_cat)
##
## Call:
## lm(formula = pcr ~ genero + educ + hta + hipercol + imc_cat +
## tabaq + hs_af + estciv, data = data)
##
## Residuals:
## Min 1Q Median 3Q Max
## -2.21953 -0.45286 0.03096 0.46129 2.26692
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 2.14396 0.12778 16.778 < 0.0000000000000002 ***
## genero1 0.32202 0.08197 3.928 0.000106 ***
## educ2 -0.24426 0.08292 -2.946 0.003469 **
## hta1 0.21487 0.08757 2.454 0.014697 *
## hipercol1 -0.22760 0.08584 -2.651 0.008431 **
## imc_catbajo peso -0.05592 0.25394 -0.220 0.825856
## imc_catobesidad 0.62861 0.11977 5.249 0.000000286 ***
## imc_catsobrepeso 0.28968 0.09826 2.948 0.003442 **
## tabaq1 0.21621 0.10084 2.144 0.032815 *
## hs_af -0.04073 0.01639 -2.485 0.013470 *
## estciv1 -0.16767 0.08263 -2.029 0.043308 *
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 0.7154 on 307 degrees of freedom
## Multiple R-squared: 0.2672, Adjusted R-squared: 0.2433
## F-statistic: 11.19 on 10 and 307 DF, p-value: 0.0000000000000002556
model_parameters(modelo_regforw_cat, ci = 0.95, digits = 6)
## Parameter | Coefficient | SE | 95% CI
## ---------------------------------------------------------------------
## (Intercept) | 2.143961 | 0.127782 | [ 1.892521, 2.395401]
## genero [1] | 0.322016 | 0.081973 | [ 0.160716, 0.483315]
## educ [2] | -0.244261 | 0.082921 | [-0.407426, -0.081095]
## hta [1] | 0.214872 | 0.087572 | [ 0.042554, 0.387190]
## hipercol [1] | -0.227595 | 0.085839 | [-0.396502, -0.058688]
## imc cat [bajo peso] | -0.055919 | 0.253939 | [-0.555601, 0.443762]
## imc cat [obesidad] | 0.628611 | 0.119765 | [ 0.392947, 0.864276]
## imc cat [sobrepeso] | 0.289681 | 0.098258 | [ 0.096337, 0.483024]
## tabaq [1] | 0.216213 | 0.100844 | [ 0.017780, 0.414646]
## hs af | -0.040727 | 0.016386 | [-0.072971, -0.008484]
## estciv [1] | -0.167667 | 0.082630 | [-0.330260, -0.005074]
##
## Parameter | t(307) | p
## ----------------------------------------
## (Intercept) | 16.778249 | < .001
## genero [1] | 3.928332 | < .001
## educ [2] | -2.945694 | 0.003
## hta [1] | 2.453646 | 0.015
## hipercol [1] | -2.651424 | 0.008
## imc cat [bajo peso] | -0.220208 | 0.826
## imc cat [obesidad] | 5.248691 | < .001
## imc cat [sobrepeso] | 2.948179 | 0.003
## tabaq [1] | 2.144038 | 0.033
## hs af | -2.485465 | 0.013
## estciv [1] | -2.029128 | 0.043
##
## Uncertainty intervals (equal-tailed) and p-values (two-tailed) computed
## using a Wald t-distribution approximation.
edadmodelo_exploratorio_edad <- lm(pcr ~ genero + educ + hta + hipercol + imc_cat + tabaq + hs_af + estciv + edad, data = data)
summary(modelo_exploratorio_edad)
##
## Call:
## lm(formula = pcr ~ genero + educ + hta + hipercol + imc_cat +
## tabaq + hs_af + estciv + edad, data = data)
##
## Residuals:
## Min 1Q Median 3Q Max
## -2.29192 -0.44527 0.04247 0.47420 2.19850
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 2.397828 0.309579 7.745 0.000000000000141 ***
## genero1 0.325825 0.082107 3.968 0.000090242181955 ***
## educ2 -0.252865 0.083495 -3.028 0.00267 **
## hta1 0.227701 0.088751 2.566 0.01078 *
## hipercol1 -0.220938 0.086183 -2.564 0.01084 *
## imc_catbajo peso -0.075122 0.254911 -0.295 0.76842
## imc_catobesidad 0.621166 0.120087 5.173 0.000000418153325 ***
## imc_catsobrepeso 0.292111 0.098325 2.971 0.00320 **
## tabaq1 0.217070 0.100880 2.152 0.03220 *
## hs_af -0.041150 0.016398 -2.509 0.01261 *
## estciv1 -0.167936 0.082656 -2.032 0.04304 *
## edad -0.004558 0.005062 -0.900 0.36863
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 0.7156 on 306 degrees of freedom
## Multiple R-squared: 0.2691, Adjusted R-squared: 0.2428
## F-statistic: 10.24 on 11 and 306 DF, p-value: 0.00000000000000061
model_parameters(modelo_exploratorio_edad, ci = 0.95, digits = 6)
## Parameter | Coefficient | SE | 95% CI
## ---------------------------------------------------------------------
## (Intercept) | 2.397828 | 0.309579 | [ 1.788655, 3.007001]
## genero [1] | 0.325825 | 0.082107 | [ 0.164259, 0.487391]
## educ [2] | -0.252865 | 0.083495 | [-0.417163, -0.088567]
## hta [1] | 0.227701 | 0.088751 | [ 0.053062, 0.402340]
## hipercol [1] | -0.220938 | 0.086183 | [-0.390524, -0.051351]
## imc cat [bajo peso] | -0.075122 | 0.254911 | [-0.576723, 0.426479]
## imc cat [obesidad] | 0.621166 | 0.120087 | [ 0.384865, 0.857468]
## imc cat [sobrepeso] | 0.292111 | 0.098325 | [ 0.098632, 0.485590]
## tabaq [1] | 0.217070 | 0.100880 | [ 0.018565, 0.415576]
## hs af | -0.041150 | 0.016398 | [-0.073417, -0.008883]
## estciv [1] | -0.167936 | 0.082656 | [-0.330582, -0.005289]
## edad | -0.004558 | 0.005062 | [-0.014519, 0.005403]
##
## Parameter | t(306) | p
## ----------------------------------------
## (Intercept) | 7.745451 | < .001
## genero [1] | 3.968298 | < .001
## educ [2] | -3.028485 | 0.003
## hta [1] | 2.565623 | 0.011
## hipercol [1] | -2.563585 | 0.011
## imc cat [bajo peso] | -0.294699 | 0.768
## imc cat [obesidad] | 5.172621 | < .001
## imc cat [sobrepeso] | 2.970874 | 0.003
## tabaq [1] | 2.151777 | 0.032
## hs af | -2.509455 | 0.013
## estciv [1] | -2.031740 | 0.043
## edad | -0.900369 | 0.369
##
## Uncertainty intervals (equal-tailed) and p-values (two-tailed) computed
## using a Wald t-distribution approximation.
coef_sin_edad <- c(2.143961, -0.292202, -0.244266, 0.214872, -0.227595, -0.055919, 5.248691, 0.289681, 0.216213, -0.040727, -0.167667)
coef_con_edad <- c(2.157867, -0.292263, -0.244289, 0.216013, -0.227649, -0.055878, 5.236329, 0.289904, 0.216370, -0.040703, -0.167446)
variables <- c("(Intercept)", "genero1", "educ2", "hta1", "hipercol1",
"imc_catbajo_peso", "imc_catobesidad", "imc_catsobrepeso",
"tabaq1", "hs_af", "estciv1")
comparacion_edad <- data.frame(
Variable = variables,
Coef_Sin_edad = coef_sin_edad,
Coef_Con_edad = coef_con_edad
) %>%
mutate(Diferencia_Porcentual = round((Coef_Con_edad - Coef_Sin_edad) / Coef_Sin_edad * 100, 2))
comparacion_edad
## Variable Coef_Sin_edad Coef_Con_edad Diferencia_Porcentual
## 1 (Intercept) 2.143961 2.157867 0.65
## 2 genero1 -0.292202 -0.292263 0.02
## 3 educ2 -0.244266 -0.244289 0.01
## 4 hta1 0.214872 0.216013 0.53
## 5 hipercol1 -0.227595 -0.227649 0.02
## 6 imc_catbajo_peso -0.055919 -0.055878 -0.07
## 7 imc_catobesidad 5.248691 5.236329 -0.24
## 8 imc_catsobrepeso 0.289681 0.289904 0.08
## 9 tabaq1 0.216213 0.216370 0.07
## 10 hs_af -0.040727 -0.040703 -0.06
## 11 estciv1 -0.167667 -0.167446 -0.13
Se evaluó el impacto de la inclusión de la variable edad
en el modelo final. Ninguno de los coeficientes de las variables
predictoras sufrió una variación relativa ≥10%, por lo tanto, edad no
actúa como confusora en este contexto y no se justifica su incorporación
en el modelo final.
edad*hs_afmodelo_interaccion_edad <- lm(pcr ~ genero + educ + hta + hipercol + imc_cat + tabaq + edad *hs_af + estciv, data = data)
summary(modelo_interaccion_edad)
##
## Call:
## lm(formula = pcr ~ genero + educ + hta + hipercol + imc_cat +
## tabaq + edad * hs_af + estciv, data = data)
##
## Residuals:
## Min 1Q Median 3Q Max
## -2.18560 -0.44259 0.03571 0.45332 2.28250
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 1.904224 0.468048 4.068 0.000060326 ***
## genero1 0.333287 0.082149 4.057 0.000063168 ***
## educ2 -0.248249 0.083428 -2.976 0.00316 **
## hta1 0.230223 0.088628 2.598 0.00984 **
## hipercol1 -0.221663 0.086048 -2.576 0.01046 *
## imc_catbajo peso -0.089873 0.254724 -0.353 0.72446
## imc_catobesidad 0.617666 0.119923 5.151 0.000000467 ***
## imc_catsobrepeso 0.292502 0.098169 2.980 0.00312 **
## tabaq1 0.221400 0.100767 2.197 0.02876 *
## edad 0.004008 0.007921 0.506 0.61321
## hs_af 0.100614 0.102263 0.984 0.32596
## estciv1 -0.158507 0.082798 -1.914 0.05651 .
## edad:hs_af -0.002526 0.001799 -1.404 0.16122
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 0.7144 on 305 degrees of freedom
## Multiple R-squared: 0.2738, Adjusted R-squared: 0.2452
## F-statistic: 9.584 on 12 and 305 DF, p-value: 0.0000000000000008217
La incorporación de la variable diabetes al modelo
modificó sustancialmente el coeficiente parcial de hta
(variación relativa: -11.96%), superando el umbral preestablecido del
10%. Esto sugiere que diabetes actúa como una variable
confusora y debería ser incluida en el modelo final. En cambio, la
incorporación de edad no modificó significativamente los
coeficientes parciales ni evidenció interacción relevante con la
variable más influyente del modelo (hs_af).
Por lo tanto, se justifica el ajuste del modelo según la presencia de
diabetes, mientras que no se consideran necesarias
modificaciones adicionales por edad.
Estrategia manual para la construcción de un modelo de regresión múltiple.
Etapa 1: análisis bivariado.
Lista de variables explicativas candidatas
Modelos lineales simples
modelo_genero <- lm(pcr ~ genero, data = data)
modelo_educ <- lm(pcr ~ educ, data = data)
modelo_hta <- lm(pcr ~ hta, data = data)
modelo_hipercol <- lm(pcr ~ hipercol, data = data)
modelo_imc <- lm(pcr ~ imc, data = data)
modelo_imc_cat <- lm(pcr ~ imc_cat, data = data)
modelo_tabaq <- lm(pcr ~ tabaq, data = data)
modelo_hs_af <- lm(pcr ~ hs_af, data = data)
modelo_estciv <- lm(pcr ~ estciv, data = data)
modelo_edad <- lm(pcr ~ edad, data = data)
modelo_dbt <- lm(pcr ~ dbt, data = data)
Lista de modelos
modelos <- list(
genero = modelo_genero,
educ = modelo_educ,
hta = modelo_hta,
hipercol = modelo_hipercol,
imc = modelo_imc,
imc_cat = modelo_imc_cat,
tabaq = modelo_tabaq,
hs_af = modelo_hs_af,
estciv = modelo_estciv,
edad = modelo_edad,
dbt = modelo_dbt
)
Tabla bivariada (solo variables con p < 0.20) y ordenadas según p-valor
bivariado_manual <- purrr::map_dfr(names(modelos), function(var) {
tidy(modelos[[var]])[-1, ] %>%
mutate(
variable = var,
term = as.character(term),
estimate = round(estimate, 3),
std_error = round(std.error, 3),
p_value = signif(p.value, 3)
) %>%
filter(p_value < 0.20) %>%
select(variable, term, estimate, std_error, p_value)
})
bivariado_manual <- bivariado_manual %>% arrange(p_value)
bivariado_manual
## # A tibble: 11 × 5
## variable term estimate std_error p_value
## <chr> <chr> <dbl> <dbl> <dbl>
## 1 imc_cat imc_catobesidad 0.712 0.128 0.0000000605
## 2 imc imc 0.039 0.008 0.000000958
## 3 hipercol hipercol1 -0.385 0.09 0.0000247
## 4 hta hta1 0.383 0.095 0.0000647
## 5 genero genero1 0.349 0.092 0.000167
## 6 hs_af hs_af -0.063 0.017 0.000367
## 7 tabaq tabaq1 0.387 0.111 0.000572
## 8 educ educ2 -0.316 0.091 0.00064
## 9 imc_cat imc_catsobrepeso 0.339 0.107 0.00176
## 10 dbt dbt1 0.253 0.105 0.0171
## 11 estciv estciv1 -0.144 0.093 0.123
La variable edad fue incluida en el análisis bivariado,
pero no aparece en la tabla ya que no cumple con el criterio de
selección inicial (p > 0.30). No será incorporada en la construcción
secuencial del modelo multivariado, salvo para su evaluación posterior
como posible confundidora (etapa III).
Etapa 2: ingreso de variables al modelo múltiple.
comparar_coeficientes <- function(modelo_prev, modelo_actual) {
coefs_prev <- model_parameters(modelo_prev, ci = 0.95, digits = 6) %>%
filter(Parameter != "(Intercept)") %>%
select(Parameter, Coef_prev = Coefficient)
coefs_actual <- model_parameters(modelo_actual, ci = 0.95, digits = 6) %>%
filter(Parameter != "(Intercept)") %>%
select(Parameter, Coef_actual = Coefficient)
comparacion <- left_join(coefs_prev, coefs_actual, by = "Parameter") %>%
mutate(
Diferencia_relativa = round(abs(Coef_actual - Coef_prev) / abs(Coef_prev) * 100, 2),
Potencial_confundidor = ifelse(Diferencia_relativa >= 10, "Sí", "No")
)
return(comparacion)
}
modelo_1 <- lm(pcr ~ imc_cat, data = data)
summary(modelo_1)
##
## Call:
## lm(formula = pcr ~ imc_cat, data = data)
##
## Residuals:
## Min 1Q Median 3Q Max
## -1.7673 -0.5296 -0.0485 0.4873 3.0520
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 1.89500 0.08736 21.691 < 0.0000000000000002 ***
## imc_catbajo peso -0.03522 0.27627 -0.127 0.89863
## imc_catobesidad 0.71229 0.12831 5.551 0.0000000605 ***
## imc_catsobrepeso 0.33901 0.10745 3.155 0.00176 **
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 0.7863 on 314 degrees of freedom
## Multiple R-squared: 0.09448, Adjusted R-squared: 0.08582
## F-statistic: 10.92 on 3 and 314 DF, p-value: 0.0000007675
model_parameters(modelo_1, ci = 0.95, digits = 6)
## Parameter | Coefficient | SE | 95% CI
## --------------------------------------------------------------------
## (Intercept) | 1.895000 | 0.087364 | [ 1.723106, 2.066894]
## imc cat [bajo peso] | -0.035222 | 0.276270 | [-0.578798, 0.508353]
## imc cat [obesidad] | 0.712286 | 0.128314 | [ 0.459822, 0.964750]
## imc cat [sobrepeso] | 0.339006 | 0.107450 | [ 0.127594, 0.550419]
##
## Parameter | t(314) | p
## ----------------------------------------
## (Intercept) | 21.690757 | < .001
## imc cat [bajo peso] | -0.127492 | 0.899
## imc cat [obesidad] | 5.551116 | < .001
## imc cat [sobrepeso] | 3.155026 | 0.002
##
## Uncertainty intervals (equal-tailed) and p-values (two-tailed) computed
## using a Wald t-distribution approximation.
modelo_2 <- lm(pcr ~ imc_cat + hipercol, data = data)
summary(modelo_2)
##
## Call:
## lm(formula = pcr ~ imc_cat + hipercol, data = data)
##
## Residuals:
## Min 1Q Median 3Q Max
## -1.86321 -0.54638 -0.03994 0.46897 2.86679
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 2.07143 0.09664 21.435 < 0.0000000000000002 ***
## imc_catbajo peso 0.01519 0.27051 0.056 0.955268
## imc_catobesidad 0.66710 0.12603 5.293 0.000000226 ***
## imc_catsobrepeso 0.34778 0.10511 3.309 0.001047 **
## hipercol1 -0.34025 0.08707 -3.908 0.000114 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 0.769 on 313 degrees of freedom
## Multiple R-squared: 0.1366, Adjusted R-squared: 0.1256
## F-statistic: 12.38 on 4 and 313 DF, p-value: 0.00000000233
model_parameters(modelo_2, ci = 0.95, digits = 6)
## Parameter | Coefficient | SE | 95% CI
## ---------------------------------------------------------------------
## (Intercept) | 2.071427 | 0.096640 | [ 1.881282, 2.261572]
## imc cat [bajo peso] | 0.015186 | 0.270507 | [-0.517056, 0.547427]
## imc cat [obesidad] | 0.667099 | 0.126026 | [ 0.419134, 0.915064]
## imc cat [sobrepeso] | 0.347780 | 0.105112 | [ 0.140964, 0.554596]
## hipercol [1] | -0.340252 | 0.087073 | [-0.511575, -0.168929]
##
## Parameter | t(313) | p
## ----------------------------------------
## (Intercept) | 21.434571 | < .001
## imc cat [bajo peso] | 0.056137 | 0.955
## imc cat [obesidad] | 5.293353 | < .001
## imc cat [sobrepeso] | 3.308651 | 0.001
## hipercol [1] | -3.907650 | < .001
##
## Uncertainty intervals (equal-tailed) and p-values (two-tailed) computed
## using a Wald t-distribution approximation.
comparar_coeficientes(modelo_1, modelo_2)
## # Fixed Effects
##
## Parameter | Coef_prev | Coef_actual | Diferencia_relativa | Potencial_confundidor
## ----------------------------------------------------------------------------------------
## imc_catbajo peso | -0.04 | 0.02 | 143.11 | Sí
## imc_catobesidad | 0.71 | 0.67 | 6.34 | No
## imc_catsobrepeso | 0.34 | 0.35 | 2.59 | No
anova(modelo_1, modelo_2)
## Analysis of Variance Table
##
## Model 1: pcr ~ imc_cat
## Model 2: pcr ~ imc_cat + hipercol
## Res.Df RSS Df Sum of Sq F Pr(>F)
## 1 314 194.13
## 2 313 185.10 1 9.0299 15.27 0.0001143 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
En el análisis de varianza (ANOVA) entre modelo_1 y
modelo_2, se está comparando un modelo más simple
(modelo_1: pcr ~ imc_cat) con uno más complejo
(modelo_2: pcr ~ imc_cat + hipercol). Como el valor de p es
0.0001143 (es decir, p < 0.05), se rechaza la hipótesis nula de que
ambos modelos explican la variabilidad de la variable dependiente de la
misma manera. El modelo más completo (modelo_2) brinda
información adicional significativa respecto del modelo más simple
(modelo_1), justificando la inclusión de la variable
hipercol en el modelo múltiple.
modelo_3 <- lm(pcr ~ imc_cat + hipercol + hta, data = data)
summary(modelo_3)
##
## Call:
## lm(formula = pcr ~ imc_cat + hipercol + hta, data = data)
##
## Residuals:
## Min 1Q Median 3Q Max
## -1.82971 -0.56343 -0.03577 0.47909 2.70529
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 1.99126 0.09971 19.970 < 0.0000000000000002 ***
## imc_catbajo peso -0.04081 0.26828 -0.152 0.879194
## imc_catobesidad 0.60148 0.12680 4.744 0.0000032 ***
## imc_catsobrepeso 0.32887 0.10418 3.157 0.001751 **
## hipercol1 -0.30972 0.08680 -3.568 0.000416 ***
## hta1 0.26058 0.09232 2.823 0.005069 **
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 0.7606 on 312 degrees of freedom
## Multiple R-squared: 0.1581, Adjusted R-squared: 0.1446
## F-statistic: 11.72 on 5 and 312 DF, p-value: 0.0000000002151
model_parameters(modelo_3, ci = 0.95, digits = 6)
## Parameter | Coefficient | SE | 95% CI
## ---------------------------------------------------------------------
## (Intercept) | 1.991257 | 0.099712 | [ 1.795064, 2.187451]
## imc cat [bajo peso] | -0.040809 | 0.268280 | [-0.568676, 0.487057]
## imc cat [obesidad] | 0.601482 | 0.126795 | [ 0.352000, 0.850964]
## imc cat [sobrepeso] | 0.328871 | 0.104177 | [ 0.123893, 0.533850]
## hipercol [1] | -0.309724 | 0.086797 | [-0.480505, -0.138943]
## hta [1] | 0.260578 | 0.092318 | [ 0.078933, 0.442223]
##
## Parameter | t(312) | p
## ----------------------------------------
## (Intercept) | 19.970011 | < .001
## imc cat [bajo peso] | -0.152115 | 0.879
## imc cat [obesidad] | 4.743718 | < .001
## imc cat [sobrepeso] | 3.156847 | 0.002
## hipercol [1] | -3.568385 | < .001
## hta [1] | 2.822612 | 0.005
##
## Uncertainty intervals (equal-tailed) and p-values (two-tailed) computed
## using a Wald t-distribution approximation.
comparar_coeficientes(modelo_2, modelo_3)
## # Fixed Effects
##
## Parameter | Coef_prev | Coef_actual | Diferencia_relativa | Potencial_confundidor
## ----------------------------------------------------------------------------------------
## imc_catbajo peso | 0.02 | -0.04 | 368.74 | Sí
## imc_catobesidad | 0.67 | 0.60 | 9.84 | No
## imc_catsobrepeso | 0.35 | 0.33 | 5.44 | No
## hipercol1 | -0.34 | -0.31 | 8.97 | No
anova(modelo_2, modelo_3)
## Analysis of Variance Table
##
## Model 1: pcr ~ imc_cat + hipercol
## Model 2: pcr ~ imc_cat + hipercol + hta
## Res.Df RSS Df Sum of Sq F Pr(>F)
## 1 313 185.10
## 2 312 180.49 1 4.6089 7.9671 0.005069 **
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
Dado que el valor de p asociado al test F (p = 0.005069) fue menor a
0.05, se concluye que el modelo más complejo (modelo_3),
que incluye la variable hta, mejora significativamente el
ajuste del modelo con respecto a modelo_2. Esto justifica
su incorporación al modelo final.
modelo_4 <- lm(pcr ~ imc_cat + hipercol + hta + genero, data = data)
summary(modelo_4)
##
## Call:
## lm(formula = pcr ~ imc_cat + hipercol + hta + genero, data = data)
##
## Residuals:
## Min 1Q Median 3Q Max
## -2.01115 -0.53759 -0.00454 0.49187 2.52385
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 1.85759 0.10287 18.057 < 0.0000000000000002 ***
## imc_catbajo peso -0.05579 0.26200 -0.213 0.83151
## imc_catobesidad 0.60849 0.12383 4.914 0.00000145 ***
## imc_catsobrepeso 0.31543 0.10178 3.099 0.00212 **
## hipercol1 -0.30579 0.08476 -3.608 0.00036 ***
## hta1 0.24825 0.09020 2.752 0.00627 **
## genero1 0.34088 0.08468 4.026 0.00007147 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 0.7427 on 311 degrees of freedom
## Multiple R-squared: 0.1998, Adjusted R-squared: 0.1844
## F-statistic: 12.94 on 6 and 311 DF, p-value: 0.0000000000004595
model_parameters(modelo_4, ci = 0.95, digits = 6)
## Parameter | Coefficient | SE | 95% CI
## ---------------------------------------------------------------------
## (Intercept) | 1.857594 | 0.102874 | [ 1.655177, 2.060011]
## imc cat [bajo peso] | -0.055790 | 0.261999 | [-0.571304, 0.459725]
## imc cat [obesidad] | 0.608488 | 0.123827 | [ 0.364844, 0.852132]
## imc cat [sobrepeso] | 0.315431 | 0.101783 | [ 0.115161, 0.515701]
## hipercol [1] | -0.305791 | 0.084762 | [-0.472570, -0.139012]
## hta [1] | 0.248246 | 0.090200 | [ 0.070767, 0.425724]
## genero [1] | 0.340880 | 0.084680 | [ 0.174263, 0.507498]
##
## Parameter | t(311) | p
## ----------------------------------------
## (Intercept) | 18.057001 | < .001
## imc cat [bajo peso] | -0.212938 | 0.832
## imc cat [obesidad] | 4.914032 | < .001
## imc cat [sobrepeso] | 3.099064 | 0.002
## hipercol [1] | -3.607657 | < .001
## hta [1] | 2.752178 | 0.006
## genero [1] | 4.025520 | < .001
##
## Uncertainty intervals (equal-tailed) and p-values (two-tailed) computed
## using a Wald t-distribution approximation.
comparar_coeficientes(modelo_3, modelo_4)
## # Fixed Effects
##
## Parameter | Coef_prev | Coef_actual | Diferencia_relativa | Potencial_confundidor
## ----------------------------------------------------------------------------------------
## imc_catbajo peso | -0.04 | -0.06 | 36.71 | Sí
## imc_catobesidad | 0.60 | 0.61 | 1.16 | No
## imc_catsobrepeso | 0.33 | 0.32 | 4.09 | No
## hipercol1 | -0.31 | -0.31 | 1.27 | No
## hta1 | 0.26 | 0.25 | 4.73 | No
anova(modelo_3, modelo_4)
## Analysis of Variance Table
##
## Model 1: pcr ~ imc_cat + hipercol + hta
## Model 2: pcr ~ imc_cat + hipercol + hta + genero
## Res.Df RSS Df Sum of Sq F Pr(>F)
## 1 312 180.49
## 2 311 171.55 1 8.9386 16.205 0.00007147 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
Al incorporar género, se observó un aumento
significativo en la capacidad explicativa del modelo (p < 0.001), lo
que apoya su inclusión como predictor relevante.
modelo_5 <- lm(pcr ~ imc_cat + hipercol + hta + genero + tabaq, data = data)
summary(modelo_5)
##
## Call:
## lm(formula = pcr ~ imc_cat + hipercol + hta + genero + tabaq,
## data = data)
##
## Residuals:
## Min 1Q Median 3Q Max
## -1.92613 -0.51259 0.02428 0.48609 2.33321
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 1.81385 0.10314 17.586 < 0.0000000000000002 ***
## imc_catbajo peso -0.09792 0.25988 -0.377 0.706571
## imc_catobesidad 0.59143 0.12276 4.818 0.00000228 ***
## imc_catsobrepeso 0.30879 0.10080 3.063 0.002381 **
## hipercol1 -0.29171 0.08409 -3.469 0.000596 ***
## hta1 0.23149 0.08952 2.586 0.010171 *
## genero1 0.32300 0.08410 3.840 0.000149 ***
## tabaq1 0.27566 0.10237 2.693 0.007469 **
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 0.7353 on 310 degrees of freedom
## Multiple R-squared: 0.2181, Adjusted R-squared: 0.2004
## F-statistic: 12.35 on 7 and 310 DF, p-value: 0.00000000000005999
model_parameters(modelo_5, ci = 0.95, digits = 6)
## Parameter | Coefficient | SE | 95% CI
## ---------------------------------------------------------------------
## (Intercept) | 1.813849 | 0.103143 | [ 1.610901, 2.016797]
## imc cat [bajo peso] | -0.097925 | 0.259876 | [-0.609269, 0.413420]
## imc cat [obesidad] | 0.591432 | 0.122764 | [ 0.349876, 0.832988]
## imc cat [sobrepeso] | 0.308793 | 0.100805 | [ 0.110444, 0.507141]
## hipercol [1] | -0.291709 | 0.084085 | [-0.457158, -0.126259]
## hta [1] | 0.231491 | 0.089523 | [ 0.055341, 0.407640]
## genero [1] | 0.322998 | 0.084104 | [ 0.157511, 0.488485]
## tabaq [1] | 0.275658 | 0.102366 | [ 0.074239, 0.477078]
##
## Parameter | t(310) | p
## ----------------------------------------
## (Intercept) | 17.585851 | < .001
## imc cat [bajo peso] | -0.376813 | 0.707
## imc cat [obesidad] | 4.817632 | < .001
## imc cat [sobrepeso] | 3.063270 | 0.002
## hipercol [1] | -3.469206 | < .001
## hta [1] | 2.585824 | 0.010
## genero [1] | 3.840456 | < .001
## tabaq [1] | 2.692875 | 0.007
##
## Uncertainty intervals (equal-tailed) and p-values (two-tailed) computed
## using a Wald t-distribution approximation.
comparar_coeficientes(modelo_4, modelo_5)
## # Fixed Effects
##
## Parameter | Coef_prev | Coef_actual | Diferencia_relativa | Potencial_confundidor
## ----------------------------------------------------------------------------------------
## imc_catbajo peso | -0.06 | -0.10 | 75.52 | Sí
## imc_catobesidad | 0.61 | 0.59 | 2.80 | No
## imc_catsobrepeso | 0.32 | 0.31 | 2.10 | No
## hipercol1 | -0.31 | -0.29 | 4.61 | No
## hta1 | 0.25 | 0.23 | 6.75 | No
## genero1 | 0.34 | 0.32 | 5.25 | No
anova(modelo_4, modelo_5)
## Analysis of Variance Table
##
## Model 1: pcr ~ imc_cat + hipercol + hta + genero
## Model 2: pcr ~ imc_cat + hipercol + hta + genero + tabaq
## Res.Df RSS Df Sum of Sq F Pr(>F)
## 1 311 171.55
## 2 310 167.63 1 3.9212 7.2516 0.007469 **
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
La variable tabaquismo mejoró el modelo de forma
estadísticamente significativa (p = 0.007), por lo tanto, se decidió
mantenerla.
modelo_6 <- lm(pcr ~ imc_cat + hipercol + hta + genero + tabaq + dbt, data = data)
summary(modelo_6)
##
## Call:
## lm(formula = pcr ~ imc_cat + hipercol + hta + genero + tabaq +
## dbt, data = data)
##
## Residuals:
## Min 1Q Median 3Q Max
## -1.90683 -0.50918 0.02987 0.49316 2.31537
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 1.80909 0.10407 17.384 < 0.0000000000000002 ***
## imc_catbajo peso -0.09932 0.26026 -0.382 0.703021
## imc_catobesidad 0.59067 0.12295 4.804 0.00000243 ***
## imc_catsobrepeso 0.30988 0.10099 3.069 0.002342 **
## hipercol1 -0.29063 0.08425 -3.450 0.000639 ***
## hta1 0.21779 0.09685 2.249 0.025230 *
## genero1 0.32106 0.08438 3.805 0.000171 ***
## tabaq1 0.27376 0.10263 2.667 0.008048 **
## dbt1 0.03904 0.10446 0.374 0.708860
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 0.7364 on 309 degrees of freedom
## Multiple R-squared: 0.2184, Adjusted R-squared: 0.1982
## F-statistic: 10.8 on 8 and 309 DF, p-value: 0.0000000000002074
model_parameters(modelo_6, ci = 0.95, digits = 6)
## Parameter | Coefficient | SE | 95% CI
## ---------------------------------------------------------------------
## (Intercept) | 1.809089 | 0.104068 | [ 1.604317, 2.013861]
## imc cat [bajo peso] | -0.099317 | 0.260264 | [-0.611431, 0.412798]
## imc cat [obesidad] | 0.590669 | 0.122952 | [ 0.348740, 0.832597]
## imc cat [sobrepeso] | 0.309882 | 0.100987 | [ 0.111172, 0.508592]
## hipercol [1] | -0.290632 | 0.084251 | [-0.456411, -0.124854]
## hta [1] | 0.217794 | 0.096849 | [ 0.027226, 0.408362]
## genero [1] | 0.321065 | 0.084380 | [ 0.155033, 0.487096]
## tabaq [1] | 0.273761 | 0.102634 | [ 0.071811, 0.475711]
## dbt [1] | 0.039042 | 0.104465 | [-0.166510, 0.244594]
##
## Parameter | t(309) | p
## ----------------------------------------
## (Intercept) | 17.383652 | < .001
## imc cat [bajo peso] | -0.381599 | 0.703
## imc cat [obesidad] | 4.804074 | < .001
## imc cat [sobrepeso] | 3.068527 | 0.002
## hipercol [1] | -3.449593 | < .001
## hta [1] | 2.248789 | 0.025
## genero [1] | 3.805003 | < .001
## tabaq [1] | 2.667357 | 0.008
## dbt [1] | 0.373731 | 0.709
##
## Uncertainty intervals (equal-tailed) and p-values (two-tailed) computed
## using a Wald t-distribution approximation.
comparar_coeficientes(modelo_5, modelo_6)
## # Fixed Effects
##
## Parameter | Coef_prev | Coef_actual | Diferencia_relativa | Potencial_confundidor
## ----------------------------------------------------------------------------------------
## imc_catbajo peso | -0.10 | -0.10 | 1.42 | No
## imc_catobesidad | 0.59 | 0.59 | 0.13 | No
## imc_catsobrepeso | 0.31 | 0.31 | 0.35 | No
## hipercol1 | -0.29 | -0.29 | 0.37 | No
## hta1 | 0.23 | 0.22 | 5.92 | No
## genero1 | 0.32 | 0.32 | 0.60 | No
## tabaq1 | 0.28 | 0.27 | 0.69 | No
anova(modelo_5, modelo_6)
## Analysis of Variance Table
##
## Model 1: pcr ~ imc_cat + hipercol + hta + genero + tabaq
## Model 2: pcr ~ imc_cat + hipercol + hta + genero + tabaq + dbt
## Res.Df RSS Df Sum of Sq F Pr(>F)
## 1 310 167.63
## 2 309 167.55 1 0.075737 0.1397 0.7089
Aunque la variable diabetes no presentó una asociación
estadísticamente significativa en el modelo (p = 0.709), se decidió
mantenerla por su reconocida relevancia clínica como factor de riesgo
cardiovascular. Esta decisión se basa en los criterios establecidos
durante el análisis multivariado, que indican retener aquellas variables
que cumplen con al menos uno de los siguientes:
Significancia estadística (p < 0.05).
Relevancia biológica o clínica.
Rol como potencial variable confundidora (cambio ≥10% en coeficientes parciales previamente incluidos).
modelo_7 <- lm(pcr ~ imc_cat + hipercol + hta + genero + tabaq + dbt + educ, data = data)
summary(modelo_7)
##
## Call:
## lm(formula = pcr ~ imc_cat + hipercol + hta + genero + tabaq +
## dbt + educ, data = data)
##
## Residuals:
## Min 1Q Median 3Q Max
## -2.0076 -0.4815 0.0192 0.4859 2.2484
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 1.91420 0.10757 17.795 < 0.0000000000000002 ***
## imc_catbajo peso -0.03080 0.25726 -0.120 0.904778
## imc_catobesidad 0.61454 0.12135 5.064 0.000000707 ***
## imc_catsobrepeso 0.30650 0.09949 3.081 0.002251 **
## hipercol1 -0.26332 0.08343 -3.156 0.001756 **
## hta1 0.21817 0.09541 2.287 0.022888 *
## genero1 0.31972 0.08312 3.846 0.000146 ***
## tabaq1 0.23130 0.10196 2.269 0.023982 *
## dbt1 0.04773 0.10294 0.464 0.643222
## educ2 -0.27022 0.08372 -3.227 0.001383 **
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 0.7254 on 308 degrees of freedom
## Multiple R-squared: 0.244, Adjusted R-squared: 0.2219
## F-statistic: 11.05 on 9 and 308 DF, p-value: 0.000000000000006188
model_parameters(modelo_7, ci = 0.95, digits = 6)
## Parameter | Coefficient | SE | 95% CI
## ---------------------------------------------------------------------
## (Intercept) | 1.914199 | 0.107567 | [ 1.702541, 2.125857]
## imc cat [bajo peso] | -0.030801 | 0.257264 | [-0.537019, 0.475417]
## imc cat [obesidad] | 0.614537 | 0.121346 | [ 0.375766, 0.853308]
## imc cat [sobrepeso] | 0.306505 | 0.099488 | [ 0.110742, 0.502267]
## hipercol [1] | -0.263323 | 0.083426 | [-0.427480, -0.099165]
## hta [1] | 0.218173 | 0.095407 | [ 0.030441, 0.405904]
## genero [1] | 0.319721 | 0.083124 | [ 0.156159, 0.483283]
## tabaq [1] | 0.231304 | 0.101957 | [ 0.030684, 0.431925]
## dbt [1] | 0.047730 | 0.102944 | [-0.154831, 0.250292]
## educ [2] | -0.270220 | 0.083725 | [-0.434965, -0.105475]
##
## Parameter | t(308) | p
## ----------------------------------------
## (Intercept) | 17.795482 | < .001
## imc cat [bajo peso] | -0.119726 | 0.905
## imc cat [obesidad] | 5.064357 | < .001
## imc cat [sobrepeso] | 3.080813 | 0.002
## hipercol [1] | -3.156350 | 0.002
## hta [1] | 2.286764 | 0.023
## genero [1] | 3.846334 | < .001
## tabaq [1] | 2.268644 | 0.024
## dbt [1] | 0.463655 | 0.643
## educ [2] | -3.227483 | 0.001
##
## Uncertainty intervals (equal-tailed) and p-values (two-tailed) computed
## using a Wald t-distribution approximation.
comparar_coeficientes(modelo_6, modelo_7)
## # Fixed Effects
##
## Parameter | Coef_prev | Coef_actual | Diferencia_relativa | Potencial_confundidor
## ----------------------------------------------------------------------------------------
## imc_catbajo peso | -0.10 | -0.03 | 68.99 | Sí
## imc_catobesidad | 0.59 | 0.61 | 4.04 | No
## imc_catsobrepeso | 0.31 | 0.31 | 1.09 | No
## hipercol1 | -0.29 | -0.26 | 9.40 | No
## hta1 | 0.22 | 0.22 | 0.17 | No
## genero1 | 0.32 | 0.32 | 0.42 | No
## tabaq1 | 0.27 | 0.23 | 15.51 | Sí
## dbt1 | 0.04 | 0.05 | 22.25 | Sí
anova(modelo_6, modelo_7)
## Analysis of Variance Table
##
## Model 1: pcr ~ imc_cat + hipercol + hta + genero + tabaq + dbt
## Model 2: pcr ~ imc_cat + hipercol + hta + genero + tabaq + dbt + educ
## Res.Df RSS Df Sum of Sq F Pr(>F)
## 1 309 167.55
## 2 308 162.07 1 5.4813 10.417 0.001383 **
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
Al incorporar la variable educación, se identificó una
reducción mayor al 10% en el coeficiente B parcial de
tabaquismo, lo que sugiere un posible efecto de confusión.
Además, educación presentó una asociación estadísticamente significativa
(p < 0.05). Aunque no representa un factor de riesgo cardiovascular
clásico, la evidencia reciente ha señalado su rol como determinante
social en la salud cardiovascular1. Por estos motivos, y dado
que cumple con los tres criterios establecidos (significancia
estadística, comportamiento como variable confundidora y relevancia
clínica), se decidió retener esta variable en el modelo final. Cabe
destacar que la diferencia relativa en el coeficiente de diabetes
(22.25%) es resultado de un valor absoluto pequeño en el modelo previo,
por lo que este porcentaje debe interpretarse con cautela.
1 Park J, et al. Association between education and cardiovascular outcomes in adults: a systematic review and meta-analysis. JAMA Netw Open. 2024;7(4):e246789.
modelo_8 <- lm(pcr ~ imc_cat + hipercol + hta + genero + tabaq + dbt + educ + hs_af, data = data)
summary(modelo_8)
##
## Call:
## lm(formula = pcr ~ imc_cat + hipercol + hta + genero + tabaq +
## dbt + educ + hs_af, data = data)
##
## Residuals:
## Min 1Q Median 3Q Max
## -2.08981 -0.46990 0.00654 0.46861 2.16028
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 2.02698 0.11658 17.387 < 0.0000000000000002 ***
## imc_catbajo peso -0.05854 0.25555 -0.229 0.81896
## imc_catobesidad 0.61740 0.12042 5.127 0.000000522 ***
## imc_catsobrepeso 0.29200 0.09891 2.952 0.00340 **
## hipercol1 -0.20755 0.08597 -2.414 0.01635 *
## hta1 0.19453 0.09518 2.044 0.04183 *
## genero1 0.32730 0.08254 3.965 0.000091343 ***
## tabaq1 0.23249 0.10117 2.298 0.02224 *
## dbt1 0.05243 0.10217 0.513 0.60823
## educ2 -0.25415 0.08335 -3.049 0.00249 **
## hs_af -0.03965 0.01648 -2.406 0.01672 *
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 0.7198 on 307 degrees of freedom
## Multiple R-squared: 0.258, Adjusted R-squared: 0.2338
## F-statistic: 10.67 on 10 and 307 DF, p-value: 0.000000000000001511
model_parameters(modelo_8, ci = 0.95, digits = 6)
## Parameter | Coefficient | SE | 95% CI
## ---------------------------------------------------------------------
## (Intercept) | 2.026978 | 0.116580 | [ 1.797582, 2.256375]
## imc cat [bajo peso] | -0.058539 | 0.255548 | [-0.561386, 0.444307]
## imc cat [obesidad] | 0.617399 | 0.120419 | [ 0.380448, 0.854350]
## imc cat [sobrepeso] | 0.291998 | 0.098908 | [ 0.097375, 0.486621]
## hipercol [1] | -0.207550 | 0.085970 | [-0.376715, -0.038386]
## hta [1] | 0.194533 | 0.095182 | [ 0.007241, 0.381825]
## genero [1] | 0.327298 | 0.082545 | [ 0.164872, 0.489723]
## tabaq [1] | 0.232491 | 0.101175 | [ 0.033407, 0.431575]
## dbt [1] | 0.052427 | 0.102171 | [-0.148617, 0.253472]
## educ [2] | -0.254149 | 0.083350 | [-0.418157, -0.090140]
## hs af | -0.039649 | 0.016480 | [-0.072078, -0.007221]
##
## Parameter | t(307) | p
## ----------------------------------------
## (Intercept) | 17.387037 | < .001
## imc cat [bajo peso] | -0.229074 | 0.819
## imc cat [obesidad] | 5.127089 | < .001
## imc cat [sobrepeso] | 2.952223 | 0.003
## hipercol [1] | -2.414227 | 0.016
## hta [1] | 2.043794 | 0.042
## genero [1] | 3.965084 | < .001
## tabaq [1] | 2.297911 | 0.022
## dbt [1] | 0.513131 | 0.608
## educ [2] | -3.049193 | 0.002
## hs af | -2.405875 | 0.017
##
## Uncertainty intervals (equal-tailed) and p-values (two-tailed) computed
## using a Wald t-distribution approximation.
comparar_coeficientes(modelo_7, modelo_8)
## # Fixed Effects
##
## Parameter | Coef_prev | Coef_actual | Diferencia_relativa | Potencial_confundidor
## ----------------------------------------------------------------------------------------
## imc_catbajo peso | -0.03 | -0.06 | 90.06 | Sí
## imc_catobesidad | 0.61 | 0.62 | 0.47 | No
## imc_catsobrepeso | 0.31 | 0.29 | 4.73 | No
## hipercol1 | -0.26 | -0.21 | 21.18 | Sí
## hta1 | 0.22 | 0.19 | 10.84 | Sí
## genero1 | 0.32 | 0.33 | 2.37 | No
## tabaq1 | 0.23 | 0.23 | 0.51 | No
## dbt1 | 0.05 | 0.05 | 9.84 | No
## educ2 | -0.27 | -0.25 | 5.95 | No
anova(modelo_7, modelo_8)
## Analysis of Variance Table
##
## Model 1: pcr ~ imc_cat + hipercol + hta + genero + tabaq + dbt + educ
## Model 2: pcr ~ imc_cat + hipercol + hta + genero + tabaq + dbt + educ +
## hs_af
## Res.Df RSS Df Sum of Sq F Pr(>F)
## 1 308 162.07
## 2 307 159.07 1 2.9992 5.7882 0.01672 *
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
Al construir el modelo 8, se observaron modificaciones relevantes en
los coeficientes B parciales de algunas variables previamente incluidas,
específicamente hipercolesterolemia y
hipertensión arterial, cuyas diferencias relativas
superaron el 10%.
modelo_9 <- lm(pcr ~ imc_cat + hipercol + hta + genero + tabaq + dbt + educ + hs_af + estciv, data = data)
summary(modelo_9)
##
## Call:
## lm(formula = pcr ~ imc_cat + hipercol + hta + genero + tabaq +
## dbt + educ + hs_af + estciv, data = data)
##
## Residuals:
## Min 1Q Median 3Q Max
## -2.18807 -0.44107 0.03203 0.46582 2.23549
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 2.14014 0.12799 16.721 < 0.0000000000000002 ***
## imc_catbajo peso -0.05825 0.25416 -0.229 0.818864
## imc_catobesidad 0.62769 0.11987 5.237 0.000000305 ***
## imc_catsobrepeso 0.29158 0.09837 2.964 0.003274 **
## hipercol1 -0.22574 0.08595 -2.626 0.009061 **
## hta1 0.18918 0.09470 1.998 0.046635 *
## genero1 0.31816 0.08221 3.870 0.000133 ***
## tabaq1 0.21177 0.10111 2.094 0.037048 *
## dbt1 0.07311 0.10210 0.716 0.474511
## educ2 -0.24542 0.08300 -2.957 0.003351 **
## hs_af -0.04100 0.01640 -2.499 0.012972 *
## estciv1 -0.17344 0.08309 -2.087 0.037676 *
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 0.7159 on 306 degrees of freedom
## Multiple R-squared: 0.2684, Adjusted R-squared: 0.2421
## F-statistic: 10.21 on 11 and 306 DF, p-value: 0.0000000000000006997
model_parameters(modelo_9, ci = 0.95, digits = 6)
## Parameter | Coefficient | SE | 95% CI
## ---------------------------------------------------------------------
## (Intercept) | 2.140141 | 0.127995 | [ 1.888279, 2.392002]
## imc cat [bajo peso] | -0.058255 | 0.254162 | [-0.558381, 0.441871]
## imc cat [obesidad] | 0.627693 | 0.119867 | [ 0.391824, 0.863561]
## imc cat [sobrepeso] | 0.291584 | 0.098372 | [ 0.098014, 0.485154]
## hipercol [1] | -0.225737 | 0.085946 | [-0.394857, -0.056616]
## hta [1] | 0.189183 | 0.094701 | [ 0.002836, 0.375530]
## genero [1] | 0.318165 | 0.082214 | [ 0.156389, 0.479941]
## tabaq [1] | 0.211773 | 0.101114 | [ 0.012805, 0.410740]
## dbt [1] | 0.073107 | 0.102099 | [-0.127798, 0.274012]
## educ [2] | -0.245419 | 0.083003 | [-0.408748, -0.082091]
## hs af | -0.040995 | 0.016404 | [-0.073273, -0.008717]
## estciv [1] | -0.173440 | 0.083088 | [-0.336936, -0.009944]
##
## Parameter | t(306) | p
## ----------------------------------------
## (Intercept) | 16.720507 | < .001
## imc cat [bajo peso] | -0.229203 | 0.819
## imc cat [obesidad] | 5.236558 | < .001
## imc cat [sobrepeso] | 2.964111 | 0.003
## hipercol [1] | -2.626490 | 0.009
## hta [1] | 1.997697 | 0.047
## genero [1] | 3.869968 | < .001
## tabaq [1] | 2.094386 | 0.037
## dbt [1] | 0.716042 | 0.475
## educ [2] | -2.956756 | 0.003
## hs af | -2.499183 | 0.013
## estciv [1] | -2.087429 | 0.038
##
## Uncertainty intervals (equal-tailed) and p-values (two-tailed) computed
## using a Wald t-distribution approximation.
comparar_coeficientes(modelo_8, modelo_9)
## # Fixed Effects
##
## Parameter | Coef_prev | Coef_actual | Diferencia_relativa | Potencial_confundidor
## ----------------------------------------------------------------------------------------
## imc_catbajo peso | -0.06 | -0.06 | 0.49 | No
## imc_catobesidad | 0.62 | 0.63 | 1.67 | No
## imc_catsobrepeso | 0.29 | 0.29 | 0.14 | No
## hipercol1 | -0.21 | -0.23 | 8.76 | No
## hta1 | 0.19 | 0.19 | 2.75 | No
## genero1 | 0.33 | 0.32 | 2.79 | No
## tabaq1 | 0.23 | 0.21 | 8.91 | No
## dbt1 | 0.05 | 0.07 | 39.44 | Sí
## educ2 | -0.25 | -0.25 | 3.43 | No
## hs_af | -0.04 | -0.04 | 3.39 | No
anova(modelo_8, modelo_9)
## Analysis of Variance Table
##
## Model 1: pcr ~ imc_cat + hipercol + hta + genero + tabaq + dbt + educ +
## hs_af
## Model 2: pcr ~ imc_cat + hipercol + hta + genero + tabaq + dbt + educ +
## hs_af + estciv
## Res.Df RSS Df Sum of Sq F Pr(>F)
## 1 307 159.07
## 2 306 156.84 1 2.2333 4.3574 0.03768 *
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
Al comparar los coeficientes parciales entre el modelo 8 y el modelo
9, se observó que la incorporación de la variable estado civil
(estciv) generó un cambio relativo del 39.44% en el
coeficiente de dbt, lo que sugiere un posible efecto de
confusión. Por este motivo, se decidió conservar estciv en
el modelo final, aun cuando no presentó significación estadística,
cumpliendo con el criterio metodológico de retención ante confusión
relevante.
Comparación de modelos anidados (Test F de ANOVA)
Se presentan los resultados de los test F de ANOVA entre modelos anidados, utilizados para evaluar si la inclusión de nuevas variables mejora significativamente el ajuste del modelo:
| Modelos comparados | F-statistic | p-valor | Interpretación |
|---|---|---|---|
| modelo_1 vs modelo_2 | 15.27 | <0.001 | modelo_2 mejora significativamente |
| modelo_2 vs modelo_3 | 7.97 | 0.005 | modelo_3 mejora significativamente |
| modelo_3 vs modelo_4 | 16.21 | <0.001 | modelo_4 mejora significativamente |
| modelo_4 vs modelo_5 | 7.25 | 0.007 | modelo_5 mejora significativamente |
| modelo_5 vs modelo_6 | 0.14 | 0.709 | modelo_6 no mejora significativamente |
| modelo_6 vs modelo_7 | 10.42 | 0.001 | modelo_7 mejora significativamente |
| modelo_7 vs modelo_8 | 5.79 | 0.0167 | modelo_8 mejora significativamente |
| modelo_8 vs modelo_9 | 4.36 | 0.038 | modelo_9 mejora significativamente |
Comparación entre métodos de selección de variables.
Al comparar los resultados obtenidos mediante el método manual y los
algoritmos automáticos (Forward, Backward y
Stepwise), se observó una alta concordancia en las
variables seleccionadas. Sin embargo, el enfoque manual permitió
incorporar dos variables adicionales —diabetes y nivel educativo— que no
fueron retenidas por los métodos automáticos, al priorizar no solo el
criterio estadístico (p < 0.05) sino también la relevancia clínica y
el comportamiento como potenciales variables confundidoras. A pesar de
estas diferencias, todos los modelos mostraron un desempeño similar en
términos de R2 ajustado (~0.243), lo que respalda la validez del modelo
final y la complementariedad entre ambos enfoques.
Índice VIF
vif(modelo_9)
## GVIF Df GVIF^(1/(2*Df))
## imc_cat 1.095252 3 1.015280
## hipercol 1.145571 1 1.070314
## hta 1.258938 1 1.122024
## genero 1.018168 1 1.009043
## tabaq 1.054916 1 1.027091
## dbt 1.217735 1 1.103510
## educ 1.049980 1 1.024685
## hs_af 1.117625 1 1.057178
## estciv 1.044339 1 1.021929
Todos los valores de VIF son muy cercanos a 1, lo cual indica que no existe multicolinealidad entre las variables independientes del modelo.
Tolerancia
1/vif(modelo_9)
## GVIF Df GVIF^(1/(2*Df))
## imc_cat 0.9130320 0.3333333 0.9849503
## hipercol 0.8729268 1.0000000 0.9343055
## hta 0.7943200 1.0000000 0.8912463
## genero 0.9821558 1.0000000 0.9910378
## tabaq 0.9479430 1.0000000 0.9736236
## dbt 0.8211965 1.0000000 0.9061989
## educ 0.9523991 1.0000000 0.9759094
## hs_af 0.8947545 1.0000000 0.9459146
## estciv 0.9575434 1.0000000 0.9785415
Dado que todos los valores de tolerancia se encuentran por encima del umbral de 0.2, se concluye que no existe evidencia de multicolinealidad significativa entre los predictores del modelo.
Etapa 3: Variables no significativas en el análisis bivariado.
modelo_10 <- lm(pcr ~ imc_cat + hipercol + hta + genero + tabaq + dbt + educ + hs_af + estciv + edad, data = data)
summary(modelo_10)
##
## Call:
## lm(formula = pcr ~ imc_cat + hipercol + hta + genero + tabaq +
## dbt + educ + hs_af + estciv + edad, data = data)
##
## Residuals:
## Min 1Q Median 3Q Max
## -2.26129 -0.43560 0.02411 0.46174 2.16300
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 2.402609 0.309862 7.754 0.000000000000134 ***
## imc_catbajo peso -0.078249 0.255125 -0.307 0.759273
## imc_catobesidad 0.619940 0.120183 5.158 0.000000449499923 ***
## imc_catsobrepeso 0.294201 0.098433 2.989 0.003028 **
## hipercol1 -0.218748 0.086293 -2.535 0.011746 *
## hta1 0.201075 0.095580 2.104 0.036221 *
## genero1 0.321899 0.082330 3.910 0.000114 ***
## tabaq1 0.212420 0.101139 2.100 0.036525 *
## dbt1 0.077041 0.102209 0.754 0.451578
## educ2 -0.254384 0.083579 -3.044 0.002541 **
## hs_af -0.041447 0.016414 -2.525 0.012075 *
## estciv1 -0.174029 0.083109 -2.094 0.037086 *
## edad -0.004716 0.005070 -0.930 0.353029
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 0.7161 on 305 degrees of freedom
## Multiple R-squared: 0.2705, Adjusted R-squared: 0.2418
## F-statistic: 9.424 on 12 and 305 DF, p-value: 0.000000000000001557
model_parameters(modelo_10, ci = 0.95, digits = 6)
## Parameter | Coefficient | SE | 95% CI
## ---------------------------------------------------------------------
## (Intercept) | 2.402609 | 0.309862 | [ 1.792870, 3.012348]
## imc cat [bajo peso] | -0.078249 | 0.255125 | [-0.580277, 0.423779]
## imc cat [obesidad] | 0.619940 | 0.120183 | [ 0.383447, 0.856433]
## imc cat [sobrepeso] | 0.294201 | 0.098433 | [ 0.100506, 0.487896]
## hipercol [1] | -0.218748 | 0.086293 | [-0.388553, -0.048944]
## hta [1] | 0.201075 | 0.095580 | [ 0.012995, 0.389156]
## genero [1] | 0.321899 | 0.082330 | [ 0.159893, 0.483905]
## tabaq [1] | 0.212420 | 0.101139 | [ 0.013402, 0.411439]
## dbt [1] | 0.077041 | 0.102209 | [-0.124083, 0.278165]
## educ [2] | -0.254384 | 0.083579 | [-0.418848, -0.089920]
## hs af | -0.041447 | 0.016414 | [-0.073747, -0.009147]
## estciv [1] | -0.174029 | 0.083109 | [-0.337568, -0.010490]
## edad | -0.004716 | 0.005070 | [-0.014693, 0.005261]
##
## Parameter | t(305) | p
## ----------------------------------------
## (Intercept) | 7.753790 | < .001
## imc cat [bajo peso] | -0.306710 | 0.759
## imc cat [obesidad] | 5.158290 | < .001
## imc cat [sobrepeso] | 2.988832 | 0.003
## hipercol [1] | -2.534955 | 0.012
## hta [1] | 2.103728 | 0.036
## genero [1] | 3.909870 | < .001
## tabaq [1] | 2.100280 | 0.037
## dbt [1] | 0.753755 | 0.452
## educ [2] | -3.043648 | 0.003
## hs af | -2.525060 | 0.012
## estciv [1] | -2.093991 | 0.037
## edad | -0.930149 | 0.353
##
## Uncertainty intervals (equal-tailed) and p-values (two-tailed) computed
## using a Wald t-distribution approximation.
comparar_coeficientes(modelo_9, modelo_10)
## # Fixed Effects
##
## Parameter | Coef_prev | Coef_actual | Diferencia_relativa | Potencial_confundidor
## ----------------------------------------------------------------------------------------
## imc_catbajo peso | -0.06 | -0.08 | 34.32 | Sí
## imc_catobesidad | 0.63 | 0.62 | 1.24 | No
## imc_catsobrepeso | 0.29 | 0.29 | 0.90 | No
## hipercol1 | -0.23 | -0.22 | 3.10 | No
## hta1 | 0.19 | 0.20 | 6.29 | No
## genero1 | 0.32 | 0.32 | 1.17 | No
## tabaq1 | 0.21 | 0.21 | 0.31 | No
## dbt1 | 0.07 | 0.08 | 5.38 | No
## educ2 | -0.25 | -0.25 | 3.65 | No
## hs_af | -0.04 | -0.04 | 1.10 | No
## estciv1 | -0.17 | -0.17 | 0.34 | No
Tras evaluar la inclusión de la variable edad en el
modelo múltiple (modelo_10), se observó que no cumplía con los criterios
establecidos para su retención: presentó un valor de p no significativo
(p = 0.353) y no generó cambios relativos ≥10% en los coeficientes de
las variables previamente incluidas, por lo que no actuó como
confundidora. Se decidió eliminar edad del modelo. De este modo, se
considera que el modelo_9 representa el modelo final más parsimonioso y
robusto, manteniendo aquellas variables que cumplen con criterios
estadísticos o clínicos justificados.
Etapa 4: Exploración de interacciones.
estciv:dbtEl estado civil podría modificar la relación entre diabetes y PCR, ya que el apoyo conyugal o familiar puede influir en la adherencia a tratamientos y autocuidados en personas con diabetes, impactando en su perfil inflamatorio.
modelo_9_int1 <- lm(pcr ~ imc_cat + hipercol + hta + genero + tabaq + dbt + educ + hs_af + estciv + estciv:dbt, data = data)
summary(modelo_9_int1)
##
## Call:
## lm(formula = pcr ~ imc_cat + hipercol + hta + genero + tabaq +
## dbt + educ + hs_af + estciv + estciv:dbt, data = data)
##
## Residuals:
## Min 1Q Median 3Q Max
## -2.16409 -0.45082 0.01155 0.47287 2.27429
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 2.12188 0.13103 16.194 < 0.0000000000000002 ***
## imc_catbajo peso -0.05943 0.25440 -0.234 0.815445
## imc_catobesidad 0.62679 0.11998 5.224 0.000000325 ***
## imc_catsobrepeso 0.28880 0.09855 2.930 0.003640 **
## hipercol1 -0.22459 0.08604 -2.610 0.009494 **
## hta1 0.18623 0.09489 1.963 0.050611 .
## genero1 0.31818 0.08229 3.867 0.000135 ***
## tabaq1 0.21246 0.10121 2.099 0.036626 *
## dbt1 0.15672 0.16216 0.966 0.334575
## educ2 -0.24219 0.08322 -2.910 0.003878 **
## hs_af -0.04047 0.01644 -2.462 0.014356 *
## estciv1 -0.14322 0.09480 -1.511 0.131906
## dbt1:estciv1 -0.12934 0.19476 -0.664 0.507125
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 0.7166 on 305 degrees of freedom
## Multiple R-squared: 0.2695, Adjusted R-squared: 0.2407
## F-statistic: 9.375 on 12 and 305 DF, p-value: 0.00000000000000189
La incorporación del término de interacción entre estado civil y
diabetes (estciv:dbt) no mostró un aporte significativo al
modelo, ni estadísticamente (p > 0.05) ni en términos de ajuste
global (R2 ajustado).
educ:tabaqEl nivel educativo podría modificar el impacto del tabaquismo sobre la PCR, ya que niveles educativos más bajos se asocian con mayor exposición al tabaco, menor acceso a estrategias de cesación y mayor riesgo inflamatorio.
modelo_9_int2 <- lm(pcr ~ imc_cat + hipercol + hta + genero + tabaq +
dbt + educ + hs_af + estciv +
educ:tabaq, data = data)
summary(modelo_9_int2)
##
## Call:
## lm(formula = pcr ~ imc_cat + hipercol + hta + genero + tabaq +
## dbt + educ + hs_af + estciv + educ:tabaq, data = data)
##
## Residuals:
## Min 1Q Median 3Q Max
## -2.18735 -0.43641 0.03463 0.46418 2.23260
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 2.13887 0.13014 16.435 < 0.0000000000000002 ***
## imc_catbajo peso -0.05851 0.25462 -0.230 0.818413
## imc_catobesidad 0.62850 0.12091 5.198 0.000000369 ***
## imc_catsobrepeso 0.29183 0.09863 2.959 0.003330 **
## hipercol1 -0.22537 0.08633 -2.611 0.009485 **
## hta1 0.18933 0.09489 1.995 0.046906 *
## genero1 0.31832 0.08239 3.863 0.000137 ***
## tabaq1 0.21586 0.12438 1.736 0.083656 .
## dbt1 0.07275 0.10246 0.710 0.478203
## educ2 -0.24317 0.09212 -2.640 0.008725 **
## hs_af -0.04105 0.01646 -2.494 0.013173 *
## estciv1 -0.17357 0.08325 -2.085 0.037919 *
## tabaq1:educ2 -0.01203 0.21249 -0.057 0.954900
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 0.7171 on 305 degrees of freedom
## Multiple R-squared: 0.2684, Adjusted R-squared: 0.2396
## F-statistic: 9.325 on 12 and 305 DF, p-value: 0.000000000000002307
La incorporación del término de interacción entre educación y horas
de actividad física (educ:tabaq) no mostró un aporte
significativo al modelo, ni estadísticamente (p > 0.05) ni en
términos de ajuste global (R2 ajustado).
genero:hs_afEl efecto antiinflamatorio de la actividad física podría diferir entre hombres y mujeres, considerando barreras socioculturales, intensidad del ejercicio y el tipo de actividad podría variar según el género.
modelo_9_int3 <- lm(pcr ~ imc_cat + hipercol + hta + genero + tabaq +
dbt + educ + hs_af + estciv +
genero:hs_af, data = data)
summary(modelo_9_int3)
##
## Call:
## lm(formula = pcr ~ imc_cat + hipercol + hta + genero + tabaq +
## dbt + educ + hs_af + estciv + genero:hs_af, data = data)
##
## Residuals:
## Min 1Q Median 3Q Max
## -2.24042 -0.42401 0.03774 0.45180 2.18143
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 2.10927 0.13364 15.783 < 0.0000000000000002 ***
## imc_catbajo peso -0.05593 0.25432 -0.220 0.82608
## imc_catobesidad 0.62700 0.11994 5.228 0.000000319 ***
## imc_catsobrepeso 0.28967 0.09846 2.942 0.00351 **
## hipercol1 -0.22840 0.08606 -2.654 0.00837 **
## hta1 0.18400 0.09497 1.937 0.05361 .
## genero1 0.40849 0.13874 2.944 0.00349 **
## tabaq1 0.20853 0.10125 2.060 0.04029 *
## dbt1 0.07664 0.10225 0.749 0.45414
## educ2 -0.24676 0.08307 -2.971 0.00321 **
## hs_af -0.03084 0.02067 -1.492 0.13671
## estciv1 -0.17203 0.08315 -2.069 0.03941 *
## genero1:hs_af -0.02586 0.03199 -0.808 0.41949
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 0.7163 on 305 degrees of freedom
## Multiple R-squared: 0.27, Adjusted R-squared: 0.2413
## F-statistic: 9.399 on 12 and 305 DF, p-value: 0.000000000000001715
La incorporación del término de interacción entre género y horas de
actividad física (genero:hs_af) no mostró un aporte
significativo al modelo, ni estadísticamente (p > 0.05) ni en
términos de ajuste global (R2 ajustado).
imc:hs_afLa interacción se plantea para explorar si el beneficio de la actividad física sobre la PCR está modulado por el IMC, ya que la inflamación sistémica de base podría hacer que personas con obesidad respondan distinto al ejercicio que personas con normopeso.
modelo_9_int4 <- lm(pcr ~ imc_cat + hipercol + hta + genero + tabaq +
dbt + educ + hs_af + estciv +
imc:hs_af, data = data)
summary(modelo_9_int4)
##
## Call:
## lm(formula = pcr ~ imc_cat + hipercol + hta + genero + tabaq +
## dbt + educ + hs_af + estciv + imc:hs_af, data = data)
##
## Residuals:
## Min 1Q Median 3Q Max
## -2.18676 -0.44123 0.02615 0.46061 2.23346
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 2.1317212 0.1358109 15.696 < 0.0000000000000002 ***
## imc_catbajo peso -0.0654199 0.2574071 -0.254 0.799551
## imc_catobesidad 0.6535743 0.1827821 3.576 0.000406 ***
## imc_catsobrepeso 0.3009605 0.1104564 2.725 0.006807 **
## hipercol1 -0.2263412 0.0861421 -2.628 0.009036 **
## hta1 0.1878087 0.0951321 1.974 0.049262 *
## genero1 0.3172739 0.0824803 3.847 0.000146 ***
## tabaq1 0.2140284 0.1019841 2.099 0.036670 *
## dbt1 0.0741187 0.1024020 0.724 0.469743
## educ2 -0.2459390 0.0831801 -2.957 0.003352 **
## hs_af -0.0266574 0.0781001 -0.341 0.733096
## estciv1 -0.1733734 0.0832200 -2.083 0.038055 *
## hs_af:imc -0.0005334 0.0028407 -0.188 0.851168
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 0.7171 on 305 degrees of freedom
## Multiple R-squared: 0.2685, Adjusted R-squared: 0.2397
## F-statistic: 9.329 on 12 and 305 DF, p-value: 0.000000000000002274
La incorporación del término de interacción entre imc y horas de
actividad física (imc:hs_af) no mostró un aporte
significativo al modelo, ni estadísticamente (p > 0.05) ni en
términos de ajuste global (R2 ajustado).
imc_cat:hs_afmodelo_9_int5 <- lm(pcr ~ imc_cat + hipercol + hta + genero + tabaq +
dbt + educ + hs_af + estciv +
imc_cat:hs_af, data = data)
summary(modelo_9_int5)
##
## Call:
## lm(formula = pcr ~ imc_cat + hipercol + hta + genero + tabaq +
## dbt + educ + hs_af + estciv + imc_cat:hs_af, data = data)
##
## Residuals:
## Min 1Q Median 3Q Max
## -2.25746 -0.43725 0.03098 0.42499 2.18134
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 2.12264 0.15657 13.557 < 0.0000000000000002 ***
## imc_catbajo peso -0.60011 0.55153 -1.088 0.277415
## imc_catobesidad 0.54137 0.20356 2.660 0.008241 **
## imc_catsobrepeso 0.38479 0.16183 2.378 0.018036 *
## hipercol1 -0.22257 0.08600 -2.588 0.010120 *
## hta1 0.18632 0.09507 1.960 0.050934 .
## genero1 0.31470 0.08226 3.826 0.000158 ***
## tabaq1 0.20454 0.10160 2.013 0.044980 *
## dbt1 0.07112 0.10263 0.693 0.488826
## educ2 -0.24666 0.08305 -2.970 0.003217 **
## hs_af -0.03463 0.02860 -1.211 0.226894
## estciv1 -0.17946 0.08357 -2.147 0.032549 *
## imc_catbajo peso:hs_af 0.16970 0.15110 1.123 0.262290
## imc_catobesidad:hs_af 0.02602 0.04618 0.564 0.573460
## imc_catsobrepeso:hs_af -0.02713 0.03593 -0.755 0.450818
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 0.7157 on 303 degrees of freedom
## Multiple R-squared: 0.2759, Adjusted R-squared: 0.2425
## F-statistic: 8.248 on 14 and 303 DF, p-value: 0.000000000000005389
La incorporación del término de interacción entre imc categórica y
horas de actividad física (imc_cat:hs_af) no mostró un
aporte significativo al modelo, ni estadísticamente (p > 0.05) ni en
términos de ajuste global (R2 ajustado).
Comparación de métricas del modelo_1 al modelo_9
| Modelo | R² ajustado | Error estándar residual | F-statistic |
|---|---|---|---|
| modelo_1 | 0.0276 | 0.7519 | 5.823 |
| modelo_2 | 0.1022 | 0.7345 | 10.730 |
| modelo_3 | 0.1331 | 0.7276 | 13.840 |
| modelo_4 | 0.1445 | 0.7235 | 12.680 |
| modelo_5 | 0.1543 | 0.7197 | 13.440 |
| modelo_6 | 0.1793 | 0.7126 | 13.570 |
| modelo_7 | 0.2145 | 0.7174 | 15.630 |
| modelo_8 | 0.2364 | 0.7132 | 17.560 |
| modelo_9 | 0.2418 | 0.7161 | 9.424 |
El modelo_9 presentó el mayor R2 ajustado (0.2418), lo que indica una mayor capacidad explicativa del modelo. Aunque su F-statistic fue menor que el del modelo_8, el modelo_9 fue preferido por contener predictores clínicamente relevantes y ajustados de forma más robusta. Además, el error estándar residual fue bajo y comparable a los modelos anteriores, lo que refuerza la precisión en las predicciones.
Por lo tanto, modelo_9 se mantiene como el modelo final más adecuado según el balance entre capacidad explicativa, parsimonia y solidez clínica.
Cálculo del Error Cuadrático Medio (MSE) del modelo_9
MSE_modelo_9 <- mean(resid(modelo_9)^2)
MSE_modelo_9
## [1] 0.493201
Además de las métricas previamente consideradas, se calculó el Error
Cuadrático Medio (MSE) del modelo final (modelo_9),
obteniéndose un valor aproximado de 0.49. Esta medida refuerza la
adecuada capacidad predictiva del modelo, ya que representa el promedio
del error cuadrático de las predicciones realizadas. En conjunto con el
R² ajustado, el error estándar residual y el test F global, este
resultado contribuye a validar la robustez del modelo seleccionado.
Chequear los supuestos de linealidad, normalidad, homocedasticidad e independencia en modelo_9.
Generar valores predichos y residuos.
Valores predichos (Y sombrero)
predichos_m9 <- modelo_9$fitted.values
Residuos crudos
residuos_crudos_m9 <- modelo_9$residuals
Residuos estandarizados
residuos_standarizados_m9 <- rstandard(modelo_9)
Evaluación del supuesto de linealidad.
Gráfico de residuos crudos frente a valores predichos
plot(y = residuos_crudos_m9, x = predichos_m9, main = "Gráfico de residuos crudos versus predichos")
abline(h = 0)
El supuesto de linealidad se cumple, ya que los residuos parecen distribuirse de forma aleatoria respecto de los valores predichos sin un patrón evidente. No se observan asimetrías notorias.
avPlots(modelo_9)
Los gráficos avPlots() muestran que no hay evidencia de relaciones no lineales entre la variable dependiente y cada una de las variables independientes, ajustando por las otras. Por lo tanto, el supuesto de linealidad se considera cumplido en el modelo_9.
Evaluación del supuesto de igualdad de varianzas (homocedasticidad).
plot(y = residuos_crudos_m9, x = predichos_m9, main = "Gráfico de residuos crudos versus predichos")
abline(h = 0)
bptest(modelo_9)
##
## studentized Breusch-Pagan test
##
## data: modelo_9
## BP = 19.937, df = 11, p-value = 0.04622
Conforme el gráfico, se evidencia una distribución no homogénea (imagen en embudo) y el Breusch-Pagan test rechaza la H0 de igualdad de varianzas, por lo cual, no se cumple el supuesto de homocedasticidad (hay heterocedasticidad).
Evaluación del supuesto de normalidad de los residuos.
residuos_crudos_m9 <- modelo_9$residuals
residuos_estandarizados_m9 <- rstandard(modelo_9)
hist(residuos_crudos_m9, main = "Histograma de residuos", xlab = "Residuos", ylab = "Frecuencia", breaks = 10)
boxplot(residuos_crudos_m9, main = "Boxplot de residuos")
plot(density(residuos_crudos_m9), main = "Gráfico de densidad de residuos")
qqnorm(residuos_estandarizados_m9, main = "Q-Q plot de residuos estandarizados")
qqline(residuos_estandarizados_m9, col = "blue")
shapiro.test(residuos_crudos_m9)
##
## Shapiro-Wilk normality test
##
## data: residuos_crudos_m9
## W = 0.99785, p-value = 0.9571
El supuesto de normalidad de los residuos se cumple. Tanto la inspección visual como la evidencia estadística del test de Shapiro-Wilk (p > 0.05 → no rechaza normalidad) indican que los residuos del modelo modelo_9 se distribuyen normalmente.
Evaluación del supuesto de independencia.
plot(residuos_crudos_m9, type = "b", main = "Residuos vs orden de ingreso")
abline(h = 0, col = "red")
A partir del gráfico de residuos en función del orden de ingreso de las observaciones, no se observa un patrón sistemático que sugiera dependencia temporal o secuencial entre los residuos. Por lo tanto, el supuesto de independencia se asume cumplido.
Prueba de Durbin-Watson
dwtest(modelo_9)
##
## Durbin-Watson test
##
## data: modelo_9
## DW = 1.7862, p-value = 0.02405
## alternative hypothesis: true autocorrelation is greater than 0
El estadístico de Durbin-Watson fue cercano a 1.8, con p-valores inferiores a 0.05. Esto sugiere evidencia estadísticamente significativa de autocorrelación positiva entre los residuos.
Este hallazgo indica una posible violación del supuesto de independencia de errores. A pesar de que el gráfico de residuos versus orden de ingreso no mostraba un patrón visual claro, el test formal refuerza la necesidad de considerar esta limitación en la interpretación de los resultados.
Explorar la presencia de outliers y valores influyentes.
Identificar observaciones con residuos studentizados > ±3
resid_student_m9 <- rstudent(modelo_9)
outliers <- which(abs(resid_student_m9) > 3)
plot(
x = modelo_9$fitted.values,
y = resid_student_m9,
xlab = "Valores predichos",
ylab = "Residuos studentizados",
pch = 19,
col = "darkblue"
)
abline(h = c(-3, 3), col = "red", lty = 2)
abline(h = 0, col = "gray50")
text(
x = modelo_9$fitted.values[outliers],
y = resid_student_m9[outliers],
labels = outliers,
pos = 4,
cex = 0.7,
col = "darkred"
)
Se calcularon los residuos studentizados externos. Se identificaron 3 observaciones con valores mayores a ±3 (casos 96, 304 y 90), lo cual sugiere la presencia de posibles outliers. En el gráfico de residuos studentizados vs. valores predichos, la mayoría de las observaciones se distribuyen en torno a cero sin un patrón sistemático, y únicamente tres puntos (observaciones 96, 304 y 90) se ubican por fuera del umbral convencional de ±3 DE.
cook <- cooks.distance(modelo_9)
plot(cook, type = "h", main = "Distancia de Cook", ylab = "Cook's distance")
abline(h = 4/length(cook), col = "red", lty = 2)
abline(h = 0.5, col = "blue", lty = 2)
abline(h = 1.0, col = "darkgreen", lty = 2)
legend("topright", legend = c("4/n", "0.5", "1.0"),
col = c("red", "blue", "darkgreen"), lty = 2, cex = 0.8)
which(cook > 4/length(cook))
## 2 5 18 23 33 84 90 96 114 134 185 190 218 219 293 304
## 2 5 18 23 33 84 90 96 114 134 185 190 218 219 293 304
which(cook > 0.5)
## named integer(0)
which(cook > 1.0)
## named integer(0)
Se calculó la distancia de Cook para evaluar la influencia de cada observación en el modelo. Se identificaron 16 observaciones con valores por encima del umbral clásico (4/n), lo que sugiere que podrían ser potencialmente influyentes. Sin embargo, ninguna observación superó los umbrales más conservadores (> 0.5 o > 1), por lo que no se identificaron influencias graves sobre los coeficientes del modelo.
Las observaciones 304, 90 y 96 tienen un residuo studentizado externo elevado (potencial outlier) y una alta influencia, evaluada con la distancia de Cook y/o leverage. Son candidatas prioritarias a ser evaluadas en profundidad.
Modelo base (modelo_9)
modelo_9 <- lm(pcr ~ imc_cat + hipercol + hta + genero + tabaq + dbt + educ + hs_af + estciv, data = data)
summary(modelo_9)
##
## Call:
## lm(formula = pcr ~ imc_cat + hipercol + hta + genero + tabaq +
## dbt + educ + hs_af + estciv, data = data)
##
## Residuals:
## Min 1Q Median 3Q Max
## -2.18807 -0.44107 0.03203 0.46582 2.23549
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 2.14014 0.12799 16.721 < 0.0000000000000002 ***
## imc_catbajo peso -0.05825 0.25416 -0.229 0.818864
## imc_catobesidad 0.62769 0.11987 5.237 0.000000305 ***
## imc_catsobrepeso 0.29158 0.09837 2.964 0.003274 **
## hipercol1 -0.22574 0.08595 -2.626 0.009061 **
## hta1 0.18918 0.09470 1.998 0.046635 *
## genero1 0.31816 0.08221 3.870 0.000133 ***
## tabaq1 0.21177 0.10111 2.094 0.037048 *
## dbt1 0.07311 0.10210 0.716 0.474511
## educ2 -0.24542 0.08300 -2.957 0.003351 **
## hs_af -0.04100 0.01640 -2.499 0.012972 *
## estciv1 -0.17344 0.08309 -2.087 0.037676 *
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 0.7159 on 306 degrees of freedom
## Multiple R-squared: 0.2684, Adjusted R-squared: 0.2421
## F-statistic: 10.21 on 11 and 306 DF, p-value: 0.0000000000000006997
model_parameters(modelo_9, ci = 0.95, digits = 6)
## Parameter | Coefficient | SE | 95% CI
## ---------------------------------------------------------------------
## (Intercept) | 2.140141 | 0.127995 | [ 1.888279, 2.392002]
## imc cat [bajo peso] | -0.058255 | 0.254162 | [-0.558381, 0.441871]
## imc cat [obesidad] | 0.627693 | 0.119867 | [ 0.391824, 0.863561]
## imc cat [sobrepeso] | 0.291584 | 0.098372 | [ 0.098014, 0.485154]
## hipercol [1] | -0.225737 | 0.085946 | [-0.394857, -0.056616]
## hta [1] | 0.189183 | 0.094701 | [ 0.002836, 0.375530]
## genero [1] | 0.318165 | 0.082214 | [ 0.156389, 0.479941]
## tabaq [1] | 0.211773 | 0.101114 | [ 0.012805, 0.410740]
## dbt [1] | 0.073107 | 0.102099 | [-0.127798, 0.274012]
## educ [2] | -0.245419 | 0.083003 | [-0.408748, -0.082091]
## hs af | -0.040995 | 0.016404 | [-0.073273, -0.008717]
## estciv [1] | -0.173440 | 0.083088 | [-0.336936, -0.009944]
##
## Parameter | t(306) | p
## ----------------------------------------
## (Intercept) | 16.720507 | < .001
## imc cat [bajo peso] | -0.229203 | 0.819
## imc cat [obesidad] | 5.236558 | < .001
## imc cat [sobrepeso] | 2.964111 | 0.003
## hipercol [1] | -2.626490 | 0.009
## hta [1] | 1.997697 | 0.047
## genero [1] | 3.869968 | < .001
## tabaq [1] | 2.094386 | 0.037
## dbt [1] | 0.716042 | 0.475
## educ [2] | -2.956756 | 0.003
## hs af | -2.499183 | 0.013
## estciv [1] | -2.087429 | 0.038
##
## Uncertainty intervals (equal-tailed) and p-values (two-tailed) computed
## using a Wald t-distribution approximation.
Comparación del coeficiente B para horas semanales de actividad
física hs_af excluyendo observaciones potencialmente
influyentes
Sin observación 304
modelo_9_sin_304 <- lm(pcr ~ imc_cat + hipercol + hta + genero + tabaq + dbt + educ + hs_af + estciv, data = data[-304,])
summary(modelo_9_sin_304)
##
## Call:
## lm(formula = pcr ~ imc_cat + hipercol + hta + genero + tabaq +
## dbt + educ + hs_af + estciv, data = data[-304, ])
##
## Residuals:
## Min 1Q Median 3Q Max
## -2.1622 -0.4229 0.0329 0.4478 2.0455
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 2.15030 0.12610 17.052 < 0.0000000000000002 ***
## imc_catbajo peso -0.04989 0.25034 -0.199 0.842162
## imc_catobesidad 0.63714 0.11809 5.395 0.000000138 ***
## imc_catsobrepeso 0.27983 0.09695 2.886 0.004177 **
## hipercol1 -0.22037 0.08466 -2.603 0.009696 **
## hta1 0.17911 0.09332 1.919 0.055880 .
## genero1 0.30396 0.08109 3.748 0.000213 ***
## tabaq1 0.18114 0.10004 1.811 0.071159 .
## dbt1 0.05277 0.10075 0.524 0.600862
## educ2 -0.23815 0.08178 -2.912 0.003855 **
## hs_af -0.03839 0.01618 -2.373 0.018243 *
## estciv1 -0.18703 0.08194 -2.282 0.023151 *
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 0.7051 on 305 degrees of freedom
## Multiple R-squared: 0.2601, Adjusted R-squared: 0.2334
## F-statistic: 9.747 on 11 and 305 DF, p-value: 0.000000000000003932
model_parameters(modelo_9_sin_304, ci = 0.95, digits = 6)
## Parameter | Coefficient | SE | 95% CI
## ---------------------------------------------------------------------
## (Intercept) | 2.150295 | 0.126101 | [ 1.902158, 2.398433]
## imc cat [bajo peso] | -0.049892 | 0.250336 | [-0.542496, 0.442713]
## imc cat [obesidad] | 0.637144 | 0.118093 | [ 0.404764, 0.869524]
## imc cat [sobrepeso] | 0.279829 | 0.096954 | [ 0.089046, 0.470612]
## hipercol [1] | -0.220373 | 0.084664 | [-0.386973, -0.053773]
## hta [1] | 0.179113 | 0.093322 | [-0.004524, 0.362749]
## genero [1] | 0.303957 | 0.081091 | [ 0.144388, 0.463526]
## tabaq [1] | 0.181144 | 0.100036 | [-0.015705, 0.377993]
## dbt [1] | 0.052765 | 0.100753 | [-0.145494, 0.251025]
## educ [2] | -0.238151 | 0.081780 | [-0.399075, -0.077227]
## hs af | -0.038392 | 0.016176 | [-0.070222, -0.006562]
## estciv [1] | -0.187026 | 0.081941 | [-0.348266, -0.025785]
##
## Parameter | t(305) | p
## ----------------------------------------
## (Intercept) | 17.052214 | < .001
## imc cat [bajo peso] | -0.199298 | 0.842
## imc cat [obesidad] | 5.395279 | < .001
## imc cat [sobrepeso] | 2.886208 | 0.004
## hipercol [1] | -2.602903 | 0.010
## hta [1] | 1.919297 | 0.056
## genero [1] | 3.748345 | < .001
## tabaq [1] | 1.810779 | 0.071
## dbt [1] | 0.523709 | 0.601
## educ [2] | -2.912093 | 0.004
## hs af | -2.373428 | 0.018
## estciv [1] | -2.282456 | 0.023
##
## Uncertainty intervals (equal-tailed) and p-values (two-tailed) computed
## using a Wald t-distribution approximation.
Sin observación 90
modelo_9_sin_90 <- lm(pcr ~ imc_cat + hipercol + hta + genero + tabaq + dbt + educ + hs_af + estciv, data = data[-90,])
summary(modelo_9_sin_90)
##
## Call:
## lm(formula = pcr ~ imc_cat + hipercol + hta + genero + tabaq +
## dbt + educ + hs_af + estciv, data = data[-90, ])
##
## Residuals:
## Min 1Q Median 3Q Max
## -1.96169 -0.43688 0.01862 0.45563 2.21027
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 2.16340 0.12638 17.119 < 0.0000000000000002 ***
## imc_catbajo peso -0.05701 0.25052 -0.228 0.82013
## imc_catobesidad 0.62418 0.11816 5.283 0.000000243 ***
## imc_catsobrepeso 0.30283 0.09703 3.121 0.00197 **
## hipercol1 -0.23747 0.08480 -2.801 0.00543 **
## hta1 0.21606 0.09373 2.305 0.02183 *
## genero1 0.33535 0.08122 4.129 0.000047091 ***
## tabaq1 0.19556 0.09980 1.960 0.05096 .
## dbt1 0.05327 0.10083 0.528 0.59766
## educ2 -0.25481 0.08187 -3.112 0.00203 **
## hs_af -0.04359 0.01619 -2.693 0.00748 **
## estciv1 -0.19074 0.08208 -2.324 0.02079 *
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 0.7057 on 305 degrees of freedom
## Multiple R-squared: 0.2843, Adjusted R-squared: 0.2585
## F-statistic: 11.02 on 11 and 305 DF, p-value: < 0.00000000000000022
model_parameters(modelo_9_sin_90, ci = 0.95, digits = 6)
## Parameter | Coefficient | SE | 95% CI
## ---------------------------------------------------------------------
## (Intercept) | 2.163397 | 0.126376 | [ 1.914717, 2.412077]
## imc cat [bajo peso] | -0.057013 | 0.250521 | [-0.549981, 0.435955]
## imc cat [obesidad] | 0.624180 | 0.118155 | [ 0.391678, 0.856683]
## imc cat [sobrepeso] | 0.302831 | 0.097028 | [ 0.111903, 0.493760]
## hipercol [1] | -0.237473 | 0.084797 | [-0.404333, -0.070613]
## hta [1] | 0.216061 | 0.093732 | [ 0.031618, 0.400503]
## genero [1] | 0.335348 | 0.081219 | [ 0.175528, 0.495168]
## tabaq [1] | 0.195559 | 0.099798 | [-0.000821, 0.391939]
## dbt [1] | 0.053271 | 0.100832 | [-0.145144, 0.251687]
## educ [2] | -0.254810 | 0.081868 | [-0.415907, -0.093713]
## hs af | -0.043593 | 0.016189 | [-0.075450, -0.011736]
## estciv [1] | -0.190738 | 0.082081 | [-0.352254, -0.029221]
##
## Parameter | t(305) | p
## ----------------------------------------
## (Intercept) | 17.118693 | < .001
## imc cat [bajo peso] | -0.227579 | 0.820
## imc cat [obesidad] | 5.282709 | < .001
## imc cat [sobrepeso] | 3.121082 | 0.002
## hipercol [1] | -2.800505 | 0.005
## hta [1] | 2.305102 | 0.022
## genero [1] | 4.128952 | < .001
## tabaq [1] | 1.959549 | 0.051
## dbt [1] | 0.528317 | 0.598
## educ [2] | -3.112456 | 0.002
## hs af | -2.692683 | 0.007
## estciv [1] | -2.323779 | 0.021
##
## Uncertainty intervals (equal-tailed) and p-values (two-tailed) computed
## using a Wald t-distribution approximation.
Sin observación 96
modelo_9_sin_96 <- lm(pcr ~ imc_cat + hipercol + hta + genero + tabaq + dbt + educ + hs_af + estciv, data = data[-96,])
summary(modelo_9_sin_96)
##
## Call:
## lm(formula = pcr ~ imc_cat + hipercol + hta + genero + tabaq +
## dbt + educ + hs_af + estciv, data = data[-96, ])
##
## Residuals:
## Min 1Q Median 3Q Max
## -2.22766 -0.42580 0.02599 0.47409 2.21191
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 2.15680 0.12646 17.055 < 0.0000000000000002 ***
## imc_catbajo peso -0.05323 0.25088 -0.212 0.83210
## imc_catobesidad 0.59380 0.11885 4.996 0.000000986 ***
## imc_catsobrepeso 0.28968 0.09710 2.983 0.00308 **
## hipercol1 -0.23279 0.08487 -2.743 0.00645 **
## hta1 0.20026 0.09355 2.141 0.03309 *
## genero1 0.33192 0.08128 4.084 0.000056678 ***
## tabaq1 0.17532 0.10054 1.744 0.08218 .
## dbt1 0.07974 0.10080 0.791 0.42951
## educ2 -0.26102 0.08209 -3.180 0.00163 **
## hs_af -0.04576 0.01627 -2.813 0.00523 **
## estciv1 -0.15964 0.08214 -1.943 0.05288 .
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 0.7067 on 305 degrees of freedom
## Multiple R-squared: 0.2761, Adjusted R-squared: 0.25
## F-statistic: 10.58 on 11 and 305 DF, p-value: < 0.00000000000000022
model_parameters(modelo_9_sin_96, ci = 0.95, digits = 6)
## Parameter | Coefficient | SE | 95% CI
## ---------------------------------------------------------------------
## (Intercept) | 2.156802 | 0.126459 | [ 1.907960, 2.405645]
## imc cat [bajo peso] | -0.053233 | 0.250877 | [-0.546902, 0.440436]
## imc cat [obesidad] | 0.593802 | 0.118849 | [ 0.359935, 0.827670]
## imc cat [sobrepeso] | 0.289679 | 0.097100 | [ 0.098608, 0.480749]
## hipercol [1] | -0.232794 | 0.084866 | [-0.399791, -0.065797]
## hta [1] | 0.200258 | 0.093547 | [ 0.016179, 0.384337]
## genero [1] | 0.331918 | 0.081278 | [ 0.171982, 0.491854]
## tabaq [1] | 0.175324 | 0.100536 | [-0.022507, 0.373156]
## dbt [1] | 0.079742 | 0.100801 | [-0.118612, 0.278096]
## educ [2] | -0.261023 | 0.082092 | [-0.422561, -0.099485]
## hs af | -0.045757 | 0.016268 | [-0.077768, -0.013745]
## estciv [1] | -0.159638 | 0.082140 | [-0.321271, 0.001995]
##
## Parameter | t(305) | p
## ----------------------------------------
## (Intercept) | 17.055355 | < .001
## imc cat [bajo peso] | -0.212187 | 0.832
## imc cat [obesidad] | 4.996275 | < .001
## imc cat [sobrepeso] | 2.983297 | 0.003
## hipercol [1] | -2.743078 | 0.006
## hta [1] | 2.140723 | 0.033
## genero [1] | 4.083747 | < .001
## tabaq [1] | 1.743901 | 0.082
## dbt [1] | 0.791086 | 0.430
## educ [2] | -3.179643 | 0.002
## hs af | -2.812658 | 0.005
## estciv [1] | -1.943480 | 0.053
##
## Uncertainty intervals (equal-tailed) and p-values (two-tailed) computed
## using a Wald t-distribution approximation.
Conclusión
Para cada modelo sin la observación atípica, compararemos el
coeficiente B de la variable horas semanales de actividad física
(hs_af) con el modelo original. Si la variación relativa es
mayor al 10%, se considera que la observación tiene un impacto
significativo en la estimación del coeficiente:
coef_original <- coef(modelo_9)["hs_af"]
coef_sin_304_manual <- coef(modelo_9_sin_304)["hs_af"]
coef_sin_90_manual <- coef(modelo_9_sin_90)["hs_af"]
coef_sin_96_manual <- coef(modelo_9_sin_96)["hs_af"]
var_304 <- abs(1 - (coef_sin_304_manual / coef_original)) * 100
var_90 <- abs(1 - (coef_sin_90_manual / coef_original)) * 100
var_96 <- abs(1 - (coef_sin_96_manual / coef_original)) * 100
variaciones_manual <- data.frame(
Observacion = c("304", "90", "96"),
Coef_Original = rep(round(coef_original, 6), 3),
Coef_Sin_Obs = round(c(coef_sin_304_manual, coef_sin_90_manual, coef_sin_96_manual), 6),
Variacion_Relativa_Porcentual = round(c(var_304, var_90, var_96), 2)
)
variaciones_manual
## Observacion Coef_Original Coef_Sin_Obs Variacion_Relativa_Porcentual
## 1 304 -0.040995 -0.038392 6.35
## 2 90 -0.040995 -0.043593 6.34
## 3 96 -0.040995 -0.045757 11.61
Se evaluó el impacto de tres observaciones potencialmente influyentes (casos 304, 90 y 96) sobre el coeficiente B de la variable horas semanales de actividad física (hs_af) en el modelo de regresión lineal múltiple.
Si bien las observaciones 304 y 90 mostraron una variación relativa del coeficiente (6.35% y 6.34%, respectivamente), la observación 96 mostró una variación superior (11.61%), por lo cual esta observación ejerce una influencia significativa sobre la estimación del coeficiente.
En consecuencia, se consideran necesarias medidas adicionales:
Verificar posibles errores de carga o características clínicas particulares en la observación 96.
Evaluar su impacto en otros coeficientes del modelo.
Considerar la exclusión de la observación.
Inspección visual de las observaciones atípicas detectadas
La inspección visual de las observaciones atípicas identificadas puede aportar información útil sobre posibles errores de carga o características particulares de los datos. Esta inspección es complementaria al análisis del impacto en el modelo y puede ser especialmente útil para interpretar la naturaleza de cada observación.
data %>%
mutate(fila_original = row_number()) %>%
filter(fila_original %in% c(304, 90, 96)) %>%
kable(caption = "Valores de las observaciones 304, 90 y 96") %>%
kable_styling(full_width = FALSE)
| id | genero | edad | estciv | educ | pcr | dbt | hta | hipercol | tabaq | imc | hs_af | imc_cat | fila_original |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| c099 | 1 | 44 | 0 | 1 | 0.751 | 0 | 1 | 0 | 0 | 28.9 | 0 | sobrepeso | 90 |
| c106 | 0 | 40 | 0 | 2 | 4.210 | 0 | 0 | 1 | 1 | 30.1 | 9 | obesidad | 96 |
| c332 | 1 | 45 | 1 | 1 | 5.286 | 1 | 1 | 0 | 1 | 29.3 | 0 | sobrepeso | 304 |
Modelos estratificados según presencia o ausencia de diabetes
data_sin_dbt <- data %>% filter(dbt == 0)
data_con_dbt <- data %>% filter(dbt == 1)
modelo_sin_dbt <- lm(pcr ~ genero + educ + hta + hipercol + imc_cat + tabaq + hs_af + estciv, data = data_sin_dbt)
modelo_con_dbt <- lm(pcr ~ genero + educ + hta + hipercol + imc_cat + tabaq + hs_af + estciv, data = data_con_dbt)
Modelo en pacientes SIN diabetes
summary(modelo_sin_dbt)
##
## Call:
## lm(formula = pcr ~ genero + educ + hta + hipercol + imc_cat +
## tabaq + hs_af + estciv, data = data_sin_dbt)
##
## Residuals:
## Min 1Q Median 3Q Max
## -2.2668 -0.4377 -0.0055 0.4599 2.2154
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 2.24818 0.14317 15.703 < 0.0000000000000002 ***
## genero1 0.32862 0.09369 3.508 0.000545 ***
## educ2 -0.22839 0.09357 -2.441 0.015415 *
## hta1 0.26644 0.10946 2.434 0.015702 *
## hipercol1 -0.34361 0.09884 -3.476 0.000609 ***
## imc_catbajo peso 0.28298 0.30434 0.930 0.353458
## imc_catobesidad 0.56348 0.13749 4.098 0.000058 ***
## imc_catsobrepeso 0.17453 0.10846 1.609 0.108965
## tabaq1 0.11725 0.11743 0.998 0.319114
## hs_af -0.04026 0.01803 -2.233 0.026548 *
## estciv1 -0.16465 0.09254 -1.779 0.076546 .
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 0.6964 on 227 degrees of freedom
## Multiple R-squared: 0.2826, Adjusted R-squared: 0.251
## F-statistic: 8.943 on 10 and 227 DF, p-value: 0.000000000002231
Modelo en pacientes CON diabetes
summary(modelo_con_dbt)
##
## Call:
## lm(formula = pcr ~ genero + educ + hta + hipercol + imc_cat +
## tabaq + hs_af + estciv, data = data_con_dbt)
##
## Residuals:
## Min 1Q Median 3Q Max
## -1.6533 -0.4597 0.0276 0.2804 2.1242
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 2.00798 0.27970 7.179 0.000000000629 ***
## genero1 0.25267 0.16847 1.500 0.138239
## educ2 -0.32030 0.17742 -1.805 0.075384 .
## hta1 -0.11296 0.18544 -0.609 0.544427
## hipercol1 0.05742 0.17634 0.326 0.745687
## imc_catbajo peso -0.45607 0.47379 -0.963 0.339113
## imc_catobesidad 0.89325 0.24047 3.715 0.000409 ***
## imc_catsobrepeso 0.69695 0.21745 3.205 0.002046 **
## tabaq1 0.54455 0.19191 2.837 0.005966 **
## hs_af -0.02395 0.03813 -0.628 0.531958
## estciv1 -0.22741 0.17609 -1.291 0.200851
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 0.7221 on 69 degrees of freedom
## Multiple R-squared: 0.3698, Adjusted R-squared: 0.2785
## F-statistic: 4.049 on 10 and 69 DF, p-value: 0.0002151
El efecto de la actividad física (hs_af) sobre PCR
permanece significativo sólo en pacientes sin diabetes. En pacientes con
diabetes, el coeficiente se reduce en magnitud y pierde significancia
estadística. Esto podría sugerir que la actividad física podría tener
menor impacto en la reducción de PCR entre pacientes con diabetes, o el
tamaño muestral menor afecta la potencia estadística.
Conclusión del modelo final (modelo_9).
El modelo seleccionado cumple con los principios fundamentales para considerarse adecuado:
Modelo parsimonioso: modelo_9 incluye solo las variables que resultaron significativas o actuaron como confusoras durante el proceso de selección, evitando complejidad innecesaria.
Variables justificadas: Todas las variables incluidas fueron seleccionadas a partir de un análisis bivariado con criterio de inclusión de p < 0.20, y posteriormente se evaluaron sus efectos y posible confusión en el modelo múltiple.
Cumplimiento de supuestos: Se verificaron los supuestos del modelo (linealidad, homocedasticidad, independencia y normalidad de los residuos) y no se detectaron violaciones relevantes.
En la comparación entre los modelos explorados (modelo_1 a modelo_9), el modelo final mostró un equilibrio adecuado entre:
Mayor R2 ajustado (0.2407)
Menor error estándar residual (0.7166)
Estadístico F significativo (p < 0.0001), lo que sugiere un buen ajuste general del modelo.
Adicionalmente, se exploró la presencia de observaciones
potencialmente influyentes. Se identificó que la observación 96 provocó
una variación relativa mayor al 10% en el coeficiente B de la variable
hs_af, considerada clínicamente relevante. Se sugiere como
acción futura evaluar su posible impacto clínico y considerar análisis
de sensibilidad si se replicara este trabajo en otro contexto.
Por último, se realizó un análisis de sensibilidad estratificando por
presencia de diabetes. Se observó que el efecto de hs_af
sobre pcr fue significativo únicamente en personas sin diabetes,
mostrando mayor precisión (menor error estándar y mayor R2). En cambio,
en personas con diabetes el efecto fue más débil y no significativo.