El Titanic fue un transatlántico británico, el mayor barco de pasajeros del mundo en el momento de su terminación. A las 23:40 del 14 de abril , cuatro días después de partir a unos 600 km al sur de terranova, el Titanic chocó contra un Iceberg. La colisión abrió varias planchas del casco en su lado de estribor bajo la línea de flotación. Durante dos horas y media el barco se fue hundiendo gradualmente por su parte delantera mientras la popa se elevaba, y en este tiempo varios cientos de pasajeros y tripulantes fueron evacuados en los botes salvavidas.
El dataset obtenido desde la web contiene registros sobre los pasajeros que abordaron el transatlántico Titanic el 10 de abril de 1912 desde el puerto Southampton y los pasajeros que se incorporaron en los puertos de Cherburgo, Francia, y en Queenstown en Irlanda. Entre los pasajeros que abordaron se encontraban personas con grandes cantidades de dinero, además de inmigrantes que buscaban mejores opciones de vida al llegar a tierras norteamericanas. En el incidente ocurrido el 14 de abril de 1912, murieron 1514 personas de las 2223 que abordaron. Muchos de las víctimas fueron provocadas por el estricto protocolo de salvamento que se utilizó el cual seguía el principio “Mujeres y niñas primero”, varios de los botes no iban completamente llenos. La mayoría de los que quedaron flotando en la superficie del mar murieron de hipotermia, aunque algunos fueron rescatados por los botes salvavidas, los 710 supervivientes fueron rescatados por el transatlántico RMS Carpathia unas horas después. Los restos del Titanic fueron descubiertos el 1 de septiembre de 1985 por el oceanógrafo estadounidense Robert Ballard en el fondo del Atlántico Norte a una profundidad de 3784 metros. Desde su descubrimiento miles de objetos del barco han sido recuperados del fondo del mar y están en exposición en numerosos museos del mundo. Cabe destacar que el dataset no contiene los datos de todos los pasajeros que abordaron el barco. El dataset de entrenamiento contiene 891 registros.
Obtener el dataset Titanic desde la dirección: https://www.kaggle.com/c/titanic/download/train.csv
Cambiar el directorio de trabajo donde se encuentra el archivo descargado.
knitr::opts_chunk$set(echo = TRUE)
setwd("C:/Users/liel/Desktop/Mineriadatos")
Cargar el dataset en la variable titanic.
knitr::opts_chunk$set(echo = TRUE)
titanic <- read.csv("train.csv", stringsAsFactors = FALSE)
survived -> Indica si la persona sobrevivió o no al incidente. 0 = No, 1 = Si. pcclass -> Para indicar la clase en la que viajaba la persona. 1 = primera, 2 = segunda, 3 = tercera. name -> Nombre del pasajero, almacenado en String. sex -> Sexo del pasajero, male o famale. age -> Edad del pasajero, almacenado con enteros. sibsp -> Número de hermanos que el pasajero tenía a bordo. Almacenado en un entero. parch -> Número de padres (del pasajero) que estaban a bordo. Almacenados en un entero. ticket -> Número de tikcet que el pasajero entregó al abordar. fare -> Indica el monto que el pasajero pago para obtener su boleto. Almacenado en un double. cabin -> Indica la cabina que fue asignada al pasajero, almacenada en un String. embarked -> Indica el puerto donde el pasajero abordo, C = cherbourg, Q = Queenstown, S= Southampton.
knitr::opts_chunk$set(echo = TRUE)
head(titanic)
## PassengerId Survived Pclass
## 1 1 0 3
## 2 2 1 1
## 3 3 1 3
## 4 4 1 1
## 5 5 0 3
## 6 6 0 3
## Name Sex Age SibSp
## 1 Braund, Mr. Owen Harris male 22 1
## 2 Cumings, Mrs. John Bradley (Florence Briggs Thayer) female 38 1
## 3 Heikkinen, Miss. Laina female 26 0
## 4 Futrelle, Mrs. Jacques Heath (Lily May Peel) female 35 1
## 5 Allen, Mr. William Henry male 35 0
## 6 Moran, Mr. James male NA 0
## Parch Ticket Fare Cabin Embarked
## 1 0 A/5 21171 7.2500 S
## 2 0 PC 17599 71.2833 C85 C
## 3 0 STON/O2. 3101282 7.9250 S
## 4 0 113803 53.1000 C123 S
## 5 0 373450 8.0500 S
## 6 0 330877 8.4583 Q
summary(titanic)
## PassengerId Survived Pclass Name
## Min. : 1.0 Min. :0.0000 Min. :1.000 Length:891
## 1st Qu.:223.5 1st Qu.:0.0000 1st Qu.:2.000 Class :character
## Median :446.0 Median :0.0000 Median :3.000 Mode :character
## Mean :446.0 Mean :0.3838 Mean :2.309
## 3rd Qu.:668.5 3rd Qu.:1.0000 3rd Qu.:3.000
## Max. :891.0 Max. :1.0000 Max. :3.000
##
## Sex Age SibSp Parch
## Length:891 Min. : 0.42 Min. :0.000 Min. :0.0000
## Class :character 1st Qu.:20.12 1st Qu.:0.000 1st Qu.:0.0000
## Mode :character Median :28.00 Median :0.000 Median :0.0000
## Mean :29.70 Mean :0.523 Mean :0.3816
## 3rd Qu.:38.00 3rd Qu.:1.000 3rd Qu.:0.0000
## Max. :80.00 Max. :8.000 Max. :6.0000
## NA's :177
## Ticket Fare Cabin Embarked
## Length:891 Min. : 0.00 Length:891 Length:891
## Class :character 1st Qu.: 7.91 Class :character Class :character
## Mode :character Median : 14.45 Mode :character Mode :character
## Mean : 32.20
## 3rd Qu.: 31.00
## Max. :512.33
##
knitr::opts_chunk$set(echo = TRUE)
str(titanic)
## 'data.frame': 891 obs. of 12 variables:
## $ PassengerId: int 1 2 3 4 5 6 7 8 9 10 ...
## $ Survived : int 0 1 1 1 0 0 0 0 1 1 ...
## $ Pclass : int 3 1 3 1 3 3 1 3 3 2 ...
## $ Name : chr "Braund, Mr. Owen Harris" "Cumings, Mrs. John Bradley (Florence Briggs Thayer)" "Heikkinen, Miss. Laina" "Futrelle, Mrs. Jacques Heath (Lily May Peel)" ...
## $ Sex : chr "male" "female" "female" "female" ...
## $ Age : num 22 38 26 35 35 NA 54 2 27 14 ...
## $ SibSp : int 1 1 0 1 0 0 0 3 0 1 ...
## $ Parch : int 0 0 0 0 0 0 0 1 2 0 ...
## $ Ticket : chr "A/5 21171" "PC 17599" "STON/O2. 3101282" "113803" ...
## $ Fare : num 7.25 71.28 7.92 53.1 8.05 ...
## $ Cabin : chr "" "C85" "" "C123" ...
## $ Embarked : chr "S" "C" "S" "S" ...
Analizadas las variables presentes en el dataset, las variables más representativas son: survived, pcclas, sexo, age y fare. el atributo survival es imprescindible para saber quien sobrevivió al incidente, los atributos pcclas y fare, pueden darnos noción de que tanto influye la posición económica al momento de rescatar a alguien, con el atributo de age y sex, podremos corroborar si realmente al momento de evacuar, mujeres y niños fueron prioridad. Los atributos omitidos: name, sibsp, parch, ticket, cabin, *embarked. El nombre de los pasajeros almacenado en el atributo name puede llegar a influenciar el si sobrevivió o no, dado que algunas personas su nombre es “importante” pero con el fare y clase en la que viajaba es posible saber si tenía buena posición económica. sibsp y parch indican si un pasajero tenía acompañantes durante el viaje o al menos un familiar a bordo, este atributo también podría llegar a influenciar el si se salvo o no, dado que por cuestiones sentimentales podrias dejarle tu lugar en algún bote salvavidas a tu familiar, pero llegar a una conclusión así conlleva a analizar muchos otros factores que son irrelevantes en este caso. Conocer el atributo ticket es algo irrelevante, dado que solo era para control de entrada al barco. El atributo de cabin es usado indica donde estuvo habitando el pasajero durante el viaje, algunos son desconocidos, pero conociendo la clase en que viajaba podrías darte una idea que tipo de cabina se le asignó. El puerto donde embarcó indicado en el atributo embarked, no influye tanto en si sobrevivió o no, dado que en todos los puertos abordaron tanto personas ricas como pobre, niños o adultos, etc.
knitr::opts_chunk$set(echo = TRUE)
a <- sum(titanic$Embarked == "Q")
b <- sum(titanic$Embarked == "S")
c <-sum(titanic$Embarked == "C")
La mayor parte de los pasajeros abordaron el barco en el puerto de Southampton, integrándose 245 en los puertos posteriores.
De los registros con los que se cuenta se tiene que la siguiente cantidad de pasajeros sobrevivieron:
knitr::opts_chunk$set(echo = TRUE)
sum(titanic$Survived==0)
## [1] 549
y murieron:
knitr::opts_chunk$set(echo = TRUE)
superv <- sum(titanic$Survived==1)
De los sobrevivientes 113 eran menores de edad.
knitr::opts_chunk$set(echo = TRUE)
menores <- sum(titanic$Age<18, na.rm=TRUE)
menores
## [1] 113
y 575 mayores de edad.
knitr::opts_chunk$set(echo = TRUE)
mayores <- sum(titanic$Age>18, na.rm=TRUE)
mayores
## [1] 575
203 pasajeros registrados se desconoce su edad.
knitr::opts_chunk$set(echo = TRUE)
navalues = (max(titanic$PassengerId))-(mayores + menores)
navalues
## [1] 203
La edad promedio de los pasajeros es de 29.6 años, la mayoria de las personas a bordo eran personas jovenes.
knitr::opts_chunk$set(echo = TRUE)
mean(titanic$Age, na.rm=TRUE)
## [1] 29.69912
La edad mínima registrada es de .42, la cual puede haber pertenecido a un infante de pocos meses de edad.
knitr::opts_chunk$set(echo = TRUE)
min(titanic$Age, na.rm=TRUE)
## [1] 0.42
La edad máxima es de 80 años.
knitr::opts_chunk$set(echo = TRUE)
max(titanic$Age, na.rm=TRUE)
## [1] 80
Por lo cual el rango de edades va de .42 hasta 80 años.
knitr::opts_chunk$set(echo = TRUE)
range(titanic$Age, na.rm=TRUE)
## [1] 0.42 80.00
EL valor medio de los datos es de 28 años.
knitr::opts_chunk$set(echo = TRUE)
median(titanic$Age, na.rm=TRUE)
## [1] 28
Calculo de cuartiles de la edad, donde se ve el rango de los datos, la mediana del conjunto total al 50%. Representando el rango de edades que mas se presentan en los datos, para el dataset las edades mas presentes van de 20.1 años hasta 38 años. Presentandose pocos caso de edades mayores e inferiores.
knitr::opts_chunk$set(echo = TRUE)
quantile(titanic$Age, na.rm=TRUE)
## 0% 25% 50% 75% 100%
## 0.420 20.125 28.000 38.000 80.000
Inter Quartile Range (IQR) edades. Q3 - Q1 = 17.85
knitr::opts_chunk$set(echo = TRUE)
IQR(titanic$Age, na.rm=TRUE)
## [1] 17.875
Boxplot de las edades de los pasajeros del barco. En el eje de la y se pueden observar los cuartiles, Q1 = 20.1, Q2 = 28, Q3 = 38, donde Q2 conicide con la mediana de los datos, en los “bigotes” del gráfico, el inferior es el valor minimo de las edades = .42, y el “bigote” se extienda hasta Q3 + 1.5 IQR = 38+26.8125 = 64.8125. Los valores que se encuentran sobre esta linea se consideran valores atípicos, observando los valores presentados en el boxplot, se puede ver que hay muchos pasajeros cuya edad excede los valores mas comunes, por lo que se puede decir que ver personas mayores a bordo del barco era raro.
knitr::opts_chunk$set(echo = TRUE)
boxplot(titanic$Age,
main ="Boxplot Edades Pasajeros",
ylab ="Edades (años)")
knitr::opts_chunk$set(echo = TRUE)
hist(titanic$Age, main = "Histograma Edades", xlab = "Edades (Años)")
Utilizando las edades registradas, separar las edades de los sobrevivientes y las personas que murieron.
knitr::opts_chunk$set(echo = TRUE)
edades_sobrev <- titanic[which(titanic$Survived==1),"Age"]
edades_desces <- titanic[which(titanic$Survived==0),"Age"]
Estadisticas básicas de las edades de los supervivientes.
knitr::opts_chunk$set(echo = TRUE)
mean(edades_sobrev, na.rm = TRUE)
## [1] 28.34369
median(edades_sobrev, na.rm = TRUE)
## [1] 28
quantile(edades_sobrev, na.rm = TRUE)
## 0% 25% 50% 75% 100%
## 0.42 19.00 28.00 36.00 80.00
IQR(edades_sobrev, na.rm = TRUE)
## [1] 17
Estadisticas básicas de las personas que murieron.
knitr::opts_chunk$set(echo = TRUE)
mean(edades_desces, na.rm = TRUE)
## [1] 30.62618
median(edades_desces, na.rm = TRUE)
## [1] 28
quantile(edades_desces, na.rm = TRUE)
## 0% 25% 50% 75% 100%
## 1 21 28 39 74
IQR(edades_desces, na.rm = TRUE)
## [1] 18
knitr::opts_chunk$set(echo = TRUE)
boxplot(edades_sobrev,
main ="Boxplot Edades Sobrevivientes",
ylab ="Edades (años)")
knitr::opts_chunk$set(echo = TRUE)
boxplot(edades_desces,
main ="Boxplot Edades Decesos",
ylab ="Edades (años)")
Observando los datos de las personas que sobrevivieron y las que murieron, es posible ver que entre más joven era la persona más probabilidades tiene de sobrevivir, dado que de las personas que sobrevivieron su media se encuentra en los 28 años, mientras que para las personas que murieron se encontraba en 30.6 años, los boxplot muestran cómo en ambos casos es posible ver valores atípicos, que son personas mayores que exceden por un amplio rango la media, siendo una mayor cantidad en el caso de las personas que murieron.
Histogramas
knitr::opts_chunk$set(echo = TRUE)
hist(edades_sobrev,
main ="Histograma Edades Sobrevivientes",
xlab ="Edades (años)")
knitr::opts_chunk$set(echo = TRUE)
hist(edades_desces,
main ="Histograma Edades Decesos",
xlab ="Edades (años)")
En ambos casos se observa que la forma de los datos tiene un “positive skew”, donde la media se encuentra a la derecha de la mediana
Tener este comportamiento nos da una idea de que si un pasajero mayor a 28 años abordara el barco sería más probable que este muriera durante el incidente.
Supervivencia vs edad
knitr::opts_chunk$set(echo = TRUE)
plot(x = titanic$Age, y = titanic$Survived,
main = "Age vs Survived",
xlab = "Age", ylab = "Survival")
###Datos de los sobrevivientes segun su sexo
knitr::opts_chunk$set(echo = TRUE)
sobrevivientes <- titanic[which(titanic$Survived==1),"Sex"]
decesos <- titanic[which(titanic$Survived==0),"Sex"]
table(titanic$Sex)
##
## female male
## 314 577
Estadisticas básicas Total de mujeres que sobrevivierón = 123 Total de hombres que sobrevivierón = 109
knitr::opts_chunk$set(echo = TRUE)
table(titanic[which(titanic$Survived==1),"Sex"])
##
## female male
## 233 109
Total de mujeres que murieron = 123 Total de hombres que murieron = 109
knitr::opts_chunk$set(echo = TRUE)
table(titanic[which(titanic$Survived==0),"Sex"])
##
## female male
## 81 468
Estadistica Básica Pasajeros por clase: Primera = 216 Segunda = 184 Tercera = 491
knitr::opts_chunk$set(echo = TRUE)
table(titanic$Pclass)
##
## 1 2 3
## 216 184 491
Estadisticas básicas de la tarifa Media fare = 32.20
knitr::opts_chunk$set(echo = TRUE)
mean(titanic$Fare, na.rm=TRUE)
## [1] 32.20421
Mediana fare = 14.4542
knitr::opts_chunk$set(echo = TRUE)
median(titanic$Fare, na.rm=TRUE)
## [1] 14.4542
La tarifa mínima registrada es de 0, la o las personas que pagaron esto por su ticket de entrada puede que fueran políticos o personas de gran poderío económico o también personas que recibieron boletos gratuitos.
knitr::opts_chunk$set(echo = TRUE)
min(titanic$Fare, na.rm=TRUE)
## [1] 0
La siguiente gráfica muestra la comparación entre el precio que pagaron para abordar y la clase en la que fueron asignados durante el viaje, es difícil decir a que se deba el hecho de no pagar una tarifa por el boleto dado que hay casos donde tanto de primera como tercera clase no se pago para abordar, pero en general es posible ver una relación entre el costo y la clase, dado que entre más barato es el boleto viajaras en una clase más baja.
knitr::opts_chunk$set(echo = TRUE)
plot(x = titanic$Fare, y = titanic$Pclass,
main = "Fare vs Pclass",
xlab = "Fare", ylab = "Pclass")
La tarifa mas alta es de 512.3292.
knitr::opts_chunk$set(echo = TRUE)
max(titanic$Fare, na.rm=TRUE)
## [1] 512.3292
El rango de precios de las tarifas va desde 0 hasta 512.3292
knitr::opts_chunk$set(echo = TRUE)
range(titanic$Fare, na.rm=TRUE)
## [1] 0.0000 512.3292
Cuartiles
knitr::opts_chunk$set(echo = TRUE)
quantile(titanic$Fare, na.rm=TRUE)
## 0% 25% 50% 75% 100%
## 0.0000 7.9104 14.4542 31.0000 512.3292
Inter Quartile Range (IQR) Q3 - Q1 = 17.85
knitr::opts_chunk$set(echo = TRUE)
IQR(titanic$Fare, na.rm=TRUE)
## [1] 23.0896
Boxplot de las tarifas pagadas para abordar el barco. En el eje de la y se pueden observar los cuartiles, Q1 = 7.91, Q2 = 14.45, Q3 = 31, donde Q2 coincide con la mediana de los datos, en los “bigotes” del gráfico, el inferior es el valor de la tarifa mínima pagada = 0, y el “bigote” se extienda hasta Q3 + 1.5 IQR = 31+34.6344 = 65.6344. Los valores que se encuentran sobre esta línea se consideran valores atípicos, observando los valores presentados en el boxplot, se puede observar como una gran cantidad de las tarifas pagadas se va muy por encima de la mediana esto se debe a que muchos de los boletos vendidos eran para habitaciones sencillas en cada una de las clases, y entre mas lujos y servicios se querían alquilar el boleto aumentaba su precio, lo cual llevó a que muchos de los datos quedarán demasiado aislados.
knitr::opts_chunk$set(echo = TRUE)
boxplot(titanic$Fare,
main ="Boxplot Tarifas Pagadas",
ylab ="Fare")
Desviación estándar En promedio cada una de las tarifas se aleja de la media por 49.69.
knitr::opts_chunk$set(echo = TRUE)
sd(titanic$Fare)
## [1] 49.69343
Varianza El valor obtenido al calcular la varianza es muy alto, indicando que como se ha visto, los precios son algo aleatorios y están muy dispersos de la media.
knitr::opts_chunk$set(echo = TRUE)
var(titanic$Fare)
## [1] 2469.437
knitr::opts_chunk$set(echo = TRUE)
hist(titanic$Fare, main = "Histograma Tarifas", xlab = "Fare")
Cada uno de los pasajeros que abordó fue separado en clases dentro del barco dependiendo su status social. 216 viajaban en primera clase, 184 en clase media y 491 en tercera clase.
knitr::opts_chunk$set(echo = TRUE)
table(titanic$Embarked)
##
## C Q S
## 2 168 77 644