1. Planteamiento del Problema
El naufragio del Titanic reveló importantes discrepancias en los
protocolos de salvamento, donde factores como el género y la edad
pudieron influir en las oportunidades de supervivencia. Por ejemplo,
existió la política de “mujeres y niños primero”, a partir de una
muestra representativa de pasajeros, esta investigación busca responder
preguntas cruciales como: ¿Realmente se privilegió la supervivencia
femenina sobre la masculina? ¿Los niños y adultos mayores tuvieron
prioridad real en el rescate? ¿Cómo se distribuyeron las edades entre
supervivientes y no supervivientes? ¿Existieron diferencias
significativas en la composición demográfica entre ambos grupos?
Este estudio se centra exclusivamente en analizar la relación entre
variables sexo y edad con la supervivencia en el hundimiento del
Titanic. Mediante análisis estadístico descriptivo y comparativo, se
examinarán los patrones de supervivencia desagregados por género y
grupos etarios, con el objetivo de determinar si existió un perfil
demográfico característico entre los sobrevivientes.
La investigación aportará evidencia concreta sobre la aplicación real
de los protocolos de salvamento y el papel que jugaron el género y la
edad como factores determinantes en la supervivencia durante una de las
mayores tragedias marítimas de la historia.
4. Gráficas
# Análisis de supervivencia global
superv_global <- df %>%
count(Sobrevivio) %>%
mutate(Porcentaje = round(n/sum(n)*100, 2))
cat("Distribución de Supervivencia Global:\n")
## Distribución de Supervivencia Global:
superv_global %>% kable() %>% kable_styling()
|
Sobrevivio
|
n
|
Porcentaje
|
|
No
|
549
|
61.62
|
|
Sí
|
342
|
38.38
|
# Gráfico de supervivencia global
ggplot(superv_global, aes(x = Sobrevivio, y = n, fill = Sobrevivio)) +
geom_bar(stat = "identity") +
geom_text(aes(label = paste0(n, " (", Porcentaje, "%)")), vjust = -0.5) +
labs(title = "Distribución de Supervivencia en el Titanic",
x = "Sobrevivió", y = "Número de Pasajeros") +
theme_minimal() +
scale_fill_manual(values = c("No" = "#e74c3c", "Sí" = "#2ecc71"))

# Análisis de distribución por sexo
dist_sexo <- df %>%
count(Sexo) %>%
mutate(Porcentaje = round(n/sum(n)*100, 2))
cat("Distribución por Sexo:\n")
## Distribución por Sexo:
dist_sexo %>% kable() %>% kable_styling()
|
Sexo
|
n
|
Porcentaje
|
|
Hombre
|
577
|
64.76
|
|
Mujer
|
314
|
35.24
|
# Gráfico de distribución por sexo
ggplot(dist_sexo, aes(x = Sexo, y = n, fill = Sexo)) +
geom_bar(stat = "identity") +
geom_text(aes(label = paste0(n, " (", Porcentaje, "%)")), vjust = -0.5) +
labs(title = "Distribución de Pasajeros por Sexo",
x = "Sexo", y = "Número de Pasajeros") +
theme_minimal() +
scale_fill_manual(values = c("Hombre" = "#3498db", "Mujer" = "#e91e63"))

# Tabla de contingencia: Supervivencia vs Sexo
tabla_sexo <- table(df$Sexo, df$Sobrevivio)
prop_sexo <- prop.table(tabla_sexo, margin = 1) * 100
cat("Tabla de Contingencia: Supervivencia por Sexo\n")
## Tabla de Contingencia: Supervivencia por Sexo
tabla_sexo %>% kable() %>% kable_styling()
|
|
No
|
Sí
|
|
Hombre
|
468
|
109
|
|
Mujer
|
81
|
233
|
cat("\nPorcentajes por Fila (Sexo):\n")
##
## Porcentajes por Fila (Sexo):
prop_sexo %>% round(2) %>% kable() %>% kable_styling()
|
|
No
|
Sí
|
|
Hombre
|
81.11
|
18.89
|
|
Mujer
|
25.80
|
74.20
|
# Gráfico de supervivencia por sexo
df %>%
count(Sexo, Sobrevivio) %>%
group_by(Sexo) %>%
mutate(Porcentaje = n/sum(n)*100) %>%
ggplot(aes(x = Sexo, y = Porcentaje, fill = Sobrevivio)) +
geom_bar(stat = "identity", position = "dodge") +
geom_text(aes(label = paste0(round(Porcentaje, 1), "%")),
position = position_dodge(width = 0.9), vjust = -0.5) +
labs(title = "Tasa de Supervivencia por Sexo",
x = "Sexo", y = "Porcentaje", fill = "Sobrevivió") +
theme_minimal() +
scale_fill_manual(values = c("No" = "#e74c3c", "Sí" = "#2ecc71"))

# Tabla de contingencia: Supervivencia vs Grupo de Edad
tabla_edad <- table(df$Grupo_Edad, df$Sobrevivio)
prop_edad <- prop.table(tabla_edad, margin = 1) * 100
cat("Tabla de Contingencia: Supervivencia por Grupo de Edad\n")
## Tabla de Contingencia: Supervivencia por Grupo de Edad
tabla_edad %>% kable() %>% kable_styling()
|
|
No
|
Sí
|
|
Niño (0-11)
|
29
|
39
|
|
Adolescente (12-17)
|
23
|
22
|
|
Adulto (18-59)
|
353
|
222
|
|
Adulto Mayor (60+)
|
19
|
7
|
|
Edad Desconocida
|
125
|
52
|
cat("\nPorcentajes por Fila (Grupo de Edad):\n")
##
## Porcentajes por Fila (Grupo de Edad):
prop_edad %>% round(2) %>% kable() %>% kable_styling()
|
|
No
|
Sí
|
|
Niño (0-11)
|
42.65
|
57.35
|
|
Adolescente (12-17)
|
51.11
|
48.89
|
|
Adulto (18-59)
|
61.39
|
38.61
|
|
Adulto Mayor (60+)
|
73.08
|
26.92
|
|
Edad Desconocida
|
70.62
|
29.38
|
# Gráfico de supervivencia por grupos etarios
df %>%
count(Grupo_Edad, Sobrevivio) %>%
group_by(Grupo_Edad) %>%
mutate(Porcentaje = n/sum(n)*100) %>%
ggplot(aes(x = Grupo_Edad, y = Porcentaje, fill = Sobrevivio)) +
geom_bar(stat = "identity", position = "dodge") +
geom_text(aes(label = paste0(round(Porcentaje, 1), "%")),
position = position_dodge(width = 0.9), vjust = -0.5, size = 3) +
labs(title = "Tasa de Supervivencia por Grupo de Edad",
x = "Grupo de Edad", y = "Porcentaje", fill = "Sobrevivió") +
theme_minimal() +
theme(axis.text.x = element_text(angle = 45, hjust = 1)) +
scale_fill_manual(values = c("No" = "#e74c3c", "Sí" = "#2ecc71"))

# Análisis combinado de sexo y grupos etarios
analisis_combinado <- df %>%
group_by(Sexo, Grupo_Edad) %>%
summarise(
Total = n(),
Sobrevivientes = sum(Sobrevivio == "Sí"),
Tasa_Supervivencia = round(Sobrevivientes/Total * 100, 2),
.groups = 'drop'
)
cat("Análisis Combinado: Sexo y Grupo de Edad\n")
## Análisis Combinado: Sexo y Grupo de Edad
analisis_combinado %>% kable() %>% kable_styling()
|
Sexo
|
Grupo_Edad
|
Total
|
Sobrevivientes
|
Tasa_Supervivencia
|
|
Hombre
|
Niño (0-11)
|
36
|
20
|
55.56
|
|
Hombre
|
Adolescente (12-17)
|
22
|
3
|
13.64
|
|
Hombre
|
Adulto (18-59)
|
373
|
67
|
17.96
|
|
Hombre
|
Adulto Mayor (60+)
|
22
|
3
|
13.64
|
|
Hombre
|
Edad Desconocida
|
124
|
16
|
12.90
|
|
Mujer
|
Niño (0-11)
|
32
|
19
|
59.38
|
|
Mujer
|
Adolescente (12-17)
|
23
|
19
|
82.61
|
|
Mujer
|
Adulto (18-59)
|
202
|
155
|
76.73
|
|
Mujer
|
Adulto Mayor (60+)
|
4
|
4
|
100.00
|
|
Mujer
|
Edad Desconocida
|
53
|
36
|
67.92
|
# Heatmap de supervivencia
ggplot(analisis_combinado, aes(x = Sexo, y = Grupo_Edad, fill = Tasa_Supervivencia)) +
geom_tile(color = "white") +
geom_text(aes(label = paste0(Tasa_Supervivencia, "%")), color = "white", size = 4) +
scale_fill_gradient(low = "#e74c3c", high = "#2ecc71", name = "Tasa de\nSupervivencia (%)") +
labs(title = "Mapa de Calor: Tasa de Supervivencia por Sexo y Grupo de Edad",
x = "Sexo", y = "Grupo de Edad") +
theme_minimal()

# Estadísticas de edad por grupo de supervivencia
estadisticas_edad_superv <- df %>%
group_by(Sobrevivio) %>%
summarise(
n = n(),
Media_Edad = mean(Edad, na.rm = TRUE),
Mediana_Edad = median(Edad, na.rm = TRUE),
SD_Edad = sd(Edad, na.rm = TRUE),
Min_Edad = min(Edad, na.rm = TRUE),
Max_Edad = max(Edad, na.rm = TRUE),
.groups = 'drop'
)
cat("Estadísticas de Edad por Estado de Supervivencia:\n")
## Estadísticas de Edad por Estado de Supervivencia:
estadisticas_edad_superv %>% kable(digits = 2) %>% kable_styling()
|
Sobrevivio
|
n
|
Media_Edad
|
Mediana_Edad
|
SD_Edad
|
Min_Edad
|
Max_Edad
|
|
No
|
549
|
30.63
|
28
|
14.17
|
1.00
|
74
|
|
Sí
|
342
|
28.34
|
28
|
14.95
|
0.42
|
80
|
# Boxplot de edades por supervivencia
ggplot(df, aes(x = Sobrevivio, y = Edad, fill = Sobrevivio)) +
geom_boxplot(alpha = 0.7) +
labs(title = "Distribución de Edades por Estado de Supervivencia",
x = "Sobrevivió", y = "Edad") +
theme_minimal() +
scale_fill_manual(values = c("No" = "#e74c3c", "Sí" = "#2ecc71"))
