[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"
SindromePAS
DataSet
Variables
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
- ¿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.
- ¿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.
- 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:PASyPADtienen 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.
- 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.
- 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")