# Carga de la base de datos
data <- read.csv("data_prac_2.csv", stringsAsFactors = FALSE)
# Exploración inicial
glimpse(data)
## Rows: 1,338
## Columns: 8
## $ edad <chr> "19", "18", "28", "33", "", "31", "46", "37", "37", "60", "25"…
## $ sexo <chr> "femenino", "masculino", "masculino", "masculino", "masculino"…
## $ imc <chr> "27.9", "33.77", "33", "22.705", "28.88", "25.74", "33.44", "2…
## $ hijos <int> 0, 1, 3, 0, 0, 0, 1, 3, 2, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0,…
## $ fumador <chr> "yes", "no", "no", "no", "no", "no", "no", "no", "no", "no", "…
## $ region <chr> "suroeste", "sureste", "sureste", "noroeste", "noroeste", "sur…
## $ clm <chr> "16884.924", "1725.5523", "4449.462", "21984.47061", "3866.855…
## $ X <int> NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA…
# Identificación de valores problemáticos
data %>% select(edad, imc, hijos, clm) %>% summarise_all(~sum(!is.numeric(.), na.rm = TRUE))
## edad imc hijos clm
## 1 1 1 0 1
# Conversión de variables numéricas y manejo de valores erróneos
data <- data %>%
mutate(across(c(edad, imc, hijos, clm), ~ suppressWarnings(as.numeric(.))))
# Identificación de valores faltantes
data %>% filter(if_any(c(edad, imc, hijos, clm), is.na))
## edad sexo imc hijos fumador region clm X
## 1 NA masculino 28.880 0 no noroeste 3866.855 NA
## 2 NA femenino 30.780 1 no noreste 10797.336 NA
## 3 NA femenino 31.920 1 yes noreste 37701.877 NA
## 4 NA masculino 17.385 1 no noroeste 2775.192 NA
## 5 NA masculino 36.670 1 yes noreste 39774.276 NA
## 6 NA masculino 35.200 1 yes sureste 38709.176 NA
## 7 NA femenino 25.935 1 no noroeste 4133.642 NA
## 8 61 femenino NA 2 no suroeste 14235.072 NA
## 9 NA femenino 39.805 0 no noreste 2755.021 NA
## 10 NA femenino 34.800 2 yes suroeste 39836.519 NA
## 11 53 femenino 24.795 1 no noroeste NA NA
## 12 61 femenino 29.920 3 yes sureste NA NA
## 13 29 femenino 27.940 1 yes sureste NA NA
## 14 49 femenino 27.170 0 no sureste NA NA
## 15 NA femenino 23.370 2 no noroeste 6686.431 NA
## 16 18 masculino 23.750 0 no noreste NA NA
## 17 19 masculino 25.555 0 no noroeste NA NA
## 18 NA femenino 27.830 3 no sureste 19749.383 NA
## 19 NA masculino 41.895 3 yes noreste 43753.337 NA
## 20 NA masculino 41.230 1 no noreste 6610.110 NA
## 21 NA masculino 24.640 0 yes sureste 19515.542 NA
## 22 NA masculino 30.020 0 no noroeste 24476.479 NA
## 23 NA masculino 24.320 3 yes noreste 24869.837 NA
## 24 18 masculino NA 1 no sureste 1719.436 NA
## 25 NA femenino 21.560 1 no sureste 9855.131 6
## 26 46 femenino NA 2 no noreste 9432.925 NA
## 27 NA masculino 22.990 0 no noreste NA 1
## 28 47 masculino NA 1 yes sureste 21978.677 NA
## 29 56 femenino 37.510 2 no sureste NA 9
## 30 NA masculino 26.600 0 no suroeste 8444.474 4
## 31 NA masculino 35.860 0 no sureste 8124.408 8
## 32 NA masculino 36.480 2 yes noroeste 42760.502 5
## 33 NA femenino 28.785 0 no noreste 11658.379 10
## 34 19 femenino 21.700 0 yes suroeste NA 10
## 35 NA femenino 21.890 2 no sureste 3180.510 2
## 36 56 femenino NA 3 no noreste 13430.265 NA
## 37 42 femenino NA 2 no noroeste 8017.061 NA
## 38 NA femenino 33.155 1 no noreste 7639.417 5
## 39 19 masculino NA 0 no suroeste 1261.859 NA
## 40 NA femenino 22.610 0 no noroeste 3176.816 3
## 41 24 femenino NA 3 no noroeste 4618.080 NA
## 42 48 masculino NA 4 no noreste 10736.871 NA
## 43 64 masculino 25.600 2 no suroeste NA 6
## 44 18 femenino NA 0 no sureste 1631.668 NA
## 45 64 femenino NA 0 no noroeste 14692.669 NA
## 46 NA masculino 30.030 1 no sureste 4074.454 3
## 47 NA masculino 35.860 0 yes sureste 46599.108 2
## 48 NA masculino 32.775 1 yes noreste 39125.332 4
## 49 NA masculino 30.590 0 no noreste 2727.395 3
## 50 NA femenino 29.165 0 no noreste 7323.735 3
## 51 NA masculino 26.900 0 no suroeste 5969.723 4
## 52 NA masculino 31.730 0 no noreste 2254.797 9
## 53 26 masculino NA 0 no noreste 2897.323 NA
## 54 56 masculino 26.695 1 yes noroeste NA 4
## 55 40 femenino NA 0 no suroeste 5910.944 NA
## 56 NA masculino 29.735 0 no noroeste 1769.532 10
## 57 55 femenino 30.140 2 no sureste NA 7
## 58 NA femenino 30.495 0 no noroeste 11840.775 10
## 59 NA femenino 36.630 3 no sureste 10381.479 4
## 60 NA femenino 38.095 2 no noreste 15230.324 4
## 61 NA femenino 28.380 1 yes sureste 19521.968 6
## 62 49 masculino NA 2 no sureste 9304.702 NA
## 63 51 femenino NA 1 no suroeste 9880.068 NA
## 64 NA masculino 34.400 0 yes suroeste 36197.699 6
## 65 NA masculino 23.210 1 yes sureste 22218.115 10
## 66 19 masculino 30.250 0 yes sureste NA 9
## 67 37 masculino 30.875 3 no noroeste NA 2
## 68 NA masculino 31.350 1 no noroeste 2643.269 4
## 69 NA masculino 32.110 1 no noreste 11763.001 8
## 70 NA masculino 33.660 0 no sureste 2498.414 2
## 71 31 masculino 30.875 0 no noreste NA 3
## 72 NA femenino 37.730 0 no sureste 5397.617 4
## 73 NA masculino 26.070 1 yes sureste 38245.593 7
## 74 NA masculino 25.840 2 yes noroeste 23807.241 10
## 75 63 masculino 30.800 0 no suroeste NA 1
## 76 62 masculino 21.400 0 no suroeste NA 8
## 77 NA masculino 35.530 0 no noroeste 1646.430 9
## 78 18 femenino 37.290 1 no sureste NA 10
## 79 NA femenino 36.860 1 no noreste 31620.001 1
## 80 NA masculino 30.200 1 no suroeste 9724.530 2
## 81 25 femenino 23.465 0 no noreste NA 7
## 82 19 masculino NA 0 no suroeste 1242.816 NA
## 83 21 masculino 20.235 3 no noreste NA 2
## 84 38 femenino NA 1 no sureste 5976.831 NA
## 85 47 masculino 19.570 1 no noroeste NA 6
## 86 20 masculino NA 2 no sureste 2566.471 NA
## 87 43 masculino 32.600 2 no suroeste NA 4
## 88 NA femenino 39.160 0 no sureste 1633.044 9
## 89 NA masculino 31.635 0 no noroeste 9174.136 4
## 90 NA femenino 25.300 0 no suroeste 11070.535 7
## 91 20 femenino NA 0 no sureste 1880.070 NA
## 92 49 masculino NA 2 yes suroeste 23306.547 NA
## 93 NA femenino 37.100 0 no suroeste 10713.644 3
## 94 18 masculino NA 0 yes noreste 34617.841 NA
## 95 59 masculino NA 0 no noroeste 12129.614 NA
## 96 NA masculino 28.880 3 no noreste 6748.591 2
## 97 58 masculino NA 0 no suroeste 11365.952 NA
## 98 24 masculino NA 0 no suroeste 1977.815 NA
## 99 51 masculino NA 1 no suroeste 9391.346 NA
## 100 NA masculino 38.190 0 no noreste 14410.932 7
## 101 19 femenino NA 1 no noroeste NA NA
## 102 NA femenino 23.370 3 no noreste 8252.284 7
## 103 26 femenino NA 1 no suroeste 3410.324 NA
## 104 NA femenino 22.990 0 yes sureste 27037.914 2
## 105 49 masculino NA 1 no suroeste 8703.456 NA
## 106 40 femenino NA 2 yes noroeste NA NA
## 107 NA masculino 29.700 0 no sureste 4399.731 7
## 108 55 femenino 40.810 3 no sureste NA 4
## 109 NA femenino 17.400 1 no suroeste 2585.269 10
## 110 39 masculino NA 2 yes suroeste 40103.890 NA
## 111 33 femenino NA 1 no suroeste 4766.022 NA
## 112 NA masculino 26.125 2 no noreste 7729.646 1
## 113 21 masculino NA 0 no noreste 2104.113 NA
## 114 53 masculino NA 0 no sureste 9504.310 NA
## 115 51 femenino 38.060 0 yes sureste NA 5
## 116 NA femenino 23.540 2 no sureste 10107.221 2
## 117 20 masculino NA 0 no noreste 1984.453 NA
## 118 NA femenino NA 0 no suroeste 2457.502 NA
## 119 NA femenino 40.660 0 no noreste 9875.680 8
## 120 41 masculino NA 1 no noroeste 6664.686 NA
## 121 41 femenino NA 1 no sureste 6781.354 NA
## 122 24 femenino NA 3 no suroeste 4234.927 NA
## 123 59 femenino NA 3 no suroeste 14007.222 NA
## 124 49 femenino 34.770 1 no noroeste NA 5
## 125 NA masculino 31.730 3 yes noreste 36189.102 7
## 126 19 masculino 21.755 0 no noroeste NA 2
## 127 45 femenino 25.175 2 no noreste NA 6
## 128 NA femenino 23.180 0 no noreste 2731.912 2
## 129 NA femenino 31.825 2 no noreste 16069.085 2
## 130 36 femenino 25.840 0 no noroeste NA 1
## 131 36 masculino 31.500 0 no suroeste NA 6
## 132 NA femenino 32.780 2 yes sureste NA 6
## 133 41 masculino 28.800 1 no suroeste NA 9
## 134 NA femenino 30.020 0 no noroeste 5272.176 1
## 135 NA masculino 46.530 1 no sureste 2927.065 8
## 136 NA masculino 22.990 2 yes noroeste 17361.766 7
## 137 63 masculino 21.660 1 no noroeste NA 4
## 138 54 femenino 31.900 1 no sureste NA 1
## 139 47 femenino 32.000 1 no suroeste NA 3
## 140 NA femenino 30.400 0 yes noroeste NA 3
## 141 54 femenino 31.240 0 no sureste NA 1
## 142 NA masculino 32.340 2 no sureste 6338.076 1
## 143 28 femenino 33.110 0 no sureste NA 6
## 144 55 masculino 37.715 3 no noroeste NA 10
## 145 22 femenino 30.400 0 no noreste NA 4
## 146 NA masculino 42.900 1 no suroeste 4536.259 5
table(is.na(data))
##
## FALSE TRUE
## 10244 460
# Conversión de variables categóricas a factores
data <- data %>%
mutate(across(c(sexo, fumador, region), as.factor))
glimpse(data)
## Rows: 1,338
## Columns: 8
## $ edad <dbl> 19, 18, 28, 33, NA, 31, 46, 37, 37, 60, 25, 62, 23, 56, 27, 19…
## $ sexo <fct> femenino, masculino, masculino, masculino, masculino, femenino…
## $ imc <dbl> 27.900, 33.770, 33.000, 22.705, 28.880, 25.740, 33.440, 27.740…
## $ hijos <dbl> 0, 1, 3, 0, 0, 0, 1, 3, 2, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0,…
## $ fumador <fct> yes, no, no, no, no, no, no, no, no, no, no, yes, no, no, yes,…
## $ region <fct> suroeste, sureste, sureste, noroeste, noroeste, sureste, sures…
## $ clm <dbl> 16884.924, 1725.552, 4449.462, 21984.471, 3866.855, 3756.622, …
## $ X <int> NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA…
# Eliminación de valores duplicados
data <- distinct(data)
# Creación de identificador único
data <- data %>% mutate(id = paste(edad, sexo, region, sep = "_"))
# Imputación de valores faltantes en variables numéricas (media)
data <- data %>% mutate(
imc = ifelse(is.na(imc), mean(imc, na.rm = TRUE), imc),
clm = ifelse(is.na(clm), mean(clm, na.rm = TRUE), clm)
)
# Imputación de valores faltantes en variables categóricas (moda)
moda <- function(x) names(sort(table(x), decreasing = TRUE))[1]
data <- data %>% mutate(
sexo = ifelse(is.na(sexo), moda(sexo), sexo),
fumador = ifelse(is.na(fumador), moda(fumador), fumador),
region = ifelse(is.na(region), moda(region), region)
)
# Resumen estadístico de variables numéricas
summary(select(data, edad, imc, hijos, clm))
## edad imc hijos clm
## Min. :18.00 Min. :15.96 Min. :0.000 Min. : 1122
## 1st Qu.:27.00 1st Qu.:26.40 1st Qu.:0.000 1st Qu.: 4855
## Median :39.00 Median :30.59 Median :1.000 Median : 9674
## Mean :39.23 Mean :30.62 Mean :1.095 Mean :13278
## 3rd Qu.:51.00 3rd Qu.:34.40 3rd Qu.:2.000 3rd Qu.:16108
## Max. :64.00 Max. :53.13 Max. :5.000 Max. :63770
## NA's :72
# (a) Distribución del Índice de Masa Corporal (IMC)
ggplot(data, aes(x = imc)) +
geom_histogram(binwidth = 2, fill = "#2C3E50", color = "white", alpha = 0.8) +
theme_minimal() +
labs(title = "Distribución del Índice de Masa Corporal (IMC)",
x = "IMC",
y = "Frecuencia")

# (b) Media del monto de reclamación por sexo
data %>% group_by(sexo) %>% summarise(media_clm = mean(clm, na.rm = TRUE))
## # A tibble: 2 × 2
## sexo media_clm
## <int> <dbl>
## 1 1 12514.
## 2 2 14026.
# (c) Media del monto de reclamación por fumador y sexo
data %>% group_by(fumador, sexo) %>% summarise(media_clm = mean(clm, na.rm = TRUE))
## `summarise()` has grouped output by 'fumador'. You can override using the
## `.groups` argument.
## # A tibble: 4 × 3
## # Groups: fumador [2]
## fumador sexo media_clm
## <int> <int> <dbl>
## 1 1 1 8924.
## 2 1 2 8240.
## 3 2 1 29590.
## 4 2 2 32840.
# (d) Región con mayor monto promedio de reclamación
region_max <- data %>% group_by(region) %>% summarise(media_clm = mean(clm, na.rm = TRUE)) %>%
arrange(desc(media_clm)) %>% slice(1)
print(region_max)
## # A tibble: 1 × 2
## region media_clm
## <int> <dbl>
## 1 3 14564.
# (e) Creación de variable de obesidad
data <- data %>% mutate(obesidad = ifelse(imc > 30, "Sí", "No"))
# (f) Identificación del top 10 de reclamaciones en personas obesas
top_10_obesos <- data %>% filter(obesidad == "Sí") %>%
select(edad, sexo, hijos, clm, region) %>%
arrange(desc(clm)) %>%
head(10)
print(top_10_obesos)
## edad sexo hijos clm region
## 1 54 1 0 63770.43 3
## 2 45 2 0 62592.87 3
## 3 52 2 3 60021.40 2
## 4 31 1 1 58571.07 1
## 5 33 1 0 55135.40 2
## 6 60 2 0 52590.83 4
## 7 28 2 1 51194.56 4
## 8 64 2 2 49577.66 3
## 9 59 2 1 48970.25 3
## 10 44 1 0 48885.14 3
# Conclusiones sobre el tratamiento de valores faltantes y análisis
cat("Se implementó una estrategia de imputación basada en la media para variables numéricas y en la moda para variables categóricas, garantizando la coherencia de los datos. ",
"Asimismo, se realizó un análisis exploratorio de las principales variables, proporcionando información clave sobre reclamaciones y factores asociados.")
## Se implementó una estrategia de imputación basada en la media para variables numéricas y en la moda para variables categóricas, garantizando la coherencia de los datos. Asimismo, se realizó un análisis exploratorio de las principales variables, proporcionando información clave sobre reclamaciones y factores asociados.