library(readr)
library(dplyr)
# Cargar dataset
titanic <- read_csv("titanicV2020-2.csv")
# Eliminar columnas innecesarias
titanic <- titanic %>%
select(-PassengerId, -Name, -Ticket, -Cabin)
# Imputar valores faltantes
titanic$Age[is.na(titanic$Age)] <- mean(titanic$Age, na.rm = TRUE)
titanic$Fare[is.na(titanic$Fare)] <- mean(titanic$Fare, na.rm = TRUE)
# Eliminar filas con NA restantes (Embarked)
titanic <- na.omit(titanic)
# Recode Sex (0 = male, 1 = female)
titanic$Sex <- ifelse(titanic$Sex == "male", 0, 1)
# Recode Embarked (C=1, Q=2, S=3)
titanic$Embarked <- recode(titanic$Embarked,
"C" = 1,
"Q" = 2,
"S" = 3)
# Ver nuevas dimensiones
dim(titanic)## [1] 1307 8
## Survived Pclass Sex Age
## Min. :0.0000 Min. :1.000 Min. :0.000 Min. : 0.17
## 1st Qu.:0.0000 1st Qu.:2.000 1st Qu.:0.000 1st Qu.:22.00
## Median :0.0000 Median :3.000 Median :0.000 Median :29.88
## Mean :0.3764 Mean :2.297 Mean :0.355 Mean :29.85
## 3rd Qu.:1.0000 3rd Qu.:3.000 3rd Qu.:1.000 3rd Qu.:35.00
## Max. :1.0000 Max. :3.000 Max. :1.000 Max. :80.00
## SibSp Parch Fare Embarked
## Min. :0.0000 Min. :0.0000 Min. : 0.000 Min. :1.000
## 1st Qu.:0.0000 1st Qu.:0.0000 1st Qu.: 7.896 1st Qu.:2.000
## Median :0.0000 Median :0.0000 Median : 14.454 Median :3.000
## Mean :0.4996 Mean :0.3856 Mean : 33.224 Mean :2.493
## 3rd Qu.:1.0000 3rd Qu.:0.0000 3rd Qu.: 31.275 3rd Qu.:3.000
## Max. :8.0000 Max. :9.0000 Max. :512.329 Max. :3.000
Observaciones:
El dataset muestra que la supervivencia está desbalanceada, la mayoría de los pasajeros eran hombres adultos en 3ª clase, viajaban solos y con tarifas bajas. Los grupos minoritarios (mujeres, 1ª clase, tarifas altas) probablemente tengan una mayor tasa de supervivencia, lo que vale la pena analizar en los próximos pasos.
## Loading required package: ggplot2
# Seleccionar solo columnas numéricas
titanic_num <- titanic %>% select(where(is.numeric))
# Calcular matriz de correlación
cor_matrix <- cor(titanic_num, use = "pairwise.complete.obs")
# Mostrar matriz redondeada
round(cor_matrix, 3)## Survived Pclass Sex Age SibSp Parch Fare Embarked
## Survived 1.000 -0.262 0.688 -0.052 0.003 0.110 0.232 -0.137
## Pclass -0.262 1.000 -0.122 -0.364 0.060 0.017 -0.558 0.187
## Sex 0.688 -0.122 1.000 -0.061 0.111 0.214 0.184 -0.099
## Age -0.052 -0.364 -0.061 1.000 -0.190 -0.130 0.170 -0.073
## SibSp 0.003 0.060 0.111 -0.190 1.000 0.373 0.161 0.066
## Parch 0.110 0.017 0.214 -0.130 0.373 1.000 0.222 0.045
## Fare 0.232 -0.558 0.184 0.170 0.161 0.222 1.000 -0.239
## Embarked -0.137 0.187 -0.099 -0.073 0.066 0.045 -0.239 1.000
# Heatmap de correlaciones
ggcorrplot(cor_matrix,
hc.order = TRUE,
type = "lower",
lab = TRUE,
lab_size = 3,
outline.color = "white",
ggtheme = ggplot2::theme_minimal(),
colors = c("#4575b4", "white", "#d73027")) +
ggplot2::labs(title = "Titanic - Correlation Heatmap")Observaciones:
El análisis muestra que las variables más asociadas a la supervivencia son el sexo y la clase socioeconómica (Pclass/Fare). Esto coincide con la política histórica de “women and children first” y con el acceso preferencial de los pasajeros de primera clase a los botes salvavidas.
# Solo columnas numéricas
titanic_num <- titanic %>% dplyr::select(where(is.numeric))
# Matriz de dispersión con suavizado
panel.smooth2 <- function(x, y, ...) {
points(x, y, pch = 16, cex = 0.7, col = rgb(0,0,0,0.4))
lines(stats::lowess(x, y, f = 2/3, iter = 3), lwd = 2)
}
pairs(titanic_num,
pch = 16,
cex = 0.6,
col = rgb(0,0,0,0.35),
lower.panel = panel.smooth2,
upper.panel = NULL,
main = "Scatterplots: todas las variables numéricas")Observaciones
Los scatterplots confirman que la supervivencia estuvo muy influenciada por el sexo, la clase y la tarifa. Las variables de estructura familiar (SibSp, Parch) aportan cierta información, pero menos determinante. La edad por sí sola no explica bien la supervivencia, aunque puede tener efecto en interacción con otras variables.
Los resultados muestran que las variables más relevantes asociadas con la supervivencia fueron el sexo y la clase socioeconómica (Pclass/Fare). El sexo tuvo la correlación más fuerte, evidenciando que las mujeres tuvieron muchas más probabilidades de sobrevivir debido a la política de “women and children first”. Asimismo, los pasajeros de primera clase, que pagaron tarifas más altas, tuvieron mayor acceso a los botes salvavidas en comparación con los de tercera clase. Las variables familiares (SibSp y Parch) mostraron asociaciones más débiles, pero en algunos casos brindaron ventajas al viajar acompañados. La edad, en cambio, no presentó una relación fuerte de manera aislada, aunque pudo influir en combinación con otros factores, como la prioridad otorgada a los niños pequeños.