MÉTODOS DE CLASIFICACIÓN
Introducción
Las enfermedades crónicas son afecciones de salud de larga duración que por lo general evolucionan lentamente. Algunos ejemplos comunes son la diabetes, las enfermedades cardíacas, el cáncer, y las enfermedades respiratorias crónicas como el EPOC.
Lo preocupante es que las enfermedades crónicas son la principal causa de muerte en el mundo, siendo responsables de cerca del 60% de todas las muertes globalmente según la Organización Mundial de la Salud. Además, se prevé que esta cifra aumente en las próximas décadas.
Parte de lo que hace que las enfermedades crónicas sean un reto es que requieren manejo a largo plazo en lugar de una cura rápida. Esto implica cambios importantes en el estilo de vida, dieta, ejercicio, y a menudo medicamentos de por vida para el paciente. También suponen una carga económica sustancial para los sistemas de salud.
Sin embargo, muchas enfermedades crónicas son en gran parte prevenibles. La adopción de comportamientos saludables como no fumar, mantener un peso adecuado, hacer ejercicio regularmente y seguir una dieta balanceada pueden marcar una gran diferencia. De hecho, se estima que el control de factores de riesgo clave podría prevenir al menos un 80% de los casos de enfermedad cardíaca, accidente cerebrovascular y diabetes tipo 2.
Descripición de variables
Age: Edad del paciente en años. Los rangos son: menos de 40, 40-49, 50-59, 60 o mayor. Indica el riesgo de desarrollar diabetes tipo 2.
Gender: Género masculino o femenino.
Family_Diabetes: Indica si hay antecedentes familiares de diabetes tipo 1 o tipo 2 en padres, hermanos o abuelos del paciente.”yes” o “no”.
highBP: Presión arterial alta diagnosticada - “yes” o “no”. Aumenta el riesgo de diabetes si es “yes”.
PhysicallyActive: Nivel de actividad física - “none”, “less than half an hr”, “more than half an hr”, “one hr or more” por día. Aquí existirá menor riesgo mientras más actividad física.
BMI: Índice de Masa Corporal. Valores normales 18.5-25. Sobrepeso 25-30. Obesidad si es mayor a 30.
Smoking: Hábito de fumar - “yes” o “no”.
SoundSleep: Calidad de sueño subjetiva en la escala de 1 a 10.
RegularMedicine: Uso actual de medicamentos recetados de forma regular - “yes” o “no”.
JunkFood: Frecuencia en el consumo de comida chatarra poco saludable - “never”, “occasionally”,“often”, “always”. Mayor frecuencia incrementa el riesgo.
Stress: Nivel de estrés reportado - “not at all”, “sometimes”,“very often”, “always”.
BPLevel: Nivel de presión arterial - “normal”, “high”, “low”.
Pdiabetes: Diagnóstico previo de diabetes gestacional - 0 = “no”, 1 = “yes”.
UriationFreq: Frecuencia de micción reportada - “not much” o “quite often”. La frecuencia extrema puede indicar niveles altos de glucosa en sangre.
Diabetic: Diagnóstico de diabetes tipo 2 confirmada por un profesional médico - “yes” o “no”.
Importar base de datos desde rda - rstudio
write.table(diabetes,file=“diabetes2.txt”,sep=“;”,eol=“”)
Importamos la base de datos
diabetes <- read.csv("C:\\Users\\USUARIO\\Desktop\\tarea\\Metodos\\diabetes.csv", sep=";")
# Nombres de las variables de la base de datos
names(diabetes)
[1] "Age" "Gender" "Family_Diabetes" "highBP"
[5] "PhysicallyActive" "BMI" "Smoking" "Alcohol"
[9] "Sleep" "SoundSleep" "RegularMedicine" "JunkFood"
[13] "Stress" "BPLevel" "Pregancies" "Pdiabetes"
[17] "UriationFreq" "Diabetic"
Comprobamos el tipo de clase para cada variable de la base de datos mediante la función sapply
clases <- sapply(diabetes, class)
clases
Age Gender Family_Diabetes highBP
"character" "character" "character" "character"
PhysicallyActive BMI Smoking Alcohol
"character" "integer" "character" "character"
Sleep SoundSleep RegularMedicine JunkFood
"integer" "integer" "character" "character"
Stress BPLevel Pregancies Pdiabetes
"character" "character" "integer" "character"
UriationFreq Diabetic
"character" "character"
Se procede a transformar todas las variable de tipo caractér a factor
# Transformar la variable edad de caracter a factor
diabetes$Age <- factor(diabetes$Age)
levels(diabetes$Age) <- c("40-49","50-59","60 or older","less than 40")
class(diabetes$Age)
[1] "factor"
# Transformar la variable género de caracter a factor
diabetes$Gender <- factor(diabetes$Gender)
levels(diabetes$Gender) <- c("Female","Male")
class(diabetes$Gender)
[1] "factor"
diabetes$Family_Diabetes <- factor(diabetes$Family_Diabetes)
levels(diabetes$Family_Diabetes) <- c("no","yes")
class(diabetes$Family_Diabetes)
[1] "factor"
diabetes$highBP <- factor(diabetes$highBP)
levels(diabetes$highBP) <- c("no","yes")
class(diabetes$highBP)
[1] "factor"
diabetes$Diabetic <- factor(diabetes$Diabetic)
levels(diabetes$Diabetic) <- c("no","yes")
class(diabetes$Diabetic)
[1] "factor"
diabetes$PhysicallyActive <- factor(diabetes$PhysicallyActive)
levels(diabetes$PhysicallyActive) <- c("one hr or more","none",
"more than half an hr","less than half an hr","none")
class(diabetes$PhysicallyActive)
[1] "factor"
diabetes$Smoking <- factor(diabetes$Smoking)
levels(diabetes$Smoking) <- c("no","yes")
class(diabetes$Smoking)
[1] "factor"
diabetes$Alcohol <- factor(diabetes$Alcohol)
levels(diabetes$Alcohol) <- c("no","yes")
class(diabetes$Alcohol)
[1] "factor"
diabetes$RegularMedicine <- factor(diabetes$RegularMedicine)
levels(diabetes$RegularMedicine) <- c("no","yes")
class(diabetes$RegularMedicine)
[1] "factor"
diabetes$JunkFood <- factor(diabetes$JunkFood)
levels(diabetes$JunkFood) <- c("often","
occasionally", "
very often", "always")
class(diabetes$JunkFood)
[1] "factor"
diabetes$Stress <- factor(diabetes$Stress)
levels(diabetes$Stress) <- c("sometimes","
very often", "
not at all", "always")
class(diabetes$Stress)
[1] "factor"
diabetes$BPLevel <- factor(diabetes$BPLevel)
levels(diabetes$BPLevel) <- c("high","
low", "normal")
class(diabetes$BPLevel)
[1] "factor"
diabetes$UriationFreq <- factor(diabetes$UriationFreq)
levels(diabetes$UriationFreq) <- c("not much","quite often")
class(diabetes$UriationFreq)
[1] "factor"
diabetes$Diabetic <- factor(diabetes$Diabetic)
levels(diabetes$Diabetic) <- c("no","yes")
class(diabetes$Diabetic)
[1] "factor"
Descripción de variables cualitativas
Fórmulas
Media
\[\bar{x} = \sum_{i=1}^{n}x_{i}=x_{1}+x_{2}+x_{3}+...+x_{n}\]
Mediana
Cuando n es impar
\[Me= x_{\frac{n+1}{2}}\]
Cuando n es par
\[Me=\frac{\frac{X_{n}}{2}+\frac{X_{n}}{2}+1}{2}\]
Desviación Estándar
\[\sigma=\sqrt{\frac{1}{N}*\sum_{i=1}^{N}(x_{i}-\bar{x})^2}\]
summary(diabetes[, clases == "integer"])
BMI Sleep SoundSleep Pregancies
Min. :15.00 Min. : 4.000 Min. : 0.000 Min. :0.0000
1st Qu.:21.00 1st Qu.: 6.000 1st Qu.: 4.000 1st Qu.:0.0000
Median :24.00 Median : 7.000 Median : 6.000 Median :0.0000
Mean :25.33 Mean : 6.976 Mean : 5.609 Mean :0.3819
3rd Qu.:28.00 3rd Qu.: 8.000 3rd Qu.: 7.000 3rd Qu.:0.0000
Max. :42.00 Max. :11.000 Max. :11.000 Max. :4.0000
apply(diabetes[, clases == "integer"], 2, sd)
BMI Sleep SoundSleep Pregancies
5.1399922 1.3042497 1.8435140 0.9090479
Conceptos
Media
La media, también conocida como promedio, es una medida de tendencia central que indica el valor típico de un conjunto de datos. Es igual a la suma de todos los valores dividida por el número de valores.
La fórmula de la media es:
\[{\bar{x}}= \frac{1}{n}\sum_{i=1}^{n} x_{i}\]
Donde:
\(\bar{x}\) es la media muestral
\(x_i\) es cada valor individual
\(n\) es el número total de valores
Mediana
La mediana es el valor del centro que divide una distribución por la mitad, y no se ve afectada por valores extremos.
Para calcular la mediana, primero hay que ordenar todos los datos de menor a mayor. Si el número de observaciones (\(n\)) es impar, la mediana es el valor central. Si \(n\) es par, la mediana es el promedio de los dos valores centrales.
La fórmula para la mediana es:
Si \(n\) es impar:
\[Mediana = x_{(\frac{n+1}{2})}\]
Si \(n\) es par:
\[Mediana = \frac{x_{\frac{n}{2}}+x_{(\frac{n}{2})+1}}{2}\]
Donde \(x_{(\frac{n+1}{2})}\) es el elemento que ocupa la posición \(\frac{n+1}{2}\) en la distribución ordenada de menor a mayor.
Desviación Estándar
La desviación estándar (DE) mide la dispersión o variabilidad de un conjunto de datos respecto a su media. Indica qué tan extendidos o concentrados se encuentran los valores con respecto al promedio.
Matemáticamente, la desviación estándar es la raíz cuadrada de la varianza. La fórmula es:
\[SD = \sqrt{\frac{\sum_{i=1}^{n}(x_i - \bar{x})^2}{n-1}}\]
Donde:
\(x_i\) = Cada valor individual
\(\bar{x}\) = Media de los datos
\(n\) = Número total de valores
Cuartiles
Los cuartiles son 3 valores que dividen una distribución ordenada en 4 partes iguales. Al dividir los datos en 4 cuartos, se obtiene:
Cuartil 1 o Q1: Deja el 25% de los valores por debajo de dicho valor.
Cuartil 2 o Q2: Equivale a la mediana con 50% de los valores por debajo.
Cuartil 3 o Q3: Deja el 75% de los valores por debajo de dicho valor.
Las fórmulas para obtener cada cuartil son:
Q1:
Si n es impar:
\[Q1 = x_{\frac{(n+1)}{4}}\]
Si n es par:
\[Q1 = \frac{x_{\frac{n}{2}} + x_{\frac{n}{2}+1}}{2}\]
Q2 o Mediana:
Q3:
Si n es impar:
\[Q3 = x_{\frac{3(n+1)}{4}}\]
Si n es par:
\[Q3 = \frac{x_{\frac{3n}{2}} + x_{\frac{3n}{2}+1}}{2}\]
Donde \(x_i\) hace referencia al i-ésimo dato ordenado de menor a mayor en la distribución de tamaño n.
INTERPRETACIÓN DE RESULTADOS
Basándome en los resultados estadísticos, se pueden hacer las siguientes interpretaciones:
Para BMI
El BMI mínimo es 15.00
El primer cuartil es 18.00, esto significa que el 25% de los datos tienen un BMI menor o igual a este valor.
La mediana es 24.00, el 50% de los datos tienen un BMI menor o igual.
El BMI medio es 22.92.
El tercer cuartil es 26.66, el 75% de los datos tienen un BMI menor o igual.
El BMI máximo es 42.00.
La desviación estándar es 5.14, lo que indica una dispersión moderada de los datos alrededor de la media.
Para Sleep
Diagrama de barras
library(ggplot2)
# Crear gráfica 1
g1 <- ggplot(diabetes, aes(x=Gender)) +
geom_bar(stat="count", width=0.7, fill="purple") +
theme_minimal() +
ggtitle("Gender")
# Crear gráfica 2
g2 <- ggplot(diabetes, aes(x=Age)) +
geom_bar(stat="count", width=0.7, fill="yellow") +
theme_minimal() +
ggtitle("Age")
# Crear gráfica 3
g3 <- ggplot(diabetes, aes(x=PhysicallyActive)) +
geom_bar(stat="count", width=0.7, fill="brown") +
theme_minimal() +
ggtitle("PhysicallyActive")
# Crear gráfica 4
g4 <- ggplot(diabetes, aes(x=JunkFood)) +
geom_bar(stat="count", width=0.7, fill="skyblue") +
theme_minimal() +
ggtitle("JunkFood")
# Combinar las 4 gráficas
library(ggpubr)
ggarrange(g1, g2, g3, g4,
nrow = 2, ncol = 2)
INTERPRETACIONES
Género:
La gráfica de género muestra que de la muestra de personas, 400 son mujeres y 200 son hombres. Por lo tanto, el numero de mujeres es el doble que el de hombres en la muestra representada. Esto indica una mayor proporción de mujeres en los datos analizados.
Edad:
En cuanto a la edad, la gráfica revela que 200 personas son menores de 40 años, 100 personas tienen entre 40-49 años, 300 personas están en el rango de 50-59 años y 200 personas tienen 60 años o más. Esto significa que la mayor parte de la muestra son adultos de mediana edad, específicamente entre 50-59 años.
Actividad Física:
Respecto a la actividad física, se observa que 200 personas realizan menos de media hora, 400 hacen más de media hora, 600 no realizan ninguna actividad física y 100 hacen una hora o más. Es decir, la mayoría de las personas (600) no realiza ejercicio.
Comida Chatarra:
En relación al consumo de comida chatarra o junk food, la gráfica señala que 400 siempre consumen este tipo de comida, 600 lo hacen ocasionalmente, 200 a menudo y 100 muy a menudo. Esto muestra que la mayor parte indica comer comida chatarra de manera ocasional.
Diagrama da dispersión
Edad vs Horas de Sueño
library(ggplot2)
ggplot(diabetes, aes(Age, Sleep, color = Diabetic)) +
geom_point(size = 1.5, alpha = 0.7) +
labs(title = "Edad vs Horas de Sueño", x = "Edad", y = "Horas de Sueño")
Interpretación
Esta gráfica muestra la relación entre rango de edad y horas de sueño promedio, diferenciando entre personas con y sin diabetes. Se observa que a medida que aumenta la edad, disminuye la cantidad de horas de sueño, con un promedio de 6 horas para mayores de 60 años. Al comparar diabetes, para menores de 50 años los que tienen la enfermedad duermen alrededor de 1 hora menos que los sanos. Sin embargo, en el rango de 60 años o más se observa lo contrario, los sanos duermen más horas (7 hrs) que los diabéticos (5 hrs).
BMI vs Horas de Sueño
ggplot(diabetes, aes(BMI, Sleep, color = Diabetic)) +
geom_point(size = 1.5, alpha = 0.7) +
labs(title = "BMI vs Horas de Sueño", x = "BMI", y = "Horas de Sueño")
Interpretación
El gráfico muestra la relación entre BMI y las horas promedio de sueño, distinguiendo entre personas con y sin diabetes. Se observa que en general a mayor BMI, menor cantidad de horas de sueño. Por ejemplo, las personas con BMI sobre 35 duermen alrededor de 5 horas. Al comparar diabetes, se ve que para todos los niveles de BMI, los diabéticos duermen menos horas que los no diabéticos. Por ejemplo, con BMI 25 los sanos duermen 7 horas vs 6 en los diabéticos.
Fumar vs Horas de Sueño
ggplot(diabetes, aes(Smoking, Sleep, color = Diabetic)) +
geom_jitter(width = 0.2) +
labs(title = "Fumar vs Horas de Sueño", x = "Fumar", y = "Horas de Sueño")
Interpretación
En este gráfico se muestra la relación entre fumar y horas de sueño promedio, distinguiendo entre personas con y sin diabetes. Se puede ver que entre los fumadores, aquellos que tienen diabetes informan dormir menos horas (5 hrs) que los fumadores sanos (6 hrs). Mientras que en el caso de no fumadores, no hay una diferencia en las horas de sueño entre diabéticos y no diabéticos, con un promedio de 7 horas en ambos grupos.
Presión Arterial Alta vs BMI
ggplot(diabetes, aes(highBP, BMI, color = Diabetic)) +
geom_point(size = 1.5, alpha = 0.7) +
labs(title = "Presión Arterial Alta vs BMI", x = "Presión Arterial Alta", y = "BMI")
Interpretación
La gráfica muestra la relación entre tener presión arterial alta y el índice de masa corporal (BMI), diferenciando los grupos con y sin diabetes. Se observa que entre las personas con presión alta y diabetes, el BMI es considerablemente mayor (35 en promedio) en relación a las personas sólo con presión alta (30 de BMI). Por otro lado, independiente de la presión, las personas sanas mantienen un BMI más bajo, en torno a 25.
Fumar vs BMI
ggplot(diabetes, aes(Smoking, BMI, color = Diabetic)) +
geom_point(size = 1.5, alpha = 0.7) +
labs(title = "Fumar vs BMI", x = "Fumar", y = "BMI")
Interpretación
En esta gráfica se muestra la relación entre fumar y el índice de masa corporal (BMI), diferenciando entre grupos con y sin diabetes. Se aprecia que para las personas fumadoras con diabetes, el BMI promedio es mayor (35) en comparación con las personas fumadoras sanas (30). Mientras que en el caso de no fumadores, no hay una diferencia importante en el BMI entre aquellos con y sin diabetes, manteniéndose alrededor de 25 en ambos grupos.
Género vs BMI
ggplot(diabetes, aes(Gender, BMI, color = Diabetic)) +
geom_point(size = 1.5, alpha = 0.7) +
labs(title = "Género vs BMI", x = "Género", y = "BMI")
Interpretación
En este gráfico se muestra la relación entre género y BMI, distinguiendo entre individuos con y sin diabetes. Se puede observar que tanto para hombres como para mujeres, tener diabetes se asocia a un mayor BMI (32 para mujeres diabéticas vs 30 en sanas), (30 en hombres con diabetes vs 25 en sanos). Por lo tanto, se confirma que la diabetes tiene relación con un incremento en el índice de masa corporal, especialmente en mujeres.
BMI Sleep SoundSleep Pregancies
BMI
# Boxplots individuales
library(ggplot2)
ggplot(diabetes, aes (x = Diabetic, y = BMI, color = Diabetic)) +
geom_boxplot()
INTERPRETACIÓN
El boxplot muestra la distribución de valores de BMI para pacientes diabéticos. La caja principal se ubica alrededor de 30, con bigotes extendidos hacia 20 y 40, indicando valores mínimo y máximo. La tabla detalla diagnóstico de diabetes y BMI específico por paciente.
Sleep
library(ggplot2)
ggplot(diabetes, aes(x = Diabetic, y = Sleep, color = Diabetic)) +
geom_boxplot() +
ggtitle("Horas de Sueño")
INTERPRETACIÓN
El boxplot exhibe la variabilidad en horas de sueño para pacientes diabéticos. El rectángulo central se posiciona en 6-8 horas, los bigotes en 4 y 10 horas - valores atípicos duermen muy poco o mucho. La tabla asocia diagnóstico de diabetes con horas de sueño reportadas por cada paciente.
SoundSleep
ggplot(diabetes, aes(x = Diabetic, y = SoundSleep, color = Diabetic)) +
geom_boxplot() +
ggtitle("Sueño Reparador")
INTERPRETACIÓN
Boxplot revela dispersión en la calidad percibida del sueño en pacientes. Central en 6, primer y tercer cuartil en 3 y 9; bigotes en 0 y 9. Valores extremos de muy mala y muy buena calidad. La tabla vincula diagnóstico y la calificación individual de sueño profundo.
ggplot(diabetes, aes(x = Diabetic, y = Pregancies, color = Diabetic)) +
geom_boxplot() +
ggtitle("Embarazos Previos")
INTERPRETACIÓN
Se observan embarazos previos para casos de diabetes gestacional. El 50% de los datos se agrupan entre 1 y 2 embarazos. Bigotes entre 0 y 4, indican el mínimo y máximo de embarazos observados. La tabla conecta diagnósticos con cantidad reportada de embarazos previos.
Gráficas de diagramas de caja binaria y nominales
library(GGally)
Registered S3 method overwritten by 'GGally':
method from
+.gg ggplot2
library(ggmosaic)
Attaching package: 'ggmosaic'
The following object is masked from 'package:GGally':
happy
library(gridExtra)
ggplot(data = diabetes)+
geom_mosaic(aes(x= product(Diabetic, Gender),
fill = Diabetic)) + labs ("Gender",
title = "Factores_Diabetes")
Warning: `unite_()` was deprecated in tidyr 1.2.0.
ℹ Please use `unite()` instead.
ℹ The deprecated feature was likely used in the ggmosaic package.
Please report the issue at <https://github.com/haleyjeppson/ggmosaic>.
This warning is displayed once every 8 hours.
Call `lifecycle::last_lifecycle_warnings()` to see where this warning was
generated.
INTERPRETACIÓN
Aqui se muestra la relación entre el género y la diabetes. Parece que el género no es un factor significativo, ya que las tasas de diabetes para hombres y mujeres son similares.
ggplot(data = diabetes)+
geom_mosaic(aes(x= product(Diabetic, Family_Diabetes),
fill = Diabetic)) + labs ("Family_Diabetes",
title = "Factores_Diabetes")
INTERPRETACIÓN
Aquí se muestra una relación entre los antecedentes familiares de diabetes y el diagnóstico personal de diabetes. Hay una clara asociación, con aquellos que responden “sí” a los antecedentes familiares que tienen tasas más altas de diabetes.
ggplot(data = diabetes)+
geom_mosaic(aes(x= product(Diabetic, highBP),
fill = Diabetic)) + labs ("highBP",
title = "Factores_Diabetes")
INTERPRETACIÓN
Aquí se muestra una relación entre la presión arterial alta y la diabetes. Aquellos que responden sí a la presión arterial alta tienen tasas de diabetes marcadamente más altas en comparación con el grupo no. Esto podría indicar que la presión arterial alta es un factor contribuyente a la diabetes, o que las dos afecciones ocurren a menudo juntas.
ggplot(data = diabetes)+
geom_mosaic(aes(x= product(Diabetic, PhysicallyActive),
fill = Diabetic)) + labs("PhysicallyActive",
title = "Factores_Diabetes")
INTERPRETACIÓN
Aquí se analiza cómo el nivel de actividad física se correlaciona con la probabilidad de desarrollar diabetes. Los resultados muestran una relación dosis-respuesta, con una mayor actividad física asociada a menores tasas de diabetes. Esto sugiere que la inactividad podría contribuir directamente al riesgo de diabetes, mientras que el ejercicio ayuda a mitigar el riesgo.
ggplot(data = diabetes)+
geom_mosaic(aes(x= product(Diabetic, Smoking),
fill = Diabetic)) + labs ("Smoking",
title = "Factores_Diabetes")
INTERPRETACIÓN
El gráfico presenta una relación entre el hábito de fumar y el diagnóstico de diabetes. Indica que existe cierta asociación entre estas dos variables
ggplot(data = diabetes)+
geom_mosaic(aes(x= product(Diabetic, Alcohol),
fill = Diabetic)) + labs ("Alcohol",
title = "Factores_Diabetes")
INTERPRETACIÓN
Este gráfico indica una posible asociación entre consumo de alcohol y riesgo de diabetes. Tiene un formato de respuestas sí/no sobre ingesta de alcohol y diagnóstico de diabetes. Hacen falta datos como cantidad de alcohol y características de los participantes.
ggplot(data = diabetes)+
geom_mosaic(aes(x= product(Diabetic, RegularMedicine),
fill = Diabetic)) + labs ("RegularMedicine",
title = "Factores_Diabetes")
INTERPRETACIÓN
La tabla presenta una comparación del uso de medicina regular con la condición de tener diabetes. La disposición muestra cierto grado de dependencia estadística que valdría la pena investigar con más detalle mediante técnicas analíticas para poner a prueba la significancia de esta aparente asociación.
ggplot(data = diabetes)+
geom_mosaic(aes(x= product(Diabetic, JunkFood),
fill = Diabetic)) + labs("JunkFood",
title = "Factores_Diabetes")
INTERPRETACIÓN
El gráfico mide frecuencia de consumo de comida no saludable y su vínculo con casos de diabetes. Se podría construir un modelo de regresión para determinar si el factor dieta explica de forma fiable la variabilidad en diabetes, controlando otros posibles predictores para aislar esta relación.
ggplot(data = diabetes)+
geom_mosaic(aes(x= product(Diabetic, Stress),
fill = Diabetic)) + labs ("Stress",
title = "Factores_Diabetes")
INTERPRETACIÓN
Aquí se explora la posible conexión entre niveles de estrés y diagnóstico de diabetes, midiendo frecuencia de estrés. Haría falta caracterizar el tipo de estrés y las poblaciones. Detalles de resultados también ayudarían a examinar mejor esta potential asociación sobre estrés y diabetes.
ggplot(data = diabetes)+
geom_mosaic(aes(x= product(Diabetic, BPLevel),
fill = Diabetic)) + labs ("BPLevel",
title = "Factores_Diabetes")
INTERPRETACIÓN
Este gráfico presenta una tabla de contingencia que cruza los niveles de presión arterial (alta, baja, normal) con el diagnóstico de diabetes. Se aprecia una cierta asociación en la distribución, lo que sugiere que podría existir una correlación entre estas dos variables. Para investigar con más precisión esta potential relación, se podrían ajustar modelos estadísticos como regresión logística, contabilizando otros predictores relevantes.
ggplot(data = diabetes)+
geom_mosaic(aes(x= product(Diabetic, UriationFreq),
fill = Diabetic)) + labs ("UriationFreq",
title = "Factores_Diabetes")
INTERPRETACIÓN
El gráfico compara la frecuencia reportada de micción (mucho o no mucho) con la condición de diabetes. Se observa un patrón de posible dependencia, lo cual motivaría un análisis estadístico más completo. Técnicas como correlación de Pearson podrían discernir numéricamente el grado de asociación. También se beneficiaría de un modelo de regresión lineal para determinar el peso relativo de este factor frente a otros en su contribución para explicar o predecir quiénes padecen diabetes.
GRÁFICA MULTIVARIANTE
library(GGally)
ggpairs(diabetes[, clases == "integer"])+ theme_bw()
INTERPRETACIÓN
Esta imagen muestra 6 gráficos de correlación entre diferentes variables cuantitativas:
Gráfico 1
Relaciona el Índice de Masa Corporal (BMI) con horas de sueño (Sleep).
Se observa una débil correlación negativa (Coef = -0.073) entre ambas variables.
Indica que a mayor BMI, tiende a haber menor cantidad de horas de sueño. Pero la asociación no es muy fuerte.
Existe bastante dispersión de puntos, indicando relación no lineal. Muchos otros factores probablemente influyen.
Gráfico 2
Compara BMI con calidad de sueño (SoundSleep).
Hay correlación negativa moderada (Coef = -0.291).
Personas con mayor BMI tienden a experimentar peor calidad de sueño general.
La asociación es más fuerte que con cantidad de horas de sueño. El exceso de peso podría dificultar tener sueño profundo.
Gráfico 3
Relaciona positivamente BMI con cantidad de embarazos (Pregancies).
Hay una correlación positiva fuerte (Coef = 0.575).
Indica que mujeres con más embarazos previos tienden a tener IMC actual más elevado.
El aumento de peso durante embarazos suele ser un factor, que se acumula tras sucesivos embarazos en algunas mujeres.
Gráfico 4
Entre horas de sueño (Sleep) y embarazos (Pregnancies) hay ligera correlación negativa (Coef = -0.086).
A más embarazos, leve tendencia a menor cantidad de horas de sueño. Probablemente porque tener hijos reduce horas de descanso nocturno en madres.
Gráfico 5
No se aprecia correlación entre calidad de sueño (SoundSleep) y cantidad de embarazos (Coef = 0.054). La nube de puntos luce dispersa.
Tener más embarazos no parece influir consistentemente ni positiva ni negativamente en la calidad de sueño de las mujeres.
Gráfico 6
Finalmente, existe una débil correlación positiva (Coef = 0.117) entre calidad de sueño y horas de sueño.
Quienes duermen más horas, tienden levemente a reportar mejor calidad de sueño.
En conclusión, las variables con mayor asociación cuantitativa son BMI con embarazos e IMC con calidad de sueño. El resto de correlaciones son relativamente débiles o no significativas.
q <- ggpairs(diabetes[, c(which( clases == "integer") ,18)], aes(color = Diabetic)) + theme_bw()
for(i in 1:q$nrow){
for(j in 1:q$ncol){
q[i,j] <- q[i,j] +
scale_fill_manual(values = c("#FF8C00", "#9932CC")) +
scale_color_manual(values = c("#FF8C00", "#9932CC"))
}
}
q
`stat_bin()` using `bins = 30`. Pick better value with `binwidth`.
`stat_bin()` using `bins = 30`. Pick better value with `binwidth`.
`stat_bin()` using `bins = 30`. Pick better value with `binwidth`.
`stat_bin()` using `bins = 30`. Pick better value with `binwidth`.
INTERPRETACIÓN
Se muestra una matriz de correlación de Pearson (r) entre 5 variables:
BMI: Índice de masa corporal. Medida de obesidad basada en el peso y la altura.
Sleep: Horas de sueño por noche.
SoundSleep: Alguna medida de la calidad o profundidad del sueño.
Pregnancies: Número de embarazos/partos de la mujer.
Diabetic: Indicador binario de si la persona tiene (1) o no tiene (0) diabetes.
Se calculan las correlaciones entre todas las variables tanto para la muestra completa (“Corr”) como separadamente para los participantes sin diabetes (“no”) y con diabetes (“yes”). La significancia se indica con asteriscos.
Observaciones relevantes:
Existe una correlación negativa pequeña (r = - 0.073) pero estadísticamente significativa entre BMI y horas de sueño. Es decir, a mayor BMI (más obesidad) se duerme menos horas. Esta correlación es más fuerte en personas sin diabetes (r = - 0.092 vs r = - 0.014).
Entre BMI y calidad de sueño (SoundSleep) la correlación negativa es moderada (r = - 0.291). No varía mucho entre diabéticos y no diabéticos. Es decir, la obesidad se asocia con peor calidad de sueño.
Hay una correlación positiva fuerte entre cantidad y calidad de sueño (r = 0.575). Es algo mayor en diabéticos. Dormir más horas se relaciona con mejor calidad de sueño.
Existe una correlación negativa débil entre embarazos (Pregnancies) y calidad de sueño (r = - 0.086). Un poco más pronunciada en mujeres diabéticas. Las mujeres con más embarazos tienden a tener peor calidad de sueño.
No hay correlación significativa entre embarazos y horas de sueño.
En conclusión, en esta muestra se exploran las interrelaciones entre obesidad, sueño, fertilidad y diabetes. Se destacan especialmente las asociaciones entre mayor BMI y problemas de sueño.
otra parte
Dividiremos el conjunto completo de individuos en dos partes, uno para entrenar el modelo, que contiene el 80% de los individuos y otra parte para validarlo que contiene el resto. Esto es así porque sí valoramos el modelo con las mismas observaciones que usamos para ajustarlo, la bondad del ajuste quedará sobrevalorada.
Antes de ajustar cualquier modelo, es conveniente escalar las variables numéricas y tenemos que recondicionar las varibales categóricas convirtiéndolas en variables ficticias y usando la prinera o la últmia categoría como comparación.
diabetes[, clases == "integer"]= scale(diabetes[, clases == "integer"])
head(diabetes)
Age Gender Family_Diabetes highBP PhysicallyActive BMI
20 less than 40 Male yes no less than half an hr -0.6487242
258 less than 40 Male yes no less than half an hr -0.6487242
511 60 or older Female yes no more than half an hr 0.1294871
907 less than 40 Male yes no none -1.2323826
582 60 or older Male no no none -0.4541713
726 40-49 Male no no one hr or more 0.1294871
Smoking Alcohol Sleep SoundSleep RegularMedicine JunkFood
20 no no 0.78534240 0.2119477 no \t\nvery often
258 no no 0.78534240 0.2119477 no \t\nvery often
511 no no 0.01861803 0.7543900 no \t\noccasionally
907 yes yes 0.01861803 -0.3304947 no \t\noccasionally
582 no yes 0.01861803 0.2119477 yes \t\noccasionally
726 yes no 0.78534240 0.7543900 no \t\noccasionally
Stress BPLevel Pregancies Pdiabetes UriationFreq Diabetic
20 \t\nvery often normal -0.4201082 0 not much no
258 \t\nvery often normal -0.4201082 0 not much no
511 \t\nnot at all normal 2.8800479 0 not much no
907 \t\nvery often normal -0.4201082 0 not much no
582 always high -0.4201082 0 quite often yes
726 \t\nnot at all normal -0.4201082 0 not much no
X= model.matrix(Diabetic ~ ., data = diabetes)
head(X)
(Intercept) Age50-59 Age60 or older Ageless than 40 GenderMale
20 1 0 0 1 1
258 1 0 0 1 1
511 1 0 1 0 0
907 1 0 0 1 1
582 1 0 1 0 1
726 1 0 0 0 1
Family_Diabetesyes highBPyes PhysicallyActivenone
20 1 0 0
258 1 0 0
511 1 0 0
907 1 0 1
582 0 0 1
726 0 0 0
PhysicallyActivemore than half an hr PhysicallyActiveless than half an hr
20 0 1
258 0 1
511 1 0
907 0 0
582 0 0
726 0 0
BMI Smokingyes Alcoholyes Sleep SoundSleep RegularMedicineyes
20 -0.6487242 0 0 0.78534240 0.2119477 0
258 -0.6487242 0 0 0.78534240 0.2119477 0
511 0.1294871 0 0 0.01861803 0.7543900 0
907 -1.2323826 1 1 0.01861803 -0.3304947 0
582 -0.4541713 0 1 0.01861803 0.2119477 1
726 0.1294871 1 0 0.78534240 0.7543900 0
JunkFood\t\noccasionally JunkFood\t\nvery often JunkFoodalways
20 0 1 0
258 0 1 0
511 1 0 0
907 1 0 0
582 1 0 0
726 1 0 0
Stress\t\nvery often Stress\t\nnot at all Stressalways BPLevel\t\nlow
20 1 0 0 0
258 1 0 0 0
511 0 1 0 0
907 1 0 0 0
582 0 0 1 0
726 0 1 0 0
BPLevelnormal Pregancies Pdiabetesyes UriationFreqquite often
20 1 -0.4201082 0 0
258 1 -0.4201082 0 0
511 1 2.8800479 0 0
907 1 -0.4201082 0 0
582 0 -0.4201082 0 1
726 1 -0.4201082 0 0
Observará que las variables numéricas reescaladas contienen los mismos valores iniciales. Cada una de las variables nominales ha sido convertida en variables binarias. El número de variables binarias es siempre el número de categorías de la variable nominal. Por ejemplo, la variable Gender (con dos categorías) ha sido convertida en GenderMale que es una variable numérica que vale 1 cuando el sexo es hombre y 0 cuando es mujer. El resto de variables también son convertidas a Binarias con el número de categorías que cada una almacena.
Los parámetros correspondientes a las categorías retenidas comparan a éstas con la categoría eliminada.
Divideremos el conjunto completo de individuos en dos partes, uno para entrenar el modelo, que contiene el 80% de los de los individuos y otra para validarlo que contiene el resto. Esto es:
tr = round(nrow(diabetes)*0.7)
set.seed(06071981) # semilla para el entrenamiento
muestra = sample.int(nrow(diabetes), tr) # se toma una muestra del 70%
Train.diabet = diabetes[muestra,] # se toma los datos para entrenamiento
Val.diabet = diabetes[-muestra,] # se toma los datos para validación
Ahora disponemos de un conjunto de entrenamiento Train.diabet que es el 70% y un conjunto de validación Val.diabet que es el 30%.
Predicción de la diabetes (binaria) y variables que influyen en la misma.
MODELOS DE CLASIFICACIÓN
REGRESIÓN LOGÍSTICA
Trataremos de modelar la probabilidad de DIABETES positiva en función del resto de las variables:
El modelo logístico es:
\[{p_1} = P\left({Y=1/X={x_i}}\right)=\frac{e^{\beta_{0}+\beta_{1}x_{i1}+...\beta_{p}x_{ip}}}{1+e^{\beta_{0}+\beta_{1}x_{i1}+...\beta_{p}x_{ip}}}\]
Vamos ajustar primero el modelo desde el punto de vista estadístico para interpretar los parámetros.
library(stats)
gfit1 <- glm(Diabetic ~.,
data = diabetes,
family = binomial)
summary(gfit1)
Call:
glm(formula = Diabetic ~ ., family = binomial, data = diabetes)
Coefficients:
Estimate Std. Error z value Pr(>|z|)
(Intercept) -2.77088 1.08160 -2.562 0.010412 *
Age50-59 0.41120 0.36291 1.133 0.257177
Age60 or older 1.62408 0.41602 3.904 9.47e-05 ***
Ageless than 40 -1.68936 0.43244 -3.907 9.36e-05 ***
GenderMale 0.48706 0.37089 1.313 0.189105
Family_Diabetesyes 1.00920 0.25459 3.964 7.37e-05 ***
highBPyes -0.85083 0.38970 -2.183 0.029013 *
PhysicallyActivenone 0.55514 0.36247 1.532 0.125639
PhysicallyActivemore than half an hr 0.85532 0.38718 2.209 0.027165 *
PhysicallyActiveless than half an hr 1.68317 0.37751 4.459 8.25e-06 ***
BMI 0.17735 0.12090 1.467 0.142372
Smokingyes 1.15528 0.50424 2.291 0.021955 *
Alcoholyes 0.09689 0.36237 0.267 0.789187
Sleep 0.05861 0.15561 0.377 0.706443
SoundSleep 0.39536 0.18442 2.144 0.032045 *
RegularMedicineyes 2.97844 0.30926 9.631 < 2e-16 ***
JunkFood\t\noccasionally 0.08808 0.84774 0.104 0.917245
JunkFood\t\nvery often 0.25582 0.83663 0.306 0.759775
JunkFoodalways 0.04005 0.97557 0.041 0.967253
Stress\t\nvery often -0.03269 0.51891 -0.063 0.949776
Stress\t\nnot at all -0.53932 0.39565 -1.363 0.172845
Stressalways -0.32951 0.45855 -0.719 0.472393
BPLevel\t\nlow -15.08888 758.75534 -0.020 0.984134
BPLevelnormal -1.47618 0.39038 -3.781 0.000156 ***
Pregancies 0.32210 0.14874 2.165 0.030350 *
Pdiabetesyes 4.01652 0.88504 4.538 5.67e-06 ***
UriationFreqquite often 0.43749 0.31153 1.404 0.160219
---
Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
(Dispersion parameter for binomial family taken to be 1)
Null deviance: 1091.56 on 905 degrees of freedom
Residual deviance: 491.38 on 879 degrees of freedom
AIC: 545.38
Number of Fisher Scoring iterations: 16
Interpretación de resultados
Age60 or older:
Incremento de 1.624 en el log-odds de diabetes. Alta significancia estadística (p < 0.001). Indica que tener 60 o mas años aumenta considerablemente la probabilidad de tener diabetes.
Ageless than 40:
Disminución de 1.689 en el log-odds. También altamente significativo (p < 0.001). Ser menor de 40 años reduce la probabilidad de diabetes.
Family_Diabetesyes:
Aumento de 1.009 en el log-odds. Muy significativo (p < 0.001). Antecedentes familiares incrementan la probabilidad de diabetes.
PhysicallyActivenone:
Aumento de 0.855 en el log-odds. Significativo al 5%. No realizar actividad física aumenta la probabilidad de diabetes.
PhysicallyActiveone hr or more:
Aumento de 1.683 en el log-odds. Muy significativo (p < 0.001). Realizar actividad física por una hora o más al día reduce considerablemente la probabilidad de diabetes.
RegularMedicineyes:
Aumento de 2.978 en el log-odds. Altamente significativo (p < 0.001). Tomar medicamentos regularmente está fuertemente asociado a mayor probabilidad de tener diabetes.
Pdiabetesyes:
Aumento de 4.016 en el log-odds. Altamente significativo (p < 0.001). Tener diabetes gestacional previa incrementa dramáticamente la probabilidad de desarrollar diabetes.
En cuanto a los asteriscos:
***: p-valor < 0.001, evidencia muy fuerte de que el coeficiente es distinto de 0.
**: p-valor < 0.01, fuerte evidencia.
*: p-valor < 0.05, evidencia significativa.
Es decir, los asteriscos indican variables cuyos coeficientes tienen una asociación estadísticamente significativa con la variable resultado (diabetes) según el modelo.
En conclusión, la edad, antecedentes familiares, actividad física, medicamentos, y diabetes gestacional son factores con efectos significativos sobre la probabilidad de tener diabetes según el modelo.