# Importar el archivo proporcionado en formato CSV con los datos
Practica_dos <- read.csv("data_prac_2 1.csv", stringsAsFactors = FALSE)

# Mostrar un resumen de los datpos contenidos en la base importada 
glimpse(Practica_dos)
## 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…
# Verificar la existencia de valores no numéricos en las variables cuyos datos son númericos 
Practica_dos %>% 
  select(edad, imc, hijos, clm) %>% 
  summarise_all(~sum(!is.numeric(.), na.rm = TRUE))
##   edad imc hijos clm
## 1    1   1     0   1
# Reemplazar los datos no numéricos por NA
Practica_dos <- Practica_dos %>%
  mutate(across(c(edad, imc, hijos, clm), ~ suppressWarnings(as.numeric(.))))

# Mostrar registros con valores NA después de la conversión
Practica_dos %>% 
  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
# Contar los valores faltantes en el conjunto de datos
table(is.na(Practica_dos))
## 
## FALSE  TRUE 
## 10244   460
# Transformar variables categóricas a tipo factor
Practica_dos <- Practica_dos %>% 
  mutate(sexo = as.factor(sexo),
         fumador = as.factor(fumador),
         region = as.factor(region))

# Verificar la nueva estructura de los datos
glimpse(Practica_dos)
## 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…
#Muestra si existen valores duplicados
Practica_dos <- distinct(Practica_dos)

# Generar un identificador único combinando varias columnas
Practica_dos <- Practica_dos %>% 
  mutate(id = paste(edad, sexo, region, sep = "_"))
Practica_dos <- Practica_dos %>%
  mutate(
    sexo_num = case_when(
      sexo == "femenino" ~ 1,
      sexo == "masculino" ~ 2,
      TRUE ~ 0),
    region_num = case_when(
      region == "noroeste" ~ 1,
      region == "suroeste" ~ 2,
      region == "noreste" ~ 3,
      region == "sureste" ~ 4,
      TRUE ~ 0),
    id = paste0(sexo_num, region_num, edad,row_number())
  )
# Reemplazar los valores faltantes de valores numericos con la media
Practica_dos <- Practica_dos %>% mutate(
  imc = ifelse(is.na(imc), mean(imc, na.rm = TRUE), imc),
  clm = ifelse(is.na(clm), mean(clm, na.rm = TRUE), clm)
)

# Función para calcular la moda
Moda <- function(x) names(sort(table(x), decreasing = TRUE))[1]

# Reemplazar los valores faltantes de variables categóricas con la moda
Practica_dos <- Practica_dos %>% 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)
)

# Generar un resumen estadístico de las variables numéricas
summary(select(Practica_dos, 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) Histograma para visualizar la distribución del IMC
ggplot(Practica_dos, aes(x = imc)) +
  geom_histogram(binwidth = 2, fill = "lightblue", alpha = 0.7) +
  theme_minimal() +
  labs(title = "Distribución del Índice de Masa Corporal (IMC)", x = "IMC", y = "Frecuencia")

# (b) Cálculo de la media del monto de reclamación por género
Practica_dos %>% 
  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) Promedio del monto de reclamación por estado de fumador y género
Practica_dos %>% 
  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) Identificación de la región con mayor promedio de reclamaciones
region_max <- Practica_dos %>% 
  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 una nueva variable categórica sobre obesidad
Practica_dos <- Practica_dos %>% 
  mutate(obesidad = ifelse(imc > 30, "Sí", "No"))

# (f) Selección de las 10 personas obesas con mayor monto de reclamación
top_10 <- Practica_dos %>% filter(obesidad == "Sí") %>% 
  select(edad, sexo, hijos, clm, region) %>% 
  arrange(desc(clm)) %>% 
  head(10)
print(top_10)
##    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
# Explicación del tratamiento de valores faltantes
cat("El análisis de datos exploratorio (EDA) es muy importante a la ahora de manipular datos, porque antes de emplear todos los conocimientos para interpretar resultados y ayudar a la toma de decisiones es importante conocer la estructura de dicha base de datos, como el tipo de variable que manejamos, si contiene datos erroneos, si no contiene datos, si los datos son diferentes a los que contiene la columna; entre muchos otros aspectos y es importante que todos esos datos sean corregidos para tener la base limpia y obtengamos mejores resultados y sobretodos más certeros.\n",
    "Para las variables numéricas que no contenían valores se utilizó la técnica de reemplazo con la media con el fin de minimizar distorsiones y además debido a que estos datos no contenían valores muy extremos en el mínimo y máximo por ello se considero que esta era un buena alternativa, en cambio en las variables categóricas, se aplicó la técnica de reemplazo con moda para conservar la distribución original y prever alteraciones. \n",
    "Por ultimo, se llevaron a cabo análisis estadísticos y visuales para entender mejor los datos como por ejemplo la distribución de IMC en donde apreciamos que se asemeja mucho a una normal, también que la media del monto de reclamaciones es mas alto para el genero masculino.
Se observó que las personas que fuman tienen una media más alta en el monto de reclamación que las personas que no lo hacen, así como las personas que radican en la región sureste a diferencia de las personas de otras regiones.")
## El análisis de datos exploratorio (EDA) es muy importante a la ahora de manipular datos, porque antes de emplear todos los conocimientos para interpretar resultados y ayudar a la toma de decisiones es importante conocer la estructura de dicha base de datos, como el tipo de variable que manejamos, si contiene datos erroneos, si no contiene datos, si los datos son diferentes a los que contiene la columna; entre muchos otros aspectos y es importante que todos esos datos sean corregidos para tener la base limpia y obtengamos mejores resultados y sobretodos más certeros.
##  Para las variables numéricas que no contenían valores se utilizó la técnica de reemplazo con la media con el fin de minimizar distorsiones y además debido a que estos datos no contenían valores muy extremos en el mínimo y máximo por ello se considero que esta era un buena alternativa, en cambio en las variables categóricas, se aplicó la técnica de reemplazo con moda para conservar la distribución original y prever alteraciones. 
##  Por ultimo, se llevaron a cabo análisis estadísticos y visuales para entender mejor los datos como por ejemplo la distribución de IMC en donde apreciamos que se asemeja mucho a una normal, también que la media del monto de reclamaciones es mas alto para el genero masculino.
## Se observó que las personas que fuman tienen una media más alta en el monto de reclamación que las personas que no lo hacen, así como las personas que radican en la región sureste a diferencia de las personas de otras regiones.