PREDICCIÓN DE LA DIABETES DE TIPO 2 MEDIANTE MÉTODOS DE CLASIFICACIÓN DE APRENDIZAJE AUTOMÁTICO

INTRODUCCIÓN

El presente trabajo expone el tema de predicción de diabetes de tipo 2 mediante métodos de clasificación de aprendizaje automático, que se puede definir como el anuncio de un hecho a futuro a partir del historial de datos de los pacienes y la aplicación de algoritmos, con la finalidad de dar solución y prevenir la enfermedad.

La diabetes mellitus tipo 2 (DM2) es una enfermedad crónica que se caracteriza por niveles elevados de azúcar en la sangre. Además, es una de las enfermedades crónicas más comunes en el mundo, con una prevalencia estimada de 463 millones de personas en 2020.

Para analizar esta problemáica es necesario mencionar sus causas. Una de ellas es el factor genético, por lo que las personas con antecedentes familiares de DM2 tienen un mayor riesgo de desarrollar la enfermedad.Los factores ambientales tambíen inciden, ya que aumentan el riesgo de DM2, estas son: sobrepeso y obesidad, inactividad física, edad, historial familiar de diabetes, etinia y algunas afecciones médicas.

La investigación de esta problemática social se realizó por el interés de predecir la DM2 con la ayuda de la aplicación de los métodos de aprendizaje automático, ya que tiene el potencial de mejorar el diagnóstico temprano de la enfermedad y, por lo tanto, de prevenir complicaciones graves.

Por otro lado, profundizar el tema como interés académico es esencial para el entendimiento de la aplicación de los métodos de clasificación en temas de la salud. Ya que, como estudiante es importante la práctica e interpretación adecuada para la toma de decisiones.

Por lo que, este trabajo va dirigido a personas e instituciones con interés sobre el tema, a estudiantes que deseen reforzar técnicas y sobretodo quienes tienen tendencia a contener DM2.

Se espera que la información sea de agrado del lector.

IDENTIFICACIÓN DE VARIABLES

diabetes2 <- read.csv("C:/Users/ROCI/Downloads/DATA-20231130/diabetes2.csv", sep=";")
View(diabetes2)
str(diabetes2)
'data.frame':   906 obs. of  18 variables:
 $ Age             : chr  "less than 40" "less than 40" "60 or older" "less than 40" ...
 $ Gender          : chr  "Male" "Male" "Female" "Male" ...
 $ Family_Diabetes : chr  "yes" "yes" "yes" "yes" ...
 $ highBP          : chr  "no" "no" "no" "no" ...
 $ PhysicallyActive: chr  "one hr or more" "one hr or more" "none" "more than half an hr" ...
 $ BMI             : int  22 22 26 19 23 26 26 23 22 38 ...
 $ Smoking         : chr  "no" "no" "no" "yes" ...
 $ Alcohol         : chr  "no" "no" "no" "yes" ...
 $ Sleep           : int  8 8 7 7 7 8 8 7 6 8 ...
 $ SoundSleep      : int  6 6 7 5 6 7 3 7 2 6 ...
 $ RegularMedicine : chr  "no" "no" "no" "no" ...
 $ JunkFood        : chr  "often" "often" "occasionally" "occasionally" ...
 $ Stress          : chr  "not at all" "not at all" "sometimes" "not at all" ...
 $ BPLevel         : chr  "normal" "normal" "normal" "normal" ...
 $ Pregancies      : int  0 0 3 0 0 0 0 1 0 0 ...
 $ Pdiabetes       : chr  "0" "0" "0" "0" ...
 $ UriationFreq    : chr  "not much" "not much" "not much" "not much" ...
 $ Diabetic        : chr  "no" "no" "no" "no" ...
  • Age: Edad. Variable cualitativa de tipo factor.

  • Gender: Género del individuo en estudio. Variable de tipo caracter.

  • Family_Diabetes: Antecedentes familiares de diabetes. Variable caracter.

  • highBP: Diagnóstico de hipertensión arterial,

  • PhysicallyActive: Actividad física, si la persona corre, camina entre otros. Variable de tipo caracter.

  • BMI: Índice de masa corporal. Variable de tipo entero.

  • Smoking: Tabaquismo. Variable de tipo caracter.

  • Alcohol: Consumo de alcohol. Variable de tipo caracter.

  • Sleep: Horas de sueño. Variable de tipo entero.

  • Sound Sleep: Horas de sueño profundo. Variable de tipo entero.

  • RegularMedicine: Si la persona toma regularmente medicamentos. Variable de tipo caracter.

  • JunkFood: Comida basura. Variable de tipo caracter.

  • Stress: Estrés. Variable tipo caracter.

  • BPLevel: Nivel BPL. Variable tipo caracter.

  • Pregancies: Embarazos. Variable tipo entero.

  • Pdiabetes: Variable tipo entero.

  • UriationFreq Frecuencia urinaria. Variale tipo caracter.

  • Diabético: Diabético. Variable tipo caracter.

PROCESO

clases <- sapply(diabetes2, 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" 

Cambiamos a factor a edad

diabetes2$Age= factor (diabetes2$Age)
levels(diabetes2$Age) = c ("40-49", "50-59", "60 or older", "less than 40")
class(diabetes2$Age)
[1] "factor"

Cambiamos a factor a genero

diabetes2$Gender= factor (diabetes2$Gender)
levels(diabetes2$Gender) = c ("Male", "Female")
class(diabetes2$Gender)
[1] "factor"

Cambiamos a factor family_Diabetes

diabetes2$Family_Diabetes= factor (diabetes2$Family_Diabetes)
levels(diabetes2$Family_Diabetes) = c ("Male", "Female")
class(diabetes2$Family_Diabetes)
[1] "factor"

Cambiamos a factor HighBP

diabetes2$highBP= factor (diabetes2$highBP)
levels(diabetes2$highBP) = c ("Male", "Female")
class(diabetes2$highBP)
[1] "factor"

Cambiamos a factor PhysicallyActive

diabetes2$PhysicallyActive = factor (diabetes2$highBP)
levels(diabetes2$PhysicallyActive) = c ("one hr or more", "none","  
more than half an hr", "more than half an hr", "less than half an hr")
class(diabetes2$PhysicallyActive)
[1] "factor"

Cambiamos a factor Smoking

diabetes2$Smoking= factor (diabetes2$Smoking)
levels(diabetes2$Smoking) = c ("yes", "no")
class(diabetes2$Smoking)
[1] "factor"

Cambiamos a factor Alcohol

diabetes2$Alcohol= factor (diabetes2$Alcohol)
levels(diabetes2$Alcohol) = c ("yes", "no")
class(diabetes2$Alcohol)
[1] "factor"

Cambiamos a factor RegularMedicine

diabetes2$RegularMedicine = factor (diabetes2$RegularMedicine )
levels(diabetes2$RegularMedicine ) = c ("yes", "no")
class(diabetes2$RegularMedicine )
[1] "factor"

Cambiamos a factor JunkFood

diabetes2$JunkFood = factor (diabetes2$JunkFood )
levels(diabetes2$JunkFood ) = c ("often", "occasionally", "always", "very often")
class(diabetes2$JunkFood )
[1] "factor"

Cambiamos a factor JunkFood

diabetes2$Stress  = factor (diabetes2$Stress  )
levels(diabetes2$Stress  ) = c ("not at all", "sometimes", "very often", "always")
class(diabetes2$Stress )
[1] "factor"

Cambiamos a factor BPLevel

diabetes2$BPLevel <- factor(diabetes2$BPLevel)
levels(diabetes2$BPLevel) <- c("high"," low", "normal")
class(diabetes2$BPLevel)
[1] "factor"

Cambiamos a factor BPLevel

diabetes2$UriationFreq <- factor(diabetes2$UriationFreq)
levels(diabetes2$UriationFreq) <- c("not much","quite often")
class(diabetes2$UriationFreq)
[1] "factor"

Cambiamos a factor Diabetic

diabetes2$Diabetic <- factor(diabetes2$Diabetic)
levels(diabetes2$Diabetic) <- c("no","yes")
class(diabetes2$Diabetic)
[1] "factor"
Classes <- sapply(diabetes2, class)
for (i in 1:ncol(diabetes2))
  if(Classes [i]== "integer")
    diabetes2[[i]]= as.numeric(diabetes2[[i]])
Classes = sapply(diabetes2, class)
Classes
             Age           Gender  Family_Diabetes           highBP 
        "factor"         "factor"         "factor"         "factor" 
PhysicallyActive              BMI          Smoking          Alcohol 
        "factor"        "numeric"         "factor"         "factor" 
           Sleep       SoundSleep  RegularMedicine         JunkFood 
       "numeric"        "numeric"         "factor"         "factor" 
          Stress          BPLevel       Pregancies        Pdiabetes 
        "factor"         "factor"        "numeric"      "character" 
    UriationFreq         Diabetic 
        "factor"         "factor"