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

Gráfico 2

Gráfico 3

Gráfico 4

Gráfico 5

Gráfico 6

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.