library(dplyr)
library(zoo)
library(ggplot2)
datosiniciales <- read.csv("C:/Users/taroj/Documents/Actuaria_Octavo Semestre/COMPUTO CIENTIFICO/Practica 2/data_prac_2 1.csv")
str(datosiniciales)
## '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 ...
# Conocer si hay datos faltantes, nulos o vacios
any(is.na(datosiniciales))
## [1] TRUE
colSums(datosiniciales == "")
## edad sexo imc hijos fumador region clm X
## 53 0 24 0 0 0 27 NA
# Reemplazar cadenas vacías con valores NA
datosiniciales[] <- lapply(datosiniciales, function(x) ifelse(x == "", NA, x))
# Cambiar las variables a numéricas
datosiniciales[c("edad", "imc", "clm", "hijos")] <- lapply(datosiniciales[c("edad", "imc", "clm", "hijos")], as.numeric)
# Identificamos datos duplicados
# También podemos proponer un identificador único para evitar duplicados en el conjunto de datos
duplicados <- duplicated(datosiniciales)
sum(duplicados)
## [1] 0
dim(datosiniciales)
## [1] 1338 8
# Aplicar interpolación a las variables numéricas
datos_interpol <- data.frame(
lapply(datosiniciales, function(x) {
if(is.numeric(x)) {
na.approx(x, na.rm = FALSE) # Aplicar interpolación solo a las columnas numéricas
} else {
x # Mantener las columnas no numéricas sin cambios
}
})
)
# Resumen estadístico de las variables imputadas
summary_interpol <- summary(datos_interpol[c("edad", "imc", "clm")])
summary_interpol
## edad imc clm
## Min. :18.00 Min. :15.96 Min. : 1122
## 1st Qu.:27.00 1st Qu.:26.24 1st Qu.: 4784
## Median :39.00 Median :30.40 Median : 9410
## Mean :39.27 Mean :30.62 Mean :13265
## 3rd Qu.:51.00 3rd Qu.:34.56 3rd Qu.:16813
## Max. :64.00 Max. :53.13 Max. :63770
Nota: La interpolación es adecuada si los valores faltantes se encuentran dispersos y puedes asumir continuidad en las variables numéricas.
# Seleccionar las variables numéricas (edad, imc, clm)
variables_numericas <- datos_interpol[, c("edad", "imc", "clm")]
# Crear histograma para IMC
ggplot(datos_interpol, aes(x = imc)) +
geom_histogram(binwidth = 2, fill = "blue", color = "black", alpha = 0.7) +
labs(title = "Distribución del IMC", x = "IMC", y = "Frecuencia") +
theme_minimal()
¿Es significativo para un análisis
univariante?
El histograma es útil para analizar la distribución de una variable
individual, pero si queremos ver relaciones entre variables, gráficos
como boxplots o densidades podrían ser más útiles.
media_sexo <- aggregate(clm ~ sexo, data = datos_interpol, FUN = mean)
print(media_sexo)
## sexo clm
## 1 femenino 12517.00
## 2 masculino 13998.26
media_fumador_sexo <- aggregate(clm ~ fumador + sexo, data = datos_interpol, FUN = mean)
print(media_fumador_sexo)
## fumador sexo clm
## 1 no femenino 8934.788
## 2 yes femenino 29555.859
## 3 no masculino 8193.213
## 4 yes masculino 32873.799
region_max <- aggregate(clm ~ region, data = datos_interpol, FUN = mean)
region_max[which.max(region_max$clm), ]
## region clm
## 3 sureste 14588.32
datos_interpol$obesidad <- ifelse(datos_interpol$imc > 30, "Sí", "No")
top_obesos <- datos_interpol %>%
filter(obesidad == "Sí") %>%
select(edad, sexo, hijos, clm, region) %>%
arrange(desc(clm)) %>%
head(10)
print(top_obesos)
## edad sexo hijos clm region
## 1 54 femenino 0 63770.43 sureste
## 2 45 masculino 0 62592.87 sureste
## 3 52 masculino 3 60021.40 noroeste
## 4 31 femenino 1 58571.07 noreste
## 5 33 femenino 0 55135.40 noroeste
## 6 60 masculino 0 52590.83 suroeste
## 7 28 masculino 1 51194.56 suroeste
## 8 64 masculino 2 49577.66 sureste
## 9 59 masculino 1 48970.25 sureste
## 10 44 femenino 0 48885.14 sureste
El análisis realizado nos ha permitido identificar patrones importantes en los datos de seguros:
Estos hallazgos pueden ser útiles para ajustar modelos de pricing y gestión de riesgos en el contexto actuarial.