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:

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")
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)
Valores de las observaciones 304 y 90
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.

  1. Evaluación inicial del modelo
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.
  1. Modelo exploratorio agregando diabetes
modelo_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.
  1. Coeficientes del modelo original vs modelo con diabetes
coef_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.

  1. Modelo con interacción dbt*hs_af
modelo_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.

  1. Modelo con interacción dbt*imc_cat
modelo_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.

  1. Evaluación inicial del modelo
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.
  1. Modelo exploratorio agregando edad
modelo_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.
  1. Coeficientes del modelo original vs modelo con edad
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.

  1. Modelo con interacción edad*hs_af
modelo_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.

  1. Detección de confusión basada en cambio porcentual de coeficientes
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)
}
  1. Construcción de modelo_1 (IMC) y modelo_2 (hipercolesterolemia)
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.
  1. Evaluación del cambio porcentual en coeficientes para detección de confusión (modelo_1 vs modelo_2) y cuál modelo es más completo mediante comparación con modelo anidado (test F de anova).
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.

  1. Construcción de modelo_3 (hipertensión), evaluación del cambio porcentual en coeficientes para detección de confusión (modelo_2 vs modelo_3) y cuál modelo es más completo mediante comparación con modelo anidado (test F de anova).
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.

  1. Construcción de modelo_4 (género), evaluación del cambio porcentual en coeficientes para detección de confusión (modelo_3 vs modelo_4) y cuál modelo es más completo mediante comparación con modelo anidado (test F de anova).
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.

  1. Construcción de modelo_5 (tabaquismo), evaluación del cambio porcentual en coeficientes para detección de confusión (modelo_4 vs modelo_5) y cuál modelo es más completo mediante comparación con modelo anidado (test F de anova).
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.

  1. Construcción de modelo_6 (diabetes), evaluación del cambio porcentual en coeficientes para detección de confusión (modelo_5 vs modelo_6) y cuál modelo es más completo mediante comparación con modelo anidado (test F de anova).
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:

  1. Construcción de modelo_7 (educación), evaluación del cambio porcentual en coeficientes para detección de confusión (modelo_6 vs modelo_7) y cuál modelo es más completo mediante comparación con modelo anidado (test F de anova).
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.

  1. Construcción de modelo_8 (horas de actividad física), evaluación del cambio porcentual en coeficientes para detección de confusión (modelo_7 vs modelo_8) y cuál modelo es más completo mediante comparación con modelo anidado (test F de anova).
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%.

  1. Construcción de modelo_9 (estado civil), evaluación del cambio porcentual en coeficientes para detección de confusión (modelo_8 vs modelo_9) y cuál modelo es más completo mediante comparación con modelo anidado (test F de anova).
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.

  1. Evaluar la presencia de multicolinealidad en el modelo.

Í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.

  1. Construcción de modelo_10 (edad) y evaluación del cambio porcentual en coeficientes para detección de confusión (modelo_9 vs modelo_10)
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.

  1. Modelo con interacción estciv:dbt

El 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).

  1. Modelo con interacción educ:tabaq

El 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).

  1. Modelo con interacción genero:hs_af

El 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).

  1. Modelo con interacción imc:hs_af

La 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).

  1. Modelo con interacción imc_cat:hs_af
modelo_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:

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)
Valores de las observaciones 304, 90 y 96
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:

En la comparación entre los modelos explorados (modelo_1 a modelo_9), el modelo final mostró un equilibrio adecuado entre:

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.