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