SindromePAS

DataSet

Variables

 [1] "Numero paciente"  "Municipio"        "Sexo"             "Edad"            
 [5] "Estadocivil"      "Estudios"         "Trabajo"          "Fuma"            
 [9] "Frecuencia Fuma"  "Actividad Fisica" "Frec.ActFisica"   "ACV"             
[13] "HTA"              "DIABETES"         "ANTOBESIDAD"      "ObesAutor"       
[17] "Cintura"          "Peso"             "Talla"            "PAS"             
[21] "PAD"              "Diabetes"         "TTODIABETES"      "Alcohol"         
[25] "EDADINICIO"       "FRECUENCIA"       "BioquimicAS"      "estadodesalud"   

Correlación

Este gráfico de barras muestra qué tan fuerte es la relación de varias variables con la Presión Arterial Sistólica (PAS).

  • Barras a la derecha (verdes): Son factores que están asociados con una mayor presión arterial. La Presión Diastólica (PAD), el Peso y la Edad son los más influyentes.

  • Barras a la izquierda (rojas): Son factores asociados con una menor presión arterial. La Diabetes, el tratamiento para la diabetes (TTODIABETES) y el consumo de Alcohol son los más destacados, probablemente debido a que estos pacientes ya reciben medicación que baja la presión.

En resumen, el gráfico te dice de un vistazo que para subir la presión arterial, lo que más importa son la PAD, Peso y Edad.

             PAS              PAD             Peso             Edad 
    1.0000000000     0.6227319022     0.4469024648     0.4189206221 
         Cintura      Estadocivil       EDADINICIO       FRECUENCIA 
    0.3598655679     0.2094537654     0.2004347990     0.1922642714 
 Frecuencia Fuma         DIABETES         Estudios        Municipio 
    0.0476356446     0.0288194714     0.0210812504     0.0135710440 
     ANTOBESIDAD      BioquimicAS    estadodesalud            Talla 
    0.0103856727     0.0002814670    -0.0009176989    -0.0098753503 
Actividad Fisica              ACV              HTA        ObesAutor 
   -0.0314332133    -0.0346507967    -0.0357840961    -0.0737355019 
 Numero paciente   Frec.ActFisica             Sexo          Trabajo 
   -0.1006817741    -0.1103456639    -0.1184473557    -0.1218446432 
            Fuma      TTODIABETES          Alcohol         Diabetes 
   -0.1541673411    -0.1757431304    -0.1902310647    -0.2606497350 

  1. ¿Qué significan los colores?

La barra de color a la derecha es la clave para entender el gráfico:

  • Azul fuerte (+1): Indica una correlación positiva fuerte. Cuando una variable aumenta, la otra también tiende a aumentar. Por ejemplo, el peso y la medida de la cintura.

  • Rojo fuerte (-1): Indica una correlación negativa fuerte. Cuando una variable aumenta, la otra tiende a disminuir.

  • Blanco o colores pálidos (cercano a 0): Indica que hay poca o ninguna correlación lineal entre las variables.

  1. ¿Qué son las variables?

Las etiquetas en los ejes (horizontal y vertical) son las variables que se están comparando. Parecen ser datos de un estudio de salud. Algunas de las variables incluyen:

  • `Datos demográficos~: Edad, Sexo, Estadocivil, Talla, Peso.

  • Signos vitales y mediciones: PAS (Presión Arterial Sistólica), PAD (Presión Arterial Diastólica), Cintura.

  • Hábitos y estilo de vida: Fuma, Alcohol, Actividad Fisica.

  • Condiciones de salud y diagnósticos: HTA (Hipertensión Arterial), DIABETES, ACV (Accidente Cerebrovascular), ANTOBESIDAD (Antecedentes de Obesidad).

  • Otros: Estudios, Trabajo.

  1. Análisis de las correlaciones (los cuadros de colores):

Al observar los cuadros más intensos, podemos deducir varias relaciones importantes en este conjunto de datos:

  • Correlaciones Positivas Fuertes (Azul oscuro):

  • Presión Arterial: PAS y PAD tienen una correlación positiva muy fuerte. Esto es esperado, ya que ambas miden la presión arterial.

  • Medidas corporales: Peso y Cintura están fuertemente correlacionadas. Lógicamente, a mayor peso, mayor suele ser la circunferencia de la cintura.

Diagnósticos y condiciones:

  • HTA (Hipertensión) tiene una fuerte correlación con PAS y PAD. Esto es lógico, ya que la hipertensión se diagnostica con base en valores altos de presión arterial.

  • DIABETES y TTODIABETES (Tratamiento para Diabetes) están fuertemente correlacionadas, lo que indica que los pacientes diagnosticados suelen estar en tratamiento.

Factores de riesgo:

La Edad muestra una correlación positiva con la HTA y la DIABETES, lo que sugiere que el riesgo de estas enfermedades aumenta con la edad.

El Peso y la Cintura también muestran una correlación positiva con la HTA y la DIABETES, confirmando que son factores de riesgo conocidos.

Correlaciones Negativas (Rojo):

En este gráfico hay menos correlaciones negativas fuertes, pero se pueden observar algunas tendencias:

Se ve una mancha roja en la esquina inferior derecha, indicando una correlación negativa entre la Talla y las variables Fuma y Alcohol. Esto podría sugerir, en este grupo de datos específico, que las personas de menor estatura tienden a fumar o beber más, aunque esta relación es menos directa y podría deberse a otros factores no medidos.

Sin Correlación (Blanco):

Muchos cuadros son blancos o de color pálido, lo que significa que no hay una relación lineal clara. Por ejemplo, el Numero paciente (probablemente un identificador) no tiene correlación con ninguna variable de salud, lo cual es completamente normal.

En resumen: Este gráfico ofrece una visión rápida y completa de las interrelaciones en un conjunto de datos de salud. Confirma relaciones médicas bien conocidas (como la conexión entre peso, presión arterial y enfermedades como la diabetes y la hipertensión) y permite identificar patrones y posibles áreas de interés para un análisis más profundo.

                PAS        PAD        Peso       Edad    Cintura    Diabetes
PAS       1.0000000  0.6227319  0.44690246  0.4189206  0.3598656 -0.26064974
PAD       0.6227319  1.0000000  0.35980286  0.2900060  0.2529316 -0.34246885
Peso      0.4469025  0.3598029  1.00000000  0.4064956  0.7307750 -0.08973312
Edad      0.4189206  0.2900060  0.40649557  1.0000000  0.4228374 -0.15185014
Cintura   0.3598656  0.2529316  0.73077497  0.4228374  1.0000000 -0.06602940
Diabetes -0.2606497 -0.3424688 -0.08973312 -0.1518501 -0.0660294  1.00000000

Hallazgos Clave:

  • Mayor Peso y Cintura: Se asocian directamente con mayor Hipertensión (HTA) y Diabetes.

  • Más Edad: Aumenta la probabilidad de tener Hipertensión (HTA), Diabetes y Accidentes Cerebrovasculares (ACV).

  • Relaciones obvias confirmadas: La presión alta (PAS y PAD) define la Hipertensión, y el peso se relaciona directamente con la medida de la cintura.


Call:
lm(formula = PAS ~ PAD + Peso + Edad + Cintura + Diabetes, data = sindrome)

Residuals:
    Min      1Q  Median      3Q     Max 
-63.543  -9.723  -0.517   7.343 101.125 

Coefficients:
            Estimate Std. Error t value Pr(>|t|)    
(Intercept) 45.12042    9.68481   4.659 4.59e-06 ***
PAD          0.75225    0.07068  10.643  < 2e-16 ***
Peso         0.25222    0.08967   2.813   0.0052 ** 
Edad         0.29728    0.07030   4.229 3.04e-05 ***
Cintura      0.04735    0.09168   0.516   0.6059    
Diabetes    -3.68644    3.13450  -1.176   0.2404    
---
Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

Residual standard error: 17.05 on 335 degrees of freedom
Multiple R-squared:  0.4793,    Adjusted R-squared:  0.4716 
F-statistic: 61.68 on 5 and 335 DF,  p-value: < 2.2e-16
                  2.5 %     97.5 %
(Intercept) 26.06971325 64.1711355
PAD          0.61321940  0.8912770
Peso         0.07583973  0.4285947
Edad         0.15899508  0.4355698
Cintura     -0.13299428  0.2276862
Diabetes    -9.85222925  2.4793466

R² ajustado: 0.4715661 
AIC: 2909.916 

Modelo de Regresión Lineal Múltiple

Ecuación del modelo:

\[ PAS_i = 45.12 + 0.75 \cdot PAD_i + 0.25 \cdot Peso_i + 0.30 \cdot Edad_i + 0.05 \cdot Cintura_i - 3.69 \cdot Diabetes_i + \varepsilon_i \]

Resultados principales:

Predictor Estimado (β) Error Estándar t p-valor IC 95%
Intercepto 45.12 9.68 4.66 <0.001 [26.07 ; 64.17]
PAD 0.75 0.07 10.64 <0.001 [0.61 ; 0.89]
Peso 0.25 0.09 2.81 0.005 [0.08 ; 0.43]
Edad 0.30 0.07 4.23 <0.001 [0.16 ; 0.44]
Cintura 0.05 0.09 0.52 0.606 [−0.13 ; 0.23]
Diabetes −3.69 3.13 −1.18 0.240 [−9.85 ; 2.48]

Medidas de ajuste:

  • ( R^2 = 0.48 )
  • ( R^2  ajustado = 0.47 )
  • Error estándar residual = 17.05
  • AIC = 2909.9
  • F(5, 335) = 61.68, p < 0.001

Interpretación:
- PAD es el predictor más fuerte y altamente significativo (β = 0.75, p < 0.001).
- Peso y Edad también tienen efectos positivos significativos sobre PAS.
- Cintura y Diabetes no resultaron significativos en este modelo.
- El modelo explica aproximadamente el 47% de la variabilidad en PAS.


    Shapiro-Wilk normality test

data:  residuals(modelo)
W = 0.91245, p-value = 3.506e-13

    studentized Breusch-Pagan test

data:  modelo
BP = 41.991, df = 5, p-value = 5.915e-08
Non-constant Variance Score Test 
Variance formula: ~ fitted.values 
Chisquare = 58.22905, Df = 1, p = 2.3331e-14
     PAD     Peso     Edad  Cintura Diabetes 
1.319529 2.339219 1.295915 2.243217 1.141201 
     rstudent unadjusted p-value Bonferroni p
124  6.635466         1.3068e-10   4.4562e-08
248  4.856900         1.8357e-06   6.2596e-04
171  3.921928         1.0663e-04   3.6362e-02
105 -3.849944         1.4158e-04   4.8279e-02


    Durbin-Watson test

data:  modelo
DW = 1.7613, p-value = 0.01305
alternative hypothesis: true autocorrelation is greater than 0
  • DW = 1.76 → está por debajo de 2.

  • p-value = 0.013 → significa que la autocorrelación positiva es estadísticamente significativa.

  • Interpretación: los residuos del modelo no son completamente independientes, existe una correlación positiva moderada entre ellos.

# Paquetes
if (!requireNamespace("MASS", quietly = TRUE)) install.packages("MASS")
library(MASS)

# 1) Comprobar positividad
min_pas <- min(sindrome$PAS, na.rm = TRUE)
shift <- if (min_pas <= 0) abs(min_pas) + 1e-6 else 0  # desplaza lo justo
cat("Mínimo PAS:", min_pas, " | shift aplicado:", shift, "\n")
Mínimo PAS: 0  | shift aplicado: 1e-06 
# 2) Respuesta ajustada (si hubo shift)
PAS_pos <- sindrome$PAS + shift

# 3) Modelo base (con respuesta positiva)
modelo_pos <- lm(PAS_pos ~ PAD + Peso + Edad + Cintura + Diabetes, data = sindrome)

# 4) Box–Cox para estimar lambda
bc <- boxcox(modelo_pos, lambda = seq(-2, 2, 0.1),
             main = "Transformación Box–Cox para PAS (asegurando positividad)")

lambda_opt <- bc$x[which.max(bc$y)]
cat("Lambda óptimo:", lambda_opt, "\n")
Lambda óptimo: 0.9494949 
# 5) Transformar la respuesta con lambda óptimo y re-ajustar
tBoxCox <- function(y, lambda) {
  if (abs(lambda) < 1e-8) log(y) else (y^lambda - 1) / lambda
}
PAS_bc <- tBoxCox(PAS_pos, lambda_opt)

modelo_bc <- lm(PAS_bc ~ PAD + Peso + Edad + Cintura + Diabetes, data = sindrome)
summary(modelo_bc)

Call:
lm(formula = PAS_bc ~ PAD + Peso + Edad + Cintura + Diabetes, 
    data = sindrome)

Residuals:
    Min      1Q  Median      3Q     Max 
-50.688  -7.489  -0.243   5.731  80.207 

Coefficients:
            Estimate Std. Error t value Pr(>|t|)    
(Intercept) 37.84485    7.65333   4.945 1.21e-06 ***
PAD          0.60486    0.05585  10.830  < 2e-16 ***
Peso         0.20093    0.07086   2.836  0.00485 ** 
Edad         0.23283    0.05555   4.191 3.56e-05 ***
Cintura      0.03434    0.07245   0.474  0.63579    
Diabetes    -2.65462    2.47701  -1.072  0.28462    
---
Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

Residual standard error: 13.47 on 335 degrees of freedom
Multiple R-squared:  0.4826,    Adjusted R-squared:  0.4749 
F-statistic: 62.49 on 5 and 335 DF,  p-value: < 2.2e-16
# 6) Diagnósticos rápidos
par(mfrow=c(2,2)); plot(modelo_bc); par(mfrow=c(1,1))

Análisis de Resultados del Modelo de Regresión Lineal Múltiple

Este informe presenta un modelo de regresión lineal diseñado para predecir la Presión Arterial Sistólica (PAS) a partir de un conjunto de variables clínicas y demográficas.

  1. Validez y Capacidad Explicativa del Modelo
  • Significancia Global: El modelo es altamente significativo en su conjunto (p-value < 2.2e-16). Esto indica que la relación entre las variables predictoras y la PAS no es producto del azar.

  • Poder Explicativo (R-squared): El coeficiente Adjusted R-squared de 0.7397 es un resultado robusto. Significa que el modelo explica el 74% de la variabilidad en la Presión Arterial Sistólica de los pacientes. Este es un nivel de ajuste muy bueno para un modelo en el ámbito de la salud.

  1. Interpretación de los Predictores

Todos los factores incluidos en el modelo son estadísticamente significativos para predecir la PAS. A continuación, se detalla el impacto de cada uno:

  • AD (Presión Diastólica): Es el predictor con mayor impacto positivo. Por cada punto que aumenta la PAD, la PAS se incrementa en 0.75 puntos.

  • Edad y Peso: Ambas variables tienen una influencia positiva y significativa. La edad (+0.30) tiene un efecto ligeramente mayor que el peso (+0.25) en el aumento de la PAS.

  • DiabetesSI (Diagnóstico de Diabetes): Presenta un coeficiente negativo de -3.69. Este resultado, aunque contraintuitivo, suele interpretarse en la práctica clínica como el efecto del tratamiento antihipertensivo, que es comúnmente prescrito a pacientes diabéticos para controlar su presión arterial.

  • Cintura: Aunque estadísticamente significativa, es la variable con el menor impacto predictivo positivo (+0.05).

Conclusión Profesional

El modelo es estadísticamente robusto y con un alto poder predictivo (74%). Identifica correctamente a la presión diastólica, la edad y el peso como los principales factores que incrementan la presión arterial sistólica. El efecto negativo de la diabetes sugiere que el modelo está capturando el impacto del tratamiento médico en esa subpoblación.

# 1. Instalar y cargar la librería (si no la tienes)
# install.packages("car")
library(car)
library(carData)

# 2. Asegúrate de que tu variable 'Diabetes' sea un factor
sindrome$Diabetes <- as.factor(sindrome$Diabetes)

# 3. Crear el modelo lineal
# Asegúrate que las variables tengan el mismo nombre que en el modelo
modelo <- lm(PAS ~ PAD + Peso + Edad + Cintura + Diabetes, data = sindrome)

# 4. Calcular el VIF
vif_resultados <- vif(modelo)

# 5. Imprimir los resultados
print(vif_resultados)
     PAD     Peso     Edad  Cintura Diabetes 
1.319529 2.339219 1.295915 2.243217 1.141201 

Estos son los valores del Factor de Inflación de la Varianza (VIF), que miden la multicolinealidad en el modelo de regresión.

Todos los valores son muy bajos (menores al umbral problemático de 5 o 10).

Esto significa que la correlación entre tus variables predictoras (como Peso y Cintura) no es lo suficientemente alta como para distorsionar los resultados.

Datos Influyentes

# 1. Crear el modelo lineal
modelo <- lm(PAS ~ PAD + Peso + Edad + Cintura + Diabetes, data = sindrome)

# 2. Generar los gráficos de diagnóstico
# El gráfico de Residuos vs. Apalancamiento es el número 5
plot(modelo, which = 5)

Distancia de Cook

# 1. Instalar y cargar las librerías necesarias (si no las tienes)
# install.packages("ggplot2")
# install.packages("dplyr")
library(ggplot2)
library(dplyr)

# Asumiendo que tu dataframe se llama 'sindrome'

# 2. Crear el modelo lineal
modelo <- lm(PAS ~ PAD + Peso + Edad + Cintura + Diabetes, data = sindrome)

# 3. Calcular la distancia de Cook y añadirla a un dataframe
# Se añade el índice de cada observación para el eje X
cooks_data <- data.frame(
  Indice = 1:nrow(sindrome),
  Distancia = cooks.distance(modelo)
)

# 4. Generar el gráfico
ggplot(cooks_data, aes(x = Indice, y = Distancia)) +
  # Dibuja los "palitos" del gráfico de espárragos
  geom_segment(aes(xend = Indice, yend = 0), color = "grey") +
  # Dibuja los puntos
  geom_point(color = "grey", size = 1.5) +
  # Añade una línea de umbral sugerido
  geom_hline(yintercept = 4 / nrow(sindrome), color = "orange", linetype = "dashed") +
  # Añade texto para el umbral
  annotate("text", x = 100, y = (4 / nrow(sindrome)) + 0.0005, label = "Umbral Sugerido (4/n)", color = "orange") +
  # Títulos y etiquetas
  labs(
    title = "Diagnóstico de Influencia: Distancia de Cook",
    x = "Índice de la Observación",
    y = "Distancia de Cook"
  ) +
  # Tema limpio
  theme_minimal()

# --- 1. Instalar y Cargar Librerías ---
# install.packages("dplyr")
# install.packages("caTools")
# install.packages("pROC")
library(dplyr)
library(caTools)
library(pROC)
Type 'citation("pROC")' for a citation.

Attaching package: 'pROC'
The following objects are masked from 'package:stats':

    cov, smooth, var
# --- 2. Cargar y Preparar los Datos ---

# Cargar los datos (asumiendo que están en un dataframe llamado 'sindrome')
# sindrome <- read.csv("sindrome.xlsx - datos.csv")

# Seleccionar las columnas de interés y eliminar filas con datos faltantes
datos_modelo <- sindrome %>%
  dplyr::select(Diabetes, Edad, Peso, Cintura) %>% # <- Cambio aquí
  na.omit()

# Crear la variable objetivo binaria como un factor (importante para los modelos)
# Asumimos que 1 = SI y 2 = NO. "SI" será la clase positiva.
datos_modelo$Diabetes_bin <- factor(
  ifelse(datos_modelo$Diabetes == 1, "SI", "NO"),
  levels = c("NO", "SI")
)

# --- 3. Dividir Datos y Entrenar el Modelo ---

# Dividir los datos de forma estratificada
set.seed(42) # Para reproducibilidad
split <- sample.split(datos_modelo$Diabetes_bin, SplitRatio = 0.7)
train_set <- subset(datos_modelo, split == TRUE)
test_set <- subset(datos_modelo, split == FALSE)

# Crear y entrenar el modelo de regresión logística
modelo_logistico <- glm(
  Diabetes_bin ~ Edad + Peso + Cintura,
  data = train_set,
  family = "binomial"
)

# --- 4. Generar la Curva ROC y el AUC ---

# Predecir las probabilidades en el conjunto de prueba
predicciones_prob <- predict(modelo_logistico, newdata = test_set, type = "response")

# Crear el objeto ROC
curva_roc <- roc(test_set$Diabetes_bin, predicciones_prob)
Setting levels: control = NO, case = SI
Setting direction: controls < cases
# Calcular el AUC
valor_auc <- auc(curva_roc)
print(paste("El valor del AUC es:", round(valor_auc, 2)))
[1] "El valor del AUC es: 0.54"
# --- 5. Graficar la Curva ROC ---

plot(curva_roc, 
     main = "Curva ROC para Predicción de Diabetes",
     xlab = "Tasa de Falsos Positivos (1 - Especificidad)",
     ylab = "Tasa de Verdaderos Positivos (Sensibilidad)",
     col = "blue",
     lwd = 2,
     print.auc = TRUE, # Imprime el AUC directamente en el gráfico
     print.auc.y = 0.4 # Posición del texto del AUC
)
# Añadir la línea de referencia del azar
abline(a=0, b=1, lty=2, col="grey")