Análisis

Autor: Elias Valdez
Fecha: 2025-04-08

Introducción

En este análisis se utiliza una red neuronal para predecir la supervivencia de los pasajeros del Titanic. Se emplean distintas técnicas de limpieza, transformación de datos y visualización de correlaciones para mejorar el desempeño del modelo.

📦 Librerías utilizadas

  • readr: para leer archivos .csv.
  • neuralnet: para crear y entrenar redes neuronales.
  • corrplot: para visualizar correlaciones entre variables.
  • ggplot2: para gráficos estadísticos elegantes.
  • knitr: para incrustar código y resultados en HTML.

1. Cargar los datos

Se carga el archivo CSV que contiene los datos del Titanic.

library(readr)
DatosTitanicEsp <- read_csv("DatosTitanicEsp.csv")
View(DatosTitanicEsp)

2. Limpieza de datos

Comprobación de valores faltantes

Verificamos si hay datos perdidos (NA) en las columnas principales.

sum(is.na(DatosTitanicEsp$Vivio))
sum(is.na(DatosTitanicEsp$Sexo))
sum(is.na(DatosTitanicEsp$Edad))  # 177 NA
sum(is.na(DatosTitanicEsp$ClasePasajero))

Eliminación de filas con NA

Eliminamos los registros que tienen valores NA en la columna Edad.

DatosTitanicEsp <- DatosTitanicEsp[!is.na(DatosTitanicEsp$Edad), ]
sum(is.na(DatosTitanicEsp$Edad))

3. Transformación de variables

Se convierte la variable 'Sexo' a formato numérico para que pueda ser procesada por la red neuronal.

DatosTitanicEsp$Sexo[DatosTitanicEsp$Sexo == "male"] <- 0
DatosTitanicEsp$Sexo[DatosTitanicEsp$Sexo == "female"] <- 1
DatosTitanicEsp$Sexo <- as.numeric(DatosTitanicEsp$Sexo)

4. Creación del modelo de red neuronal

Se entrena una red neuronal con dos capas ocultas, con 3 y 2 neuronas respectivamente. Se guarda el modelo para usos posteriores.

library(neuralnet)
red <- neuralnet(Vivio ~ Edad + Sexo + ClasePasajero,
                 data = DatosTitanicEsp,
                 hidden = c(3, 2),
                 linear.output = FALSE,
                 act.fct = "logistic")
save(red, file = "C:/MODELOS_ENTRENADOS_IA/TitanicMOdel.RData")
plot(red)

5. Predicciones del modelo

Se obtienen las predicciones de la red neuronal y se imprimen.

predicciones <- unlist(red$net.result)
predicciones

6. Evaluación del modelo

Comparación de predicciones vs realidad

tablita <- data.frame(
  lo_que_predijo = round(predicciones),
  lo_que_deberia_ser = DatosTitanicEsp$Vivio,
  le_atino = round(predicciones) == DatosTitanicEsp$Vivio
)
tablita

Porcentaje de aciertos

table_resultados <- table(tablita$le_atino)
porcentajes <- prop.table(table_resultados) * 100
porcentajes <- round(porcentajes, 2)
names(porcentajes) <- c("Falló (FALSE)", "Acertó (TRUE)")
print(porcentajes)

7. Análisis de correlación

Se analiza la relación entre variables numéricas mediante una matriz de correlación visual.

library(corrplot)
library(ggplot2)
datos <- DatosTitanicEsp[, c(1:3, 5:8)]
corr <- round(cor(datos), 2)
corrplot(corr, method = "number", type = "upper")

Conclusión

Se construyó un modelo predictivo usando redes neuronales para determinar la probabilidad de que un pasajero del Titanic sobreviviera. El modelo fue evaluado y mostró un porcentaje de aciertos significativo. También se exploraron las correlaciones entre variables para entender mejor los factores que influyen en la supervivencia.