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.
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
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.
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.
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
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.