Introduccion

Se realiza el cargado de los datos

#Se cargan los datos
df<-read.csv("C:/Users/User/Documents/diabetes.csv",sep=",")
str(df)
## 'data.frame':    768 obs. of  9 variables:
##  $ Pregnancies             : int  6 1 8 1 0 5 3 10 2 8 ...
##  $ Glucose                 : int  148 85 183 89 137 116 78 115 197 125 ...
##  $ BloodPressure           : int  72 66 64 66 40 74 50 0 70 96 ...
##  $ SkinThickness           : int  35 29 0 23 35 0 32 0 45 0 ...
##  $ Insulin                 : int  0 0 0 94 168 0 88 0 543 0 ...
##  $ BMI                     : num  33.6 26.6 23.3 28.1 43.1 25.6 31 35.3 30.5 0 ...
##  $ DiabetesPedigreeFunction: num  0.627 0.351 0.672 0.167 2.288 ...
##  $ Age                     : int  50 31 32 21 33 30 26 29 53 54 ...
##  $ Outcome                 : int  1 0 1 0 1 0 1 0 1 1 ...
head(df)
##   Pregnancies Glucose BloodPressure SkinThickness Insulin  BMI
## 1           6     148            72            35       0 33.6
## 2           1      85            66            29       0 26.6
## 3           8     183            64             0       0 23.3
## 4           1      89            66            23      94 28.1
## 5           0     137            40            35     168 43.1
## 6           5     116            74             0       0 25.6
##   DiabetesPedigreeFunction Age Outcome
## 1                    0.627  50       1
## 2                    0.351  31       0
## 3                    0.672  32       1
## 4                    0.167  21       0
## 5                    2.288  33       1
## 6                    0.201  30       0

Podemos observar que tenemos variables de tipo numerico en nuestro dataset, sin embargo debemos convertir los valores 0 de algunas de las variables a NA para luego poder realizar el analisis de los datos faltantes

df$Glucose[df$Glucose == 0] <- NA
df$BloodPressure[df$BloodPressure == 0] <- NA
df$SkinThickness[df$SkinThickness == 0] <- NA
df$Insulin[df$Insulin == 0] <- NA
df$BMI[df$BMI == 0] <- NA

revisamos nuevamente

head(df)
##   Pregnancies Glucose BloodPressure SkinThickness Insulin  BMI
## 1           6     148            72            35      NA 33.6
## 2           1      85            66            29      NA 26.6
## 3           8     183            64            NA      NA 23.3
## 4           1      89            66            23      94 28.1
## 5           0     137            40            35     168 43.1
## 6           5     116            74            NA      NA 25.6
##   DiabetesPedigreeFunction Age Outcome
## 1                    0.627  50       1
## 2                    0.351  31       0
## 3                    0.672  32       1
## 4                    0.167  21       0
## 5                    2.288  33       1
## 6                    0.201  30       0

Como las variables fueron codificadas correctamente ahora podemos realizar el analisis exploratorio del dataset.

Analisis Exploratorio de datos

Realizamos el summary de los datos del dataframe

summary(df)
##   Pregnancies        Glucose      BloodPressure    SkinThickness  
##  Min.   : 0.000   Min.   : 44.0   Min.   : 24.00   Min.   : 7.00  
##  1st Qu.: 1.000   1st Qu.: 99.0   1st Qu.: 64.00   1st Qu.:22.00  
##  Median : 3.000   Median :117.0   Median : 72.00   Median :29.00  
##  Mean   : 3.845   Mean   :121.7   Mean   : 72.41   Mean   :29.15  
##  3rd Qu.: 6.000   3rd Qu.:141.0   3rd Qu.: 80.00   3rd Qu.:36.00  
##  Max.   :17.000   Max.   :199.0   Max.   :122.00   Max.   :99.00  
##                   NA's   :5       NA's   :35       NA's   :227    
##     Insulin            BMI        DiabetesPedigreeFunction      Age       
##  Min.   : 14.00   Min.   :18.20   Min.   :0.0780           Min.   :21.00  
##  1st Qu.: 76.25   1st Qu.:27.50   1st Qu.:0.2437           1st Qu.:24.00  
##  Median :125.00   Median :32.30   Median :0.3725           Median :29.00  
##  Mean   :155.55   Mean   :32.46   Mean   :0.4719           Mean   :33.24  
##  3rd Qu.:190.00   3rd Qu.:36.60   3rd Qu.:0.6262           3rd Qu.:41.00  
##  Max.   :846.00   Max.   :67.10   Max.   :2.4200           Max.   :81.00  
##  NA's   :374      NA's   :11                                              
##     Outcome     
##  Min.   :0.000  
##  1st Qu.:0.000  
##  Median :0.000  
##  Mean   :0.349  
##  3rd Qu.:1.000  
##  Max.   :1.000  
## 

podemos observar que en algunas de las variables hay una gran cantidad de NA por lo que debemos realizar el tratamiento de datos faltantes antes de poder continuar con el EDA

Analisis de datos faltantes

En primer lugar realizamos la visualizacion de los datos faltantes mediante missmap y gg_mis_var

library(Amelia)
## Cargando paquete requerido: Rcpp
## ## 
## ## Amelia II: Multiple Imputation
## ## (Version 1.8.3, built: 2024-11-07)
## ## Copyright (C) 2005-2025 James Honaker, Gary King and Matthew Blackwell
## ## Refer to http://gking.harvard.edu/amelia/ for more information
## ##
library(naniar)
gg_miss_var(df, show_pct = TRUE)

missmap(df,col=c("red","blue"),legend=TRUE)

Podemos observar que las variables de insulina y Skinthickness son las que tienen una mayor cantidad de datos faltantes mientras que las otras variables tienen un porcentaje mucho mas bajo en comparacion Para verificar esto de mejor manera, analizaremos el porcentaje de NA para verificar de mejor forma como se deben tomar en cuenta

#revisamos el porcentaje de datos faltantes para determinar como imputar cada variable
colSums(is.na(df)) / nrow(df) * 100
##              Pregnancies                  Glucose            BloodPressure 
##                0.0000000                0.6510417                4.5572917 
##            SkinThickness                  Insulin                      BMI 
##               29.5572917               48.6979167                1.4322917 
## DiabetesPedigreeFunction                      Age                  Outcome 
##                0.0000000                0.0000000                0.0000000

Podemos observar que las variables de insulina y Skinthickness tienen mas del 20% de faltantes. La insulina de hecho tiene mas de 40% por lo que se debe tratar con cuidado. el resto tiene porcentajes menores que el 5% por lo que no generaran un impacto muy grande en las variables pero para no perder estos datos los vamos a imputar de manera basica. verificaremos primero las distribuciones de las variables antes de realizar cualquier imputacion

library(tidyr)
library(dplyr)
## 
## Adjuntando el paquete: 'dplyr'
## The following objects are masked from 'package:stats':
## 
##     filter, lag
## The following objects are masked from 'package:base':
## 
##     intersect, setdiff, setequal, union
vars_numericas_originales <- df %>%
  select(-Outcome) %>%
  select(where(is.numeric))

shapiro_resultados_originales <- vars_numericas_originales %>%
  summarise(across(everything(), 
                   ~ list(shapiro.test(.x)), 
                   .names = "{.col}")) %>%
  pivot_longer(cols = everything(),
               names_to = "Variable",
               values_to = "Shapiro") %>%
  mutate(Statistic = sapply(Shapiro, function(x) x$statistic),
         p_value = sapply(Shapiro, function(x) x$p.value)) %>%
  select(-Shapiro)
print(shapiro_resultados_originales)
## # A tibble: 8 × 3
##   Variable                 Statistic  p_value
##   <chr>                        <dbl>    <dbl>
## 1 Pregnancies                  0.904 1.61e-21
## 2 Glucose                      0.970 1.72e-11
## 3 BloodPressure                0.990 9.45e- 5
## 4 SkinThickness                0.968 1.78e- 9
## 5 Insulin                      0.804 1.70e-21
## 6 BMI                          0.980 8.56e- 9
## 7 DiabetesPedigreeFunction     0.837 2.48e-27
## 8 Age                          0.875 2.40e-24

Podemos observar que el p-valor de todas las variables es menor que 0.05 por lo tanto tienen una distribucion no normal. esto se va a tomar en cuenta despues de imputar para saber si las distribuciones cambiaron o no.

Imputaciones

Se realizan las imputaciones del las variables con NA para las que tienen un porcentaje bajo se les imputa por la mediana

df$BloodPressure[is.na(df$BloodPressure)] <- median(df$BloodPressure, na.rm = TRUE)
df$BMI[is.na(df$BMI)] <- median(df$BMI, na.rm = TRUE)
df$Glucose[is.na(df$Glucose)]<- median(df$Glucose, na.rm = TRUE)

Para las variables Insulin y SkinThickness se les realizara imputacion mas avanzada usando diferentes opciones de la libreria mice para tratar los datos faltantes, utilizando una funcion para realizar el proceso mas facilmente

library(mice)
## 
## Adjuntando el paquete: 'mice'
## The following object is masked from 'package:stats':
## 
##     filter
## The following objects are masked from 'package:base':
## 
##     cbind, rbind
#realizamos una funcion para la imputacion y graficacion de los metodos
imputar_y_graficar <- function(df, metodo, columnas_na){
  
  # Selección de datos según el método
  if(metodo == "pmm"){
    data_in <- df  # Usa todo el dataframe
  } else {
    data_in <- df[, columnas_na]  # Usa solo columnas con NA
  }
  
  # Imputación
  imp <- mice(data_in, method = metodo, m = 5, maxit = 50, seed = 500)
  df_imp <- complete(imp)
  
  # Histogramas comparativos para SkinThickness
  g1 <- ggplot(data.frame(value=df$SkinThickness), aes(x=value)) +
    geom_histogram(fill="#FBD000", color="#E52521", alpha=0.9) +
    ggtitle("Original data - SkinThickness") +
    xlab('Skin Thickness') + ylab('Frequency')
  
  g2 <- ggplot(data.frame(value=df_imp$SkinThickness), aes(x=value)) +
    geom_histogram(fill="#43B047", color="#049CD8", alpha=0.9) +
    ggtitle(paste(metodo, "imputation - SkinThickness")) +
    xlab('Skin Thickness') + ylab('Frequency')
  
  # Histogramas comparativos para Insulin
  g3 <- ggplot(data.frame(value=df$Insulin), aes(x=value)) +
    geom_histogram(fill="#FBD000", color="#E52521", alpha=0.9) +
    ggtitle("Original data - Insulin") +
    xlab('Insulin') + ylab('Frequency')
  
  g4 <- ggplot(data.frame(value=df_imp$Insulin), aes(x=value)) +
    geom_histogram(fill="#43B047", color="#049CD8", alpha=0.9) +
    ggtitle(paste(metodo, "imputation - Insulin")) +
    xlab('Insulin') + ylab('Frequency')
  
  # Mostrar histogramas
  grid.arrange(g1, g2, ncol = 2)
  grid.arrange(g3, g4, ncol = 2)
  
  # Density plot
  print(densityplot(imp))
  
  # Convergencia
  print(plot(imp))
  
  return(df_imp) 
}

revisamos metodo por metodo para determinar cual es mas eficiente para estas 2 variables

library(ggplot2)
library(grid)
library(gridExtra)
## 
## Adjuntando el paquete: 'gridExtra'
## The following object is masked from 'package:dplyr':
## 
##     combine
cols_na <- c("SkinThickness", "Insulin")
df_pmm <- imputar_y_graficar(df, "pmm", cols_na)
## 
##  iter imp variable
##   1   1  SkinThickness  Insulin
##   1   2  SkinThickness  Insulin
##   1   3  SkinThickness  Insulin
##   1   4  SkinThickness  Insulin
##   1   5  SkinThickness  Insulin
##   2   1  SkinThickness  Insulin
##   2   2  SkinThickness  Insulin
##   2   3  SkinThickness  Insulin
##   2   4  SkinThickness  Insulin
##   2   5  SkinThickness  Insulin
##   3   1  SkinThickness  Insulin
##   3   2  SkinThickness  Insulin
##   3   3  SkinThickness  Insulin
##   3   4  SkinThickness  Insulin
##   3   5  SkinThickness  Insulin
##   4   1  SkinThickness  Insulin
##   4   2  SkinThickness  Insulin
##   4   3  SkinThickness  Insulin
##   4   4  SkinThickness  Insulin
##   4   5  SkinThickness  Insulin
##   5   1  SkinThickness  Insulin
##   5   2  SkinThickness  Insulin
##   5   3  SkinThickness  Insulin
##   5   4  SkinThickness  Insulin
##   5   5  SkinThickness  Insulin
##   6   1  SkinThickness  Insulin
##   6   2  SkinThickness  Insulin
##   6   3  SkinThickness  Insulin
##   6   4  SkinThickness  Insulin
##   6   5  SkinThickness  Insulin
##   7   1  SkinThickness  Insulin
##   7   2  SkinThickness  Insulin
##   7   3  SkinThickness  Insulin
##   7   4  SkinThickness  Insulin
##   7   5  SkinThickness  Insulin
##   8   1  SkinThickness  Insulin
##   8   2  SkinThickness  Insulin
##   8   3  SkinThickness  Insulin
##   8   4  SkinThickness  Insulin
##   8   5  SkinThickness  Insulin
##   9   1  SkinThickness  Insulin
##   9   2  SkinThickness  Insulin
##   9   3  SkinThickness  Insulin
##   9   4  SkinThickness  Insulin
##   9   5  SkinThickness  Insulin
##   10   1  SkinThickness  Insulin
##   10   2  SkinThickness  Insulin
##   10   3  SkinThickness  Insulin
##   10   4  SkinThickness  Insulin
##   10   5  SkinThickness  Insulin
##   11   1  SkinThickness  Insulin
##   11   2  SkinThickness  Insulin
##   11   3  SkinThickness  Insulin
##   11   4  SkinThickness  Insulin
##   11   5  SkinThickness  Insulin
##   12   1  SkinThickness  Insulin
##   12   2  SkinThickness  Insulin
##   12   3  SkinThickness  Insulin
##   12   4  SkinThickness  Insulin
##   12   5  SkinThickness  Insulin
##   13   1  SkinThickness  Insulin
##   13   2  SkinThickness  Insulin
##   13   3  SkinThickness  Insulin
##   13   4  SkinThickness  Insulin
##   13   5  SkinThickness  Insulin
##   14   1  SkinThickness  Insulin
##   14   2  SkinThickness  Insulin
##   14   3  SkinThickness  Insulin
##   14   4  SkinThickness  Insulin
##   14   5  SkinThickness  Insulin
##   15   1  SkinThickness  Insulin
##   15   2  SkinThickness  Insulin
##   15   3  SkinThickness  Insulin
##   15   4  SkinThickness  Insulin
##   15   5  SkinThickness  Insulin
##   16   1  SkinThickness  Insulin
##   16   2  SkinThickness  Insulin
##   16   3  SkinThickness  Insulin
##   16   4  SkinThickness  Insulin
##   16   5  SkinThickness  Insulin
##   17   1  SkinThickness  Insulin
##   17   2  SkinThickness  Insulin
##   17   3  SkinThickness  Insulin
##   17   4  SkinThickness  Insulin
##   17   5  SkinThickness  Insulin
##   18   1  SkinThickness  Insulin
##   18   2  SkinThickness  Insulin
##   18   3  SkinThickness  Insulin
##   18   4  SkinThickness  Insulin
##   18   5  SkinThickness  Insulin
##   19   1  SkinThickness  Insulin
##   19   2  SkinThickness  Insulin
##   19   3  SkinThickness  Insulin
##   19   4  SkinThickness  Insulin
##   19   5  SkinThickness  Insulin
##   20   1  SkinThickness  Insulin
##   20   2  SkinThickness  Insulin
##   20   3  SkinThickness  Insulin
##   20   4  SkinThickness  Insulin
##   20   5  SkinThickness  Insulin
##   21   1  SkinThickness  Insulin
##   21   2  SkinThickness  Insulin
##   21   3  SkinThickness  Insulin
##   21   4  SkinThickness  Insulin
##   21   5  SkinThickness  Insulin
##   22   1  SkinThickness  Insulin
##   22   2  SkinThickness  Insulin
##   22   3  SkinThickness  Insulin
##   22   4  SkinThickness  Insulin
##   22   5  SkinThickness  Insulin
##   23   1  SkinThickness  Insulin
##   23   2  SkinThickness  Insulin
##   23   3  SkinThickness  Insulin
##   23   4  SkinThickness  Insulin
##   23   5  SkinThickness  Insulin
##   24   1  SkinThickness  Insulin
##   24   2  SkinThickness  Insulin
##   24   3  SkinThickness  Insulin
##   24   4  SkinThickness  Insulin
##   24   5  SkinThickness  Insulin
##   25   1  SkinThickness  Insulin
##   25   2  SkinThickness  Insulin
##   25   3  SkinThickness  Insulin
##   25   4  SkinThickness  Insulin
##   25   5  SkinThickness  Insulin
##   26   1  SkinThickness  Insulin
##   26   2  SkinThickness  Insulin
##   26   3  SkinThickness  Insulin
##   26   4  SkinThickness  Insulin
##   26   5  SkinThickness  Insulin
##   27   1  SkinThickness  Insulin
##   27   2  SkinThickness  Insulin
##   27   3  SkinThickness  Insulin
##   27   4  SkinThickness  Insulin
##   27   5  SkinThickness  Insulin
##   28   1  SkinThickness  Insulin
##   28   2  SkinThickness  Insulin
##   28   3  SkinThickness  Insulin
##   28   4  SkinThickness  Insulin
##   28   5  SkinThickness  Insulin
##   29   1  SkinThickness  Insulin
##   29   2  SkinThickness  Insulin
##   29   3  SkinThickness  Insulin
##   29   4  SkinThickness  Insulin
##   29   5  SkinThickness  Insulin
##   30   1  SkinThickness  Insulin
##   30   2  SkinThickness  Insulin
##   30   3  SkinThickness  Insulin
##   30   4  SkinThickness  Insulin
##   30   5  SkinThickness  Insulin
##   31   1  SkinThickness  Insulin
##   31   2  SkinThickness  Insulin
##   31   3  SkinThickness  Insulin
##   31   4  SkinThickness  Insulin
##   31   5  SkinThickness  Insulin
##   32   1  SkinThickness  Insulin
##   32   2  SkinThickness  Insulin
##   32   3  SkinThickness  Insulin
##   32   4  SkinThickness  Insulin
##   32   5  SkinThickness  Insulin
##   33   1  SkinThickness  Insulin
##   33   2  SkinThickness  Insulin
##   33   3  SkinThickness  Insulin
##   33   4  SkinThickness  Insulin
##   33   5  SkinThickness  Insulin
##   34   1  SkinThickness  Insulin
##   34   2  SkinThickness  Insulin
##   34   3  SkinThickness  Insulin
##   34   4  SkinThickness  Insulin
##   34   5  SkinThickness  Insulin
##   35   1  SkinThickness  Insulin
##   35   2  SkinThickness  Insulin
##   35   3  SkinThickness  Insulin
##   35   4  SkinThickness  Insulin
##   35   5  SkinThickness  Insulin
##   36   1  SkinThickness  Insulin
##   36   2  SkinThickness  Insulin
##   36   3  SkinThickness  Insulin
##   36   4  SkinThickness  Insulin
##   36   5  SkinThickness  Insulin
##   37   1  SkinThickness  Insulin
##   37   2  SkinThickness  Insulin
##   37   3  SkinThickness  Insulin
##   37   4  SkinThickness  Insulin
##   37   5  SkinThickness  Insulin
##   38   1  SkinThickness  Insulin
##   38   2  SkinThickness  Insulin
##   38   3  SkinThickness  Insulin
##   38   4  SkinThickness  Insulin
##   38   5  SkinThickness  Insulin
##   39   1  SkinThickness  Insulin
##   39   2  SkinThickness  Insulin
##   39   3  SkinThickness  Insulin
##   39   4  SkinThickness  Insulin
##   39   5  SkinThickness  Insulin
##   40   1  SkinThickness  Insulin
##   40   2  SkinThickness  Insulin
##   40   3  SkinThickness  Insulin
##   40   4  SkinThickness  Insulin
##   40   5  SkinThickness  Insulin
##   41   1  SkinThickness  Insulin
##   41   2  SkinThickness  Insulin
##   41   3  SkinThickness  Insulin
##   41   4  SkinThickness  Insulin
##   41   5  SkinThickness  Insulin
##   42   1  SkinThickness  Insulin
##   42   2  SkinThickness  Insulin
##   42   3  SkinThickness  Insulin
##   42   4  SkinThickness  Insulin
##   42   5  SkinThickness  Insulin
##   43   1  SkinThickness  Insulin
##   43   2  SkinThickness  Insulin
##   43   3  SkinThickness  Insulin
##   43   4  SkinThickness  Insulin
##   43   5  SkinThickness  Insulin
##   44   1  SkinThickness  Insulin
##   44   2  SkinThickness  Insulin
##   44   3  SkinThickness  Insulin
##   44   4  SkinThickness  Insulin
##   44   5  SkinThickness  Insulin
##   45   1  SkinThickness  Insulin
##   45   2  SkinThickness  Insulin
##   45   3  SkinThickness  Insulin
##   45   4  SkinThickness  Insulin
##   45   5  SkinThickness  Insulin
##   46   1  SkinThickness  Insulin
##   46   2  SkinThickness  Insulin
##   46   3  SkinThickness  Insulin
##   46   4  SkinThickness  Insulin
##   46   5  SkinThickness  Insulin
##   47   1  SkinThickness  Insulin
##   47   2  SkinThickness  Insulin
##   47   3  SkinThickness  Insulin
##   47   4  SkinThickness  Insulin
##   47   5  SkinThickness  Insulin
##   48   1  SkinThickness  Insulin
##   48   2  SkinThickness  Insulin
##   48   3  SkinThickness  Insulin
##   48   4  SkinThickness  Insulin
##   48   5  SkinThickness  Insulin
##   49   1  SkinThickness  Insulin
##   49   2  SkinThickness  Insulin
##   49   3  SkinThickness  Insulin
##   49   4  SkinThickness  Insulin
##   49   5  SkinThickness  Insulin
##   50   1  SkinThickness  Insulin
##   50   2  SkinThickness  Insulin
##   50   3  SkinThickness  Insulin
##   50   4  SkinThickness  Insulin
##   50   5  SkinThickness  Insulin
## `stat_bin()` using `bins = 30`. Pick better value with `binwidth`.
## Warning: Removed 227 rows containing non-finite outside the scale range
## (`stat_bin()`).
## `stat_bin()` using `bins = 30`. Pick better value with `binwidth`.

## `stat_bin()` using `bins = 30`. Pick better value with `binwidth`.
## Warning: Removed 374 rows containing non-finite outside the scale range
## (`stat_bin()`).
## `stat_bin()` using `bins = 30`. Pick better value with `binwidth`.

Podemos observar que la imputacion pmm mantiene la distribucion de ambas variables de manera muy similar y en el grafico de densidad podemos observar que si se asemejan a la distribucion original de color azul y que hay convergencia al realizar el plot de la imputacion

df_pred<-imputar_y_graficar(df,"norm.predict",cols_na)
## 
##  iter imp variable
##   1   1  SkinThickness  Insulin
##   1   2  SkinThickness  Insulin
##   1   3  SkinThickness  Insulin
##   1   4  SkinThickness  Insulin
##   1   5  SkinThickness  Insulin
##   2   1  SkinThickness  Insulin
##   2   2  SkinThickness  Insulin
##   2   3  SkinThickness  Insulin
##   2   4  SkinThickness  Insulin
##   2   5  SkinThickness  Insulin
##   3   1  SkinThickness  Insulin
##   3   2  SkinThickness  Insulin
##   3   3  SkinThickness  Insulin
##   3   4  SkinThickness  Insulin
##   3   5  SkinThickness  Insulin
##   4   1  SkinThickness  Insulin
##   4   2  SkinThickness  Insulin
##   4   3  SkinThickness  Insulin
##   4   4  SkinThickness  Insulin
##   4   5  SkinThickness  Insulin
##   5   1  SkinThickness  Insulin
##   5   2  SkinThickness  Insulin
##   5   3  SkinThickness  Insulin
##   5   4  SkinThickness  Insulin
##   5   5  SkinThickness  Insulin
##   6   1  SkinThickness  Insulin
##   6   2  SkinThickness  Insulin
##   6   3  SkinThickness  Insulin
##   6   4  SkinThickness  Insulin
##   6   5  SkinThickness  Insulin
##   7   1  SkinThickness  Insulin
##   7   2  SkinThickness  Insulin
##   7   3  SkinThickness  Insulin
##   7   4  SkinThickness  Insulin
##   7   5  SkinThickness  Insulin
##   8   1  SkinThickness  Insulin
##   8   2  SkinThickness  Insulin
##   8   3  SkinThickness  Insulin
##   8   4  SkinThickness  Insulin
##   8   5  SkinThickness  Insulin
##   9   1  SkinThickness  Insulin
##   9   2  SkinThickness  Insulin
##   9   3  SkinThickness  Insulin
##   9   4  SkinThickness  Insulin
##   9   5  SkinThickness  Insulin
##   10   1  SkinThickness  Insulin
##   10   2  SkinThickness  Insulin
##   10   3  SkinThickness  Insulin
##   10   4  SkinThickness  Insulin
##   10   5  SkinThickness  Insulin
##   11   1  SkinThickness  Insulin
##   11   2  SkinThickness  Insulin
##   11   3  SkinThickness  Insulin
##   11   4  SkinThickness  Insulin
##   11   5  SkinThickness  Insulin
##   12   1  SkinThickness  Insulin
##   12   2  SkinThickness  Insulin
##   12   3  SkinThickness  Insulin
##   12   4  SkinThickness  Insulin
##   12   5  SkinThickness  Insulin
##   13   1  SkinThickness  Insulin
##   13   2  SkinThickness  Insulin
##   13   3  SkinThickness  Insulin
##   13   4  SkinThickness  Insulin
##   13   5  SkinThickness  Insulin
##   14   1  SkinThickness  Insulin
##   14   2  SkinThickness  Insulin
##   14   3  SkinThickness  Insulin
##   14   4  SkinThickness  Insulin
##   14   5  SkinThickness  Insulin
##   15   1  SkinThickness  Insulin
##   15   2  SkinThickness  Insulin
##   15   3  SkinThickness  Insulin
##   15   4  SkinThickness  Insulin
##   15   5  SkinThickness  Insulin
##   16   1  SkinThickness  Insulin
##   16   2  SkinThickness  Insulin
##   16   3  SkinThickness  Insulin
##   16   4  SkinThickness  Insulin
##   16   5  SkinThickness  Insulin
##   17   1  SkinThickness  Insulin
##   17   2  SkinThickness  Insulin
##   17   3  SkinThickness  Insulin
##   17   4  SkinThickness  Insulin
##   17   5  SkinThickness  Insulin
##   18   1  SkinThickness  Insulin
##   18   2  SkinThickness  Insulin
##   18   3  SkinThickness  Insulin
##   18   4  SkinThickness  Insulin
##   18   5  SkinThickness  Insulin
##   19   1  SkinThickness  Insulin
##   19   2  SkinThickness  Insulin
##   19   3  SkinThickness  Insulin
##   19   4  SkinThickness  Insulin
##   19   5  SkinThickness  Insulin
##   20   1  SkinThickness  Insulin
##   20   2  SkinThickness  Insulin
##   20   3  SkinThickness  Insulin
##   20   4  SkinThickness  Insulin
##   20   5  SkinThickness  Insulin
##   21   1  SkinThickness  Insulin
##   21   2  SkinThickness  Insulin
##   21   3  SkinThickness  Insulin
##   21   4  SkinThickness  Insulin
##   21   5  SkinThickness  Insulin
##   22   1  SkinThickness  Insulin
##   22   2  SkinThickness  Insulin
##   22   3  SkinThickness  Insulin
##   22   4  SkinThickness  Insulin
##   22   5  SkinThickness  Insulin
##   23   1  SkinThickness  Insulin
##   23   2  SkinThickness  Insulin
##   23   3  SkinThickness  Insulin
##   23   4  SkinThickness  Insulin
##   23   5  SkinThickness  Insulin
##   24   1  SkinThickness  Insulin
##   24   2  SkinThickness  Insulin
##   24   3  SkinThickness  Insulin
##   24   4  SkinThickness  Insulin
##   24   5  SkinThickness  Insulin
##   25   1  SkinThickness  Insulin
##   25   2  SkinThickness  Insulin
##   25   3  SkinThickness  Insulin
##   25   4  SkinThickness  Insulin
##   25   5  SkinThickness  Insulin
##   26   1  SkinThickness  Insulin
##   26   2  SkinThickness  Insulin
##   26   3  SkinThickness  Insulin
##   26   4  SkinThickness  Insulin
##   26   5  SkinThickness  Insulin
##   27   1  SkinThickness  Insulin
##   27   2  SkinThickness  Insulin
##   27   3  SkinThickness  Insulin
##   27   4  SkinThickness  Insulin
##   27   5  SkinThickness  Insulin
##   28   1  SkinThickness  Insulin
##   28   2  SkinThickness  Insulin
##   28   3  SkinThickness  Insulin
##   28   4  SkinThickness  Insulin
##   28   5  SkinThickness  Insulin
##   29   1  SkinThickness  Insulin
##   29   2  SkinThickness  Insulin
##   29   3  SkinThickness  Insulin
##   29   4  SkinThickness  Insulin
##   29   5  SkinThickness  Insulin
##   30   1  SkinThickness  Insulin
##   30   2  SkinThickness  Insulin
##   30   3  SkinThickness  Insulin
##   30   4  SkinThickness  Insulin
##   30   5  SkinThickness  Insulin
##   31   1  SkinThickness  Insulin
##   31   2  SkinThickness  Insulin
##   31   3  SkinThickness  Insulin
##   31   4  SkinThickness  Insulin
##   31   5  SkinThickness  Insulin
##   32   1  SkinThickness  Insulin
##   32   2  SkinThickness  Insulin
##   32   3  SkinThickness  Insulin
##   32   4  SkinThickness  Insulin
##   32   5  SkinThickness  Insulin
##   33   1  SkinThickness  Insulin
##   33   2  SkinThickness  Insulin
##   33   3  SkinThickness  Insulin
##   33   4  SkinThickness  Insulin
##   33   5  SkinThickness  Insulin
##   34   1  SkinThickness  Insulin
##   34   2  SkinThickness  Insulin
##   34   3  SkinThickness  Insulin
##   34   4  SkinThickness  Insulin
##   34   5  SkinThickness  Insulin
##   35   1  SkinThickness  Insulin
##   35   2  SkinThickness  Insulin
##   35   3  SkinThickness  Insulin
##   35   4  SkinThickness  Insulin
##   35   5  SkinThickness  Insulin
##   36   1  SkinThickness  Insulin
##   36   2  SkinThickness  Insulin
##   36   3  SkinThickness  Insulin
##   36   4  SkinThickness  Insulin
##   36   5  SkinThickness  Insulin
##   37   1  SkinThickness  Insulin
##   37   2  SkinThickness  Insulin
##   37   3  SkinThickness  Insulin
##   37   4  SkinThickness  Insulin
##   37   5  SkinThickness  Insulin
##   38   1  SkinThickness  Insulin
##   38   2  SkinThickness  Insulin
##   38   3  SkinThickness  Insulin
##   38   4  SkinThickness  Insulin
##   38   5  SkinThickness  Insulin
##   39   1  SkinThickness  Insulin
##   39   2  SkinThickness  Insulin
##   39   3  SkinThickness  Insulin
##   39   4  SkinThickness  Insulin
##   39   5  SkinThickness  Insulin
##   40   1  SkinThickness  Insulin
##   40   2  SkinThickness  Insulin
##   40   3  SkinThickness  Insulin
##   40   4  SkinThickness  Insulin
##   40   5  SkinThickness  Insulin
##   41   1  SkinThickness  Insulin
##   41   2  SkinThickness  Insulin
##   41   3  SkinThickness  Insulin
##   41   4  SkinThickness  Insulin
##   41   5  SkinThickness  Insulin
##   42   1  SkinThickness  Insulin
##   42   2  SkinThickness  Insulin
##   42   3  SkinThickness  Insulin
##   42   4  SkinThickness  Insulin
##   42   5  SkinThickness  Insulin
##   43   1  SkinThickness  Insulin
##   43   2  SkinThickness  Insulin
##   43   3  SkinThickness  Insulin
##   43   4  SkinThickness  Insulin
##   43   5  SkinThickness  Insulin
##   44   1  SkinThickness  Insulin
##   44   2  SkinThickness  Insulin
##   44   3  SkinThickness  Insulin
##   44   4  SkinThickness  Insulin
##   44   5  SkinThickness  Insulin
##   45   1  SkinThickness  Insulin
##   45   2  SkinThickness  Insulin
##   45   3  SkinThickness  Insulin
##   45   4  SkinThickness  Insulin
##   45   5  SkinThickness  Insulin
##   46   1  SkinThickness  Insulin
##   46   2  SkinThickness  Insulin
##   46   3  SkinThickness  Insulin
##   46   4  SkinThickness  Insulin
##   46   5  SkinThickness  Insulin
##   47   1  SkinThickness  Insulin
##   47   2  SkinThickness  Insulin
##   47   3  SkinThickness  Insulin
##   47   4  SkinThickness  Insulin
##   47   5  SkinThickness  Insulin
##   48   1  SkinThickness  Insulin
##   48   2  SkinThickness  Insulin
##   48   3  SkinThickness  Insulin
##   48   4  SkinThickness  Insulin
##   48   5  SkinThickness  Insulin
##   49   1  SkinThickness  Insulin
##   49   2  SkinThickness  Insulin
##   49   3  SkinThickness  Insulin
##   49   4  SkinThickness  Insulin
##   49   5  SkinThickness  Insulin
##   50   1  SkinThickness  Insulin
##   50   2  SkinThickness  Insulin
##   50   3  SkinThickness  Insulin
##   50   4  SkinThickness  Insulin
##   50   5  SkinThickness  Insulin
## `stat_bin()` using `bins = 30`. Pick better value with `binwidth`.
## Warning: Removed 227 rows containing non-finite outside the scale range
## (`stat_bin()`).
## `stat_bin()` using `bins = 30`. Pick better value with `binwidth`.

## `stat_bin()` using `bins = 30`. Pick better value with `binwidth`.
## Warning: Removed 374 rows containing non-finite outside the scale range
## (`stat_bin()`).
## `stat_bin()` using `bins = 30`. Pick better value with `binwidth`.

Podemos observar que a diferencia del metodo pmm el metodo predict conserva bien la tendencia central de las variables pero reduce su variabilidad,pero el density plot de la insulina no se asemeja en cuanto a la distribucion original. Por lo tanto el metodo norm pred no es una opcion viable a la hora de utilizar para la imputacion

df_norm<-imputar_y_graficar(df,"norm",cols_na)
## 
##  iter imp variable
##   1   1  SkinThickness  Insulin
##   1   2  SkinThickness  Insulin
##   1   3  SkinThickness  Insulin
##   1   4  SkinThickness  Insulin
##   1   5  SkinThickness  Insulin
##   2   1  SkinThickness  Insulin
##   2   2  SkinThickness  Insulin
##   2   3  SkinThickness  Insulin
##   2   4  SkinThickness  Insulin
##   2   5  SkinThickness  Insulin
##   3   1  SkinThickness  Insulin
##   3   2  SkinThickness  Insulin
##   3   3  SkinThickness  Insulin
##   3   4  SkinThickness  Insulin
##   3   5  SkinThickness  Insulin
##   4   1  SkinThickness  Insulin
##   4   2  SkinThickness  Insulin
##   4   3  SkinThickness  Insulin
##   4   4  SkinThickness  Insulin
##   4   5  SkinThickness  Insulin
##   5   1  SkinThickness  Insulin
##   5   2  SkinThickness  Insulin
##   5   3  SkinThickness  Insulin
##   5   4  SkinThickness  Insulin
##   5   5  SkinThickness  Insulin
##   6   1  SkinThickness  Insulin
##   6   2  SkinThickness  Insulin
##   6   3  SkinThickness  Insulin
##   6   4  SkinThickness  Insulin
##   6   5  SkinThickness  Insulin
##   7   1  SkinThickness  Insulin
##   7   2  SkinThickness  Insulin
##   7   3  SkinThickness  Insulin
##   7   4  SkinThickness  Insulin
##   7   5  SkinThickness  Insulin
##   8   1  SkinThickness  Insulin
##   8   2  SkinThickness  Insulin
##   8   3  SkinThickness  Insulin
##   8   4  SkinThickness  Insulin
##   8   5  SkinThickness  Insulin
##   9   1  SkinThickness  Insulin
##   9   2  SkinThickness  Insulin
##   9   3  SkinThickness  Insulin
##   9   4  SkinThickness  Insulin
##   9   5  SkinThickness  Insulin
##   10   1  SkinThickness  Insulin
##   10   2  SkinThickness  Insulin
##   10   3  SkinThickness  Insulin
##   10   4  SkinThickness  Insulin
##   10   5  SkinThickness  Insulin
##   11   1  SkinThickness  Insulin
##   11   2  SkinThickness  Insulin
##   11   3  SkinThickness  Insulin
##   11   4  SkinThickness  Insulin
##   11   5  SkinThickness  Insulin
##   12   1  SkinThickness  Insulin
##   12   2  SkinThickness  Insulin
##   12   3  SkinThickness  Insulin
##   12   4  SkinThickness  Insulin
##   12   5  SkinThickness  Insulin
##   13   1  SkinThickness  Insulin
##   13   2  SkinThickness  Insulin
##   13   3  SkinThickness  Insulin
##   13   4  SkinThickness  Insulin
##   13   5  SkinThickness  Insulin
##   14   1  SkinThickness  Insulin
##   14   2  SkinThickness  Insulin
##   14   3  SkinThickness  Insulin
##   14   4  SkinThickness  Insulin
##   14   5  SkinThickness  Insulin
##   15   1  SkinThickness  Insulin
##   15   2  SkinThickness  Insulin
##   15   3  SkinThickness  Insulin
##   15   4  SkinThickness  Insulin
##   15   5  SkinThickness  Insulin
##   16   1  SkinThickness  Insulin
##   16   2  SkinThickness  Insulin
##   16   3  SkinThickness  Insulin
##   16   4  SkinThickness  Insulin
##   16   5  SkinThickness  Insulin
##   17   1  SkinThickness  Insulin
##   17   2  SkinThickness  Insulin
##   17   3  SkinThickness  Insulin
##   17   4  SkinThickness  Insulin
##   17   5  SkinThickness  Insulin
##   18   1  SkinThickness  Insulin
##   18   2  SkinThickness  Insulin
##   18   3  SkinThickness  Insulin
##   18   4  SkinThickness  Insulin
##   18   5  SkinThickness  Insulin
##   19   1  SkinThickness  Insulin
##   19   2  SkinThickness  Insulin
##   19   3  SkinThickness  Insulin
##   19   4  SkinThickness  Insulin
##   19   5  SkinThickness  Insulin
##   20   1  SkinThickness  Insulin
##   20   2  SkinThickness  Insulin
##   20   3  SkinThickness  Insulin
##   20   4  SkinThickness  Insulin
##   20   5  SkinThickness  Insulin
##   21   1  SkinThickness  Insulin
##   21   2  SkinThickness  Insulin
##   21   3  SkinThickness  Insulin
##   21   4  SkinThickness  Insulin
##   21   5  SkinThickness  Insulin
##   22   1  SkinThickness  Insulin
##   22   2  SkinThickness  Insulin
##   22   3  SkinThickness  Insulin
##   22   4  SkinThickness  Insulin
##   22   5  SkinThickness  Insulin
##   23   1  SkinThickness  Insulin
##   23   2  SkinThickness  Insulin
##   23   3  SkinThickness  Insulin
##   23   4  SkinThickness  Insulin
##   23   5  SkinThickness  Insulin
##   24   1  SkinThickness  Insulin
##   24   2  SkinThickness  Insulin
##   24   3  SkinThickness  Insulin
##   24   4  SkinThickness  Insulin
##   24   5  SkinThickness  Insulin
##   25   1  SkinThickness  Insulin
##   25   2  SkinThickness  Insulin
##   25   3  SkinThickness  Insulin
##   25   4  SkinThickness  Insulin
##   25   5  SkinThickness  Insulin
##   26   1  SkinThickness  Insulin
##   26   2  SkinThickness  Insulin
##   26   3  SkinThickness  Insulin
##   26   4  SkinThickness  Insulin
##   26   5  SkinThickness  Insulin
##   27   1  SkinThickness  Insulin
##   27   2  SkinThickness  Insulin
##   27   3  SkinThickness  Insulin
##   27   4  SkinThickness  Insulin
##   27   5  SkinThickness  Insulin
##   28   1  SkinThickness  Insulin
##   28   2  SkinThickness  Insulin
##   28   3  SkinThickness  Insulin
##   28   4  SkinThickness  Insulin
##   28   5  SkinThickness  Insulin
##   29   1  SkinThickness  Insulin
##   29   2  SkinThickness  Insulin
##   29   3  SkinThickness  Insulin
##   29   4  SkinThickness  Insulin
##   29   5  SkinThickness  Insulin
##   30   1  SkinThickness  Insulin
##   30   2  SkinThickness  Insulin
##   30   3  SkinThickness  Insulin
##   30   4  SkinThickness  Insulin
##   30   5  SkinThickness  Insulin
##   31   1  SkinThickness  Insulin
##   31   2  SkinThickness  Insulin
##   31   3  SkinThickness  Insulin
##   31   4  SkinThickness  Insulin
##   31   5  SkinThickness  Insulin
##   32   1  SkinThickness  Insulin
##   32   2  SkinThickness  Insulin
##   32   3  SkinThickness  Insulin
##   32   4  SkinThickness  Insulin
##   32   5  SkinThickness  Insulin
##   33   1  SkinThickness  Insulin
##   33   2  SkinThickness  Insulin
##   33   3  SkinThickness  Insulin
##   33   4  SkinThickness  Insulin
##   33   5  SkinThickness  Insulin
##   34   1  SkinThickness  Insulin
##   34   2  SkinThickness  Insulin
##   34   3  SkinThickness  Insulin
##   34   4  SkinThickness  Insulin
##   34   5  SkinThickness  Insulin
##   35   1  SkinThickness  Insulin
##   35   2  SkinThickness  Insulin
##   35   3  SkinThickness  Insulin
##   35   4  SkinThickness  Insulin
##   35   5  SkinThickness  Insulin
##   36   1  SkinThickness  Insulin
##   36   2  SkinThickness  Insulin
##   36   3  SkinThickness  Insulin
##   36   4  SkinThickness  Insulin
##   36   5  SkinThickness  Insulin
##   37   1  SkinThickness  Insulin
##   37   2  SkinThickness  Insulin
##   37   3  SkinThickness  Insulin
##   37   4  SkinThickness  Insulin
##   37   5  SkinThickness  Insulin
##   38   1  SkinThickness  Insulin
##   38   2  SkinThickness  Insulin
##   38   3  SkinThickness  Insulin
##   38   4  SkinThickness  Insulin
##   38   5  SkinThickness  Insulin
##   39   1  SkinThickness  Insulin
##   39   2  SkinThickness  Insulin
##   39   3  SkinThickness  Insulin
##   39   4  SkinThickness  Insulin
##   39   5  SkinThickness  Insulin
##   40   1  SkinThickness  Insulin
##   40   2  SkinThickness  Insulin
##   40   3  SkinThickness  Insulin
##   40   4  SkinThickness  Insulin
##   40   5  SkinThickness  Insulin
##   41   1  SkinThickness  Insulin
##   41   2  SkinThickness  Insulin
##   41   3  SkinThickness  Insulin
##   41   4  SkinThickness  Insulin
##   41   5  SkinThickness  Insulin
##   42   1  SkinThickness  Insulin
##   42   2  SkinThickness  Insulin
##   42   3  SkinThickness  Insulin
##   42   4  SkinThickness  Insulin
##   42   5  SkinThickness  Insulin
##   43   1  SkinThickness  Insulin
##   43   2  SkinThickness  Insulin
##   43   3  SkinThickness  Insulin
##   43   4  SkinThickness  Insulin
##   43   5  SkinThickness  Insulin
##   44   1  SkinThickness  Insulin
##   44   2  SkinThickness  Insulin
##   44   3  SkinThickness  Insulin
##   44   4  SkinThickness  Insulin
##   44   5  SkinThickness  Insulin
##   45   1  SkinThickness  Insulin
##   45   2  SkinThickness  Insulin
##   45   3  SkinThickness  Insulin
##   45   4  SkinThickness  Insulin
##   45   5  SkinThickness  Insulin
##   46   1  SkinThickness  Insulin
##   46   2  SkinThickness  Insulin
##   46   3  SkinThickness  Insulin
##   46   4  SkinThickness  Insulin
##   46   5  SkinThickness  Insulin
##   47   1  SkinThickness  Insulin
##   47   2  SkinThickness  Insulin
##   47   3  SkinThickness  Insulin
##   47   4  SkinThickness  Insulin
##   47   5  SkinThickness  Insulin
##   48   1  SkinThickness  Insulin
##   48   2  SkinThickness  Insulin
##   48   3  SkinThickness  Insulin
##   48   4  SkinThickness  Insulin
##   48   5  SkinThickness  Insulin
##   49   1  SkinThickness  Insulin
##   49   2  SkinThickness  Insulin
##   49   3  SkinThickness  Insulin
##   49   4  SkinThickness  Insulin
##   49   5  SkinThickness  Insulin
##   50   1  SkinThickness  Insulin
##   50   2  SkinThickness  Insulin
##   50   3  SkinThickness  Insulin
##   50   4  SkinThickness  Insulin
##   50   5  SkinThickness  Insulin
## `stat_bin()` using `bins = 30`. Pick better value with `binwidth`.
## Warning: Removed 227 rows containing non-finite outside the scale range
## (`stat_bin()`).
## `stat_bin()` using `bins = 30`. Pick better value with `binwidth`.

## `stat_bin()` using `bins = 30`. Pick better value with `binwidth`.
## Warning: Removed 374 rows containing non-finite outside the scale range
## (`stat_bin()`).
## `stat_bin()` using `bins = 30`. Pick better value with `binwidth`.

Se puede observar que en las variables como insulin las lineas rojas no se asemejan a la linea azul por lo que el metodo norm no es el mas adecuado para esa variable. A pesar de que la distribucion se asemeja mas a la original en comparacion del metodo predict La convergencia del metodo norm en el plot se asemeja mas a la convergencia del metodo pmm

df_nob<-imputar_y_graficar(df,"norm.nob",cols_na)
## 
##  iter imp variable
##   1   1  SkinThickness  Insulin
##   1   2  SkinThickness  Insulin
##   1   3  SkinThickness  Insulin
##   1   4  SkinThickness  Insulin
##   1   5  SkinThickness  Insulin
##   2   1  SkinThickness  Insulin
##   2   2  SkinThickness  Insulin
##   2   3  SkinThickness  Insulin
##   2   4  SkinThickness  Insulin
##   2   5  SkinThickness  Insulin
##   3   1  SkinThickness  Insulin
##   3   2  SkinThickness  Insulin
##   3   3  SkinThickness  Insulin
##   3   4  SkinThickness  Insulin
##   3   5  SkinThickness  Insulin
##   4   1  SkinThickness  Insulin
##   4   2  SkinThickness  Insulin
##   4   3  SkinThickness  Insulin
##   4   4  SkinThickness  Insulin
##   4   5  SkinThickness  Insulin
##   5   1  SkinThickness  Insulin
##   5   2  SkinThickness  Insulin
##   5   3  SkinThickness  Insulin
##   5   4  SkinThickness  Insulin
##   5   5  SkinThickness  Insulin
##   6   1  SkinThickness  Insulin
##   6   2  SkinThickness  Insulin
##   6   3  SkinThickness  Insulin
##   6   4  SkinThickness  Insulin
##   6   5  SkinThickness  Insulin
##   7   1  SkinThickness  Insulin
##   7   2  SkinThickness  Insulin
##   7   3  SkinThickness  Insulin
##   7   4  SkinThickness  Insulin
##   7   5  SkinThickness  Insulin
##   8   1  SkinThickness  Insulin
##   8   2  SkinThickness  Insulin
##   8   3  SkinThickness  Insulin
##   8   4  SkinThickness  Insulin
##   8   5  SkinThickness  Insulin
##   9   1  SkinThickness  Insulin
##   9   2  SkinThickness  Insulin
##   9   3  SkinThickness  Insulin
##   9   4  SkinThickness  Insulin
##   9   5  SkinThickness  Insulin
##   10   1  SkinThickness  Insulin
##   10   2  SkinThickness  Insulin
##   10   3  SkinThickness  Insulin
##   10   4  SkinThickness  Insulin
##   10   5  SkinThickness  Insulin
##   11   1  SkinThickness  Insulin
##   11   2  SkinThickness  Insulin
##   11   3  SkinThickness  Insulin
##   11   4  SkinThickness  Insulin
##   11   5  SkinThickness  Insulin
##   12   1  SkinThickness  Insulin
##   12   2  SkinThickness  Insulin
##   12   3  SkinThickness  Insulin
##   12   4  SkinThickness  Insulin
##   12   5  SkinThickness  Insulin
##   13   1  SkinThickness  Insulin
##   13   2  SkinThickness  Insulin
##   13   3  SkinThickness  Insulin
##   13   4  SkinThickness  Insulin
##   13   5  SkinThickness  Insulin
##   14   1  SkinThickness  Insulin
##   14   2  SkinThickness  Insulin
##   14   3  SkinThickness  Insulin
##   14   4  SkinThickness  Insulin
##   14   5  SkinThickness  Insulin
##   15   1  SkinThickness  Insulin
##   15   2  SkinThickness  Insulin
##   15   3  SkinThickness  Insulin
##   15   4  SkinThickness  Insulin
##   15   5  SkinThickness  Insulin
##   16   1  SkinThickness  Insulin
##   16   2  SkinThickness  Insulin
##   16   3  SkinThickness  Insulin
##   16   4  SkinThickness  Insulin
##   16   5  SkinThickness  Insulin
##   17   1  SkinThickness  Insulin
##   17   2  SkinThickness  Insulin
##   17   3  SkinThickness  Insulin
##   17   4  SkinThickness  Insulin
##   17   5  SkinThickness  Insulin
##   18   1  SkinThickness  Insulin
##   18   2  SkinThickness  Insulin
##   18   3  SkinThickness  Insulin
##   18   4  SkinThickness  Insulin
##   18   5  SkinThickness  Insulin
##   19   1  SkinThickness  Insulin
##   19   2  SkinThickness  Insulin
##   19   3  SkinThickness  Insulin
##   19   4  SkinThickness  Insulin
##   19   5  SkinThickness  Insulin
##   20   1  SkinThickness  Insulin
##   20   2  SkinThickness  Insulin
##   20   3  SkinThickness  Insulin
##   20   4  SkinThickness  Insulin
##   20   5  SkinThickness  Insulin
##   21   1  SkinThickness  Insulin
##   21   2  SkinThickness  Insulin
##   21   3  SkinThickness  Insulin
##   21   4  SkinThickness  Insulin
##   21   5  SkinThickness  Insulin
##   22   1  SkinThickness  Insulin
##   22   2  SkinThickness  Insulin
##   22   3  SkinThickness  Insulin
##   22   4  SkinThickness  Insulin
##   22   5  SkinThickness  Insulin
##   23   1  SkinThickness  Insulin
##   23   2  SkinThickness  Insulin
##   23   3  SkinThickness  Insulin
##   23   4  SkinThickness  Insulin
##   23   5  SkinThickness  Insulin
##   24   1  SkinThickness  Insulin
##   24   2  SkinThickness  Insulin
##   24   3  SkinThickness  Insulin
##   24   4  SkinThickness  Insulin
##   24   5  SkinThickness  Insulin
##   25   1  SkinThickness  Insulin
##   25   2  SkinThickness  Insulin
##   25   3  SkinThickness  Insulin
##   25   4  SkinThickness  Insulin
##   25   5  SkinThickness  Insulin
##   26   1  SkinThickness  Insulin
##   26   2  SkinThickness  Insulin
##   26   3  SkinThickness  Insulin
##   26   4  SkinThickness  Insulin
##   26   5  SkinThickness  Insulin
##   27   1  SkinThickness  Insulin
##   27   2  SkinThickness  Insulin
##   27   3  SkinThickness  Insulin
##   27   4  SkinThickness  Insulin
##   27   5  SkinThickness  Insulin
##   28   1  SkinThickness  Insulin
##   28   2  SkinThickness  Insulin
##   28   3  SkinThickness  Insulin
##   28   4  SkinThickness  Insulin
##   28   5  SkinThickness  Insulin
##   29   1  SkinThickness  Insulin
##   29   2  SkinThickness  Insulin
##   29   3  SkinThickness  Insulin
##   29   4  SkinThickness  Insulin
##   29   5  SkinThickness  Insulin
##   30   1  SkinThickness  Insulin
##   30   2  SkinThickness  Insulin
##   30   3  SkinThickness  Insulin
##   30   4  SkinThickness  Insulin
##   30   5  SkinThickness  Insulin
##   31   1  SkinThickness  Insulin
##   31   2  SkinThickness  Insulin
##   31   3  SkinThickness  Insulin
##   31   4  SkinThickness  Insulin
##   31   5  SkinThickness  Insulin
##   32   1  SkinThickness  Insulin
##   32   2  SkinThickness  Insulin
##   32   3  SkinThickness  Insulin
##   32   4  SkinThickness  Insulin
##   32   5  SkinThickness  Insulin
##   33   1  SkinThickness  Insulin
##   33   2  SkinThickness  Insulin
##   33   3  SkinThickness  Insulin
##   33   4  SkinThickness  Insulin
##   33   5  SkinThickness  Insulin
##   34   1  SkinThickness  Insulin
##   34   2  SkinThickness  Insulin
##   34   3  SkinThickness  Insulin
##   34   4  SkinThickness  Insulin
##   34   5  SkinThickness  Insulin
##   35   1  SkinThickness  Insulin
##   35   2  SkinThickness  Insulin
##   35   3  SkinThickness  Insulin
##   35   4  SkinThickness  Insulin
##   35   5  SkinThickness  Insulin
##   36   1  SkinThickness  Insulin
##   36   2  SkinThickness  Insulin
##   36   3  SkinThickness  Insulin
##   36   4  SkinThickness  Insulin
##   36   5  SkinThickness  Insulin
##   37   1  SkinThickness  Insulin
##   37   2  SkinThickness  Insulin
##   37   3  SkinThickness  Insulin
##   37   4  SkinThickness  Insulin
##   37   5  SkinThickness  Insulin
##   38   1  SkinThickness  Insulin
##   38   2  SkinThickness  Insulin
##   38   3  SkinThickness  Insulin
##   38   4  SkinThickness  Insulin
##   38   5  SkinThickness  Insulin
##   39   1  SkinThickness  Insulin
##   39   2  SkinThickness  Insulin
##   39   3  SkinThickness  Insulin
##   39   4  SkinThickness  Insulin
##   39   5  SkinThickness  Insulin
##   40   1  SkinThickness  Insulin
##   40   2  SkinThickness  Insulin
##   40   3  SkinThickness  Insulin
##   40   4  SkinThickness  Insulin
##   40   5  SkinThickness  Insulin
##   41   1  SkinThickness  Insulin
##   41   2  SkinThickness  Insulin
##   41   3  SkinThickness  Insulin
##   41   4  SkinThickness  Insulin
##   41   5  SkinThickness  Insulin
##   42   1  SkinThickness  Insulin
##   42   2  SkinThickness  Insulin
##   42   3  SkinThickness  Insulin
##   42   4  SkinThickness  Insulin
##   42   5  SkinThickness  Insulin
##   43   1  SkinThickness  Insulin
##   43   2  SkinThickness  Insulin
##   43   3  SkinThickness  Insulin
##   43   4  SkinThickness  Insulin
##   43   5  SkinThickness  Insulin
##   44   1  SkinThickness  Insulin
##   44   2  SkinThickness  Insulin
##   44   3  SkinThickness  Insulin
##   44   4  SkinThickness  Insulin
##   44   5  SkinThickness  Insulin
##   45   1  SkinThickness  Insulin
##   45   2  SkinThickness  Insulin
##   45   3  SkinThickness  Insulin
##   45   4  SkinThickness  Insulin
##   45   5  SkinThickness  Insulin
##   46   1  SkinThickness  Insulin
##   46   2  SkinThickness  Insulin
##   46   3  SkinThickness  Insulin
##   46   4  SkinThickness  Insulin
##   46   5  SkinThickness  Insulin
##   47   1  SkinThickness  Insulin
##   47   2  SkinThickness  Insulin
##   47   3  SkinThickness  Insulin
##   47   4  SkinThickness  Insulin
##   47   5  SkinThickness  Insulin
##   48   1  SkinThickness  Insulin
##   48   2  SkinThickness  Insulin
##   48   3  SkinThickness  Insulin
##   48   4  SkinThickness  Insulin
##   48   5  SkinThickness  Insulin
##   49   1  SkinThickness  Insulin
##   49   2  SkinThickness  Insulin
##   49   3  SkinThickness  Insulin
##   49   4  SkinThickness  Insulin
##   49   5  SkinThickness  Insulin
##   50   1  SkinThickness  Insulin
##   50   2  SkinThickness  Insulin
##   50   3  SkinThickness  Insulin
##   50   4  SkinThickness  Insulin
##   50   5  SkinThickness  Insulin
## `stat_bin()` using `bins = 30`. Pick better value with `binwidth`.
## Warning: Removed 227 rows containing non-finite outside the scale range
## (`stat_bin()`).
## `stat_bin()` using `bins = 30`. Pick better value with `binwidth`.

## `stat_bin()` using `bins = 30`. Pick better value with `binwidth`.
## Warning: Removed 374 rows containing non-finite outside the scale range
## (`stat_bin()`).
## `stat_bin()` using `bins = 30`. Pick better value with `binwidth`.

La variable de insulina no se asemeja mucho a su distribucion en el densityplot. Skinthickness es la que mas se asemeja a su linea azul original. La convergencia tambien es un poco mas volatil en comparacion de los anteriores. Tras haber examinado los graficos podemos determinar que el metodo de imputacion mas apropiado es el de pmm por lo que lo integramos a el dataframe de la siguiente manera

df_imputado <- df
for (col in names(df)) {
  if (col %in% names(df_pmm)) {
    na_idx <- is.na(df[[col]])
    df_imputado[na_idx, col] <- df_pmm[na_idx, col]
  }
}
head(df_imputado)
##   Pregnancies Glucose BloodPressure SkinThickness Insulin  BMI
## 1           6     148            72            35     100 33.6
## 2           1      85            66            29      23 26.6
## 3           8     183            64            17     185 23.3
## 4           1      89            66            23      94 28.1
## 5           0     137            40            35     168 43.1
## 6           5     116            74            21     116 25.6
##   DiabetesPedigreeFunction Age Outcome
## 1                    0.627  50       1
## 2                    0.351  31       0
## 3                    0.672  32       1
## 4                    0.167  21       0
## 5                    2.288  33       1
## 6                    0.201  30       0

Se verifica la distribucion de las variables para ver si no se realizo ningun cambio en su distribucion

#revisamos la normalidad
vars_numericas <- df_imputado %>%
  select(-Outcome) %>%
  select(where(is.numeric))

shapiro_resultados <- vars_numericas %>%
  summarise(across(everything(), 
                   ~ list(shapiro.test(.x)), 
                   .names = "{.col}")) %>%
  pivot_longer(cols = everything(),
               names_to = "Variable",
               values_to = "Shapiro") %>%
  mutate(Statistic = sapply(Shapiro, function(x) x$statistic),
         p_value = sapply(Shapiro, function(x) x$p.value)) %>%
  select(-Shapiro)
print(shapiro_resultados)
## # A tibble: 8 × 3
##   Variable                 Statistic  p_value
##   <chr>                        <dbl>    <dbl>
## 1 Pregnancies                  0.904 1.61e-21
## 2 Glucose                      0.970 1.52e-11
## 3 BloodPressure                0.988 5.26e- 6
## 4 SkinThickness                0.956 2.28e-14
## 5 Insulin                      0.776 4.22e-31
## 6 BMI                          0.979 6.44e- 9
## 7 DiabetesPedigreeFunction     0.837 2.48e-27
## 8 Age                          0.875 2.40e-24

Se observa que la distribucion de las variables no cambio, por lo que las imputaciones fueron exitosas y ahora podemos continuar con el EDA.

Analisis Univariado

Realizamos summary de los datos imputados

summary(df_imputado)
##   Pregnancies        Glucose       BloodPressure    SkinThickness  
##  Min.   : 0.000   Min.   : 44.00   Min.   : 24.00   Min.   : 7.00  
##  1st Qu.: 1.000   1st Qu.: 99.75   1st Qu.: 64.00   1st Qu.:21.00  
##  Median : 3.000   Median :117.00   Median : 72.00   Median :29.00  
##  Mean   : 3.845   Mean   :121.66   Mean   : 72.39   Mean   :29.03  
##  3rd Qu.: 6.000   3rd Qu.:140.25   3rd Qu.: 80.00   3rd Qu.:36.00  
##  Max.   :17.000   Max.   :199.00   Max.   :122.00   Max.   :99.00  
##     Insulin            BMI        DiabetesPedigreeFunction      Age       
##  Min.   : 14.00   Min.   :18.20   Min.   :0.0780           Min.   :21.00  
##  1st Qu.: 72.75   1st Qu.:27.50   1st Qu.:0.2437           1st Qu.:24.00  
##  Median :115.00   Median :32.30   Median :0.3725           Median :29.00  
##  Mean   :146.96   Mean   :32.46   Mean   :0.4719           Mean   :33.24  
##  3rd Qu.:180.00   3rd Qu.:36.60   3rd Qu.:0.6262           3rd Qu.:41.00  
##  Max.   :846.00   Max.   :67.10   Max.   :2.4200           Max.   :81.00  
##     Outcome     
##  Min.   :0.000  
##  1st Qu.:0.000  
##  Median :0.000  
##  Mean   :0.349  
##  3rd Qu.:1.000  
##  Max.   :1.000

Realizamos graficas de histogramas y boxplots

datos_largos <- df_imputado %>%
  select(-Outcome)%>%
  select(where(is.numeric)) %>%
  pivot_longer(cols = everything(),
               names_to = "Variable",
               values_to = "Valor")
ggplot(datos_largos, aes(x = Valor)) +
  geom_histogram(fill = "skyblue", color = "white", bins = 30) +
  facet_wrap(~ Variable, scales = "free") +
  theme_minimal() +
  labs(title = "Histogramas por variable numérica")

# Boxplot para cada variable
ggplot(datos_largos, aes(x = Variable, y = Valor)) +
  geom_boxplot(fill = "lightgreen", color = "darkgreen") +
  theme_minimal() +
  labs(title = "Boxplots por variable numérica")

Podemos observar que la variable insulina es la que tiene mas outliers a comparacion del resto de variables. se realizara el analisis e imputacion de outliers

Analisis de outliers

Realizamos el analisis de los outliers que tienen cada una de las variables realizando capping dependiendo de si estan sesgadas o si tienen un sesgo muy leve. Primero verificamos los outliers mediante percentiles y el filtro de hampel

detectar_percentiles <- function(x, lower = 0.05, upper = 0.95) {
  qnt <- quantile(x, probs = c(lower, upper), na.rm = TRUE)
  outlier_flags <- (x < qnt[1]) | (x > qnt[2])
  return(outlier_flags)
}
hampel_filter <- function(x, k = 3, t0 = 3) {
  n <- length(x)
  y <- x
  L <- 1.4826
  for (i in seq_along(x)) {
    lower <- max(1, i - k)
    upper <- min(n, i + k)
    ventana <- x[lower:upper]
    med <- median(ventana, na.rm = TRUE)
    S0 <- L * median(abs(ventana - med), na.rm = TRUE)
    if (!is.na(x[i]) && abs(x[i] - med) > t0 * S0) {
      y[i] <- med  # Reemplaza outlier por mediana local
    }
  }
  return(y)
}

Con los filtros ya hechos se examina por cada variable para determinar los outliers mas destacados en cada una

library(dplyr)
num_vars <- names(df_imputado)[sapply(df_imputado, is.numeric)]
outlier_summary <- data.frame(Variable = character(),
                              Percentil_Outliers = integer())



for (v in num_vars) {
  perc_out <- sum(detectar_percentiles(df_imputado[[v]]))
  outlier_summary <- rbind(outlier_summary,
                           data.frame(Variable = v,
                                      Percentil_Outliers = perc_out))
}

print(outlier_summary)
##                   Variable Percentil_Outliers
## 1              Pregnancies                 34
## 2                  Glucose                 72
## 3            BloodPressure                 67
## 4            SkinThickness                 58
## 5                  Insulin                 74
## 6                      BMI                 78
## 7 DiabetesPedigreeFunction                 78
## 8                      Age                 35
## 9                  Outcome                  0

le aplicamos filtro de Hampel a las variables y realizamos filtrado de hampel

df_hampel <- df_imputado
df_hampel[num_vars] <- lapply(df_imputado[num_vars], hampel_filter)

Ahora realizamos comparacion de graficos antes y despues de hacer filtro de Hampel

datos_largos_antes <- df_imputado %>%
  select(-Outcome) %>%
  select(where(is.numeric)) %>%
  pivot_longer(cols = everything(),
               names_to = "Variable",
               values_to = "Valor") %>%
  mutate(Etapa = "Antes")
datos_largos_despues <- df_hampel %>%
  select(-Outcome) %>%
  select(where(is.numeric)) %>%
  pivot_longer(cols = everything(),
               names_to = "Variable",
               values_to = "Valor") %>%
  mutate(Etapa = "Después")
datos_largos_comparacion <- bind_rows(datos_largos_antes, datos_largos_despues)
ggplot(datos_largos_comparacion, aes(x = Valor)) +
  geom_histogram(fill = "skyblue", color = "white", bins = 30) +
  facet_grid(Etapa ~ Variable, scales = "free") +
  theme_minimal() +
  labs(title = "Histogramas antes y después de Hampel")

ggplot(datos_largos_comparacion, aes(x = Variable, y = Valor, fill = Etapa)) +
  geom_boxplot(outlier.colour = "red", alpha = 0.7) +
  theme_minimal() +
  labs(title = "Boxplots antes y después de Hampel") +
  scale_fill_manual(values = c("Antes" = "lightgreen", "Después" = "orange"))

Podemos observar que hubo un reduccion de outliers en varias de las variables del dataset. Por lo que la imputacion fue exitosa ya que los outliers no seran tan problematicos.