#Abrimos nuestra base
Pract2 <- read.csv("data_prac_2 1.csv")
str(Pract2)
## 'data.frame':    1338 obs. of  8 variables:
##  $ edad   : chr  "19" "18" "28" "33" ...
##  $ sexo   : chr  "femenino" "masculino" "masculino" "masculino" ...
##  $ imc    : chr  "27.9" "33.77" "33" "22.705" ...
##  $ hijos  : int  0 1 3 0 0 0 1 3 2 0 ...
##  $ fumador: chr  "yes" "no" "no" "no" ...
##  $ region : chr  "suroeste" "sureste" "sureste" "noroeste" ...
##  $ clm    : chr  "16884.924" "1725.5523" "4449.462" "21984.47061" ...
##  $ X      : int  NA NA NA NA NA NA NA NA NA NA ...
#Verificar si existen datos faltantes
colSums(Pract2 == "")
##    edad    sexo     imc   hijos fumador  region     clm       X 
##      53       0      24       0       0       0      27      NA
#Reemplazar con valores NA
Pract2[] <- lapply(Pract2, function(x) ifelse(x == "", NA, x))


#Cambiamos vaiables correspondientes a numericas
Pract2$edad <- as.numeric(Pract2$edad)
## Warning: NAs introducidos por coerción
Pract2$imc <- as.numeric(Pract2$imc)
## Warning: NAs introducidos por coerción
Pract2$clm <- as.numeric(Pract2$clm)
## Warning: NAs introducidos por coerción
#Cualquier otro valor que no es númerico lo reemplazamos por NA
Pract2[c("edad", "imc", "clm")] <- lapply(Pract2[c("edad", "imc", "clm")], function(x) {
  if (!is.numeric(x)) {
    x[!is.na(x)] <- NA
  }
  return(x)
})

#Revisa fila por fila y elimina los repetidos
Pract2_1 <- Pract2 %>% distinct()

#Corroboramos si cambio la dimensión, de no ser así, no hubo duplicados
dim(Pract2)
## [1] 1338    8
dim(Pract2_1)
## [1] 1338    8
#creamos una base con sólo las variables numericas
Pract2_b <- select(Pract2, edad, imc, clm)

# Media
Pract2_mean<-data.frame(sapply(Pract2_b, function(x) ifelse(is.na(x), mean(x, na.rm=TRUE), x)))

# Mediana
Pract2_mediana<-data.frame(sapply(Pract2_b, function(x) ifelse(is.na(x), median(x, na.rm=TRUE), x)))

#Media Recortada
Pract2_mean_rec <- data.frame(lapply(Pract2_b, function(x) ifelse(is.na(x), mean(x, na.rm=TRUE, trim=.2),x)))

#Interpolación
Pract2_interpol <- data.frame(lapply(Pract2_b, function(x) ifelse(is.na(x), na.approx(x, na.rm=TRUE), x)))

##### Usando la variable "imc" como referencia

summary(Pract2$imc)
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max.    NA's 
##   15.96   26.22   30.30   30.62   34.59   53.13      39
summary(Pract2_mean$imc)
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
##   15.96   26.40   30.59   30.62   34.40   53.13
summary(Pract2_mediana$imc)
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
##   15.96   26.40   30.30   30.61   34.40   53.13
summary(Pract2_mean_rec$imc)
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
##   15.96   26.40   30.41   30.61   34.40   53.13
summary(Pract2_interpol$imc)
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
##   15.96   26.24   30.40   30.62   34.56   53.13
###############################################################################
# Los 5 metodos resultan ser "buenos", por lo que se concluye que 
# se puede usar cualquiera (en este caso), para fines practicos elegiremos 

#   EL DE INTERPOLACIÓN
###############################################################################
# Base LIMPIA FINAL
Pract_2_Limp <- data.frame(lapply(Pract2, function(x) ifelse(is.na(x), na.approx(x, na.rm=TRUE), x)))

# Histograma Edad
ggplot(Pract_2_Limp, aes(x = edad)) +
  geom_histogram(binwidth = 0.2, fill = "orange", color = "black", alpha = 0.7) +
  labs(title = "Histograma EDAD", x = "edad", y = "Frecuencia") +
  theme_minimal()

# Histograma imc
ggplot(Pract_2_Limp, aes(x = imc)) +
  geom_histogram(binwidth = 0.2, fill = "darkblue", color = "black", alpha = 0.7) +
  labs(title = "Histograma IMC", x = "imcr", y = "Frecuencia") +
  theme_minimal()

# Histograma clm
ggplot(Pract_2_Limp, aes(x = clm)) +
  geom_histogram(binwidth = 0.2, fill = "lightgreen", color = "black", alpha = 0.7) +
  labs(title = "Histograma CLM", x = "clm", y = "Frecuencia") +
  theme_minimal()

###############################################################################

# Aunque los histogramas son bastantes significativos, no sería suficiente, 
# podriamos incluir tambie:

# MEDIDAS DE TENDENCIA CENTRAL
# MEDIDAS DE DISPERSIÓN
# IDENTIFICACIÓN DE VALORES ATÍPICOS
#ETC
 
###############################################################################

# Media monto reclamación HOMBRE
 MeanH<-Pract_2_Limp %>%
  filter(sexo == "masculino") %>%
  summarise(media_monto_reclamacion = mean(clm)) 
print(MeanH)
##   media_monto_reclamacion
## 1                13998.26
# Media monto reclamación MUJER
 MeanM<-Pract_2_Limp %>%
  filter(sexo == "femenino") %>%
  summarise(media_monto_reclamacio = mean(clm))
print(MeanM)
##   media_monto_reclamacio
## 1                  12517
###############################################################################

# Media monto reclamación HOMBRE FUMADOR
 MeanHY<-Pract_2_Limp %>%
  filter(sexo == "masculino" & fumador=="yes") %>%
  summarise(media_monto_reclamacion = mean(clm)) 
print(MeanHY)
##   media_monto_reclamacion
## 1                 32873.8
# Media monto reclamación HOMBRE NO FUMADOR
 MeanHN<-Pract_2_Limp %>%
  filter(sexo == "masculino" & fumador=="no") %>%
  summarise(media_monto_reclamacion = mean(clm)) 
print(MeanHN)
##   media_monto_reclamacion
## 1                8193.213
# Media monto reclamación MUJER FUMADORA
 MeanMY<-Pract_2_Limp %>%
  filter(sexo == "femenino" & fumador=="yes") %>%
  summarise(media_monto_reclamacion = mean(clm)) 
print(MeanMY)
##   media_monto_reclamacion
## 1                29555.86
# Media monto reclamación MUJER NO FUMADORA
 MeanMN<-Pract_2_Limp %>%
  filter(sexo == "femenino" & fumador=="no") %>%
  summarise(media_monto_reclamacion = mean(clm)) 
print(MeanMN)
##   media_monto_reclamacion
## 1                8934.788
###############################################################################
REG_MAY_REC<- Pract_2_Limp %>%
  group_by(region) %>%
  summarise(claims=sum(clm, na.rm = TRUE)) %>%
  arrange(desc(claims)) %>%
  head(1)
print(REG_MAY_REC)
## # A tibble: 1 × 2
##   region    claims
##   <chr>      <dbl>
## 1 sureste 5310149.
###############################################################################

Pract_2_Limp <- Pract_2_Limp %>%
  mutate(obesidad = ifelse(imc > 30, imc, NA))

###############################################################################

TOP_obe <- Pract_2_Limp %>%
  arrange(desc(obesidad)) %>%
  head(10)
print(TOP_obe)
##    edad      sexo   imc hijos fumador   region       clm  X obesidad
## 1    18 masculino 53.13     0      no  sureste  1163.463  9    53.13
## 2    22 masculino 52.58     1     yes  sureste 44501.398  6    52.58
## 3    23 masculino 50.38     1      no  sureste  2438.055  3    50.38
## 4    58 masculino 49.06     0      no  sureste 11381.325  7    49.06
## 5    52 masculino 47.74     1      no  sureste  9748.911  2    47.74
## 6    37  femenino 47.60     2     yes suroeste 46113.511  3    47.60
## 7    47 masculino 47.52     1      no  sureste  8083.920 10    47.52
## 8    54  femenino 47.41     0     yes  sureste 63770.428  4    47.41
## 9    52  femenino 46.75     5      no  sureste 12592.534  5    46.75
## 10   54  femenino 46.70     2      no suroeste 11538.421  3    46.70
###############################################################################