Reporte Proyecto #1 Titanic Dataset

Descripción del dominio

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 los datos

Obtener el dataset Titanic desde la dirección: https://www.kaggle.com/c/titanic/download/train.csv

Cargar el Dataset

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)

Variables incluidas en el Dataset

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                                        
## 

Preprocesamiento

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.

Estadísticas Básicas

Datos decesos y supervivientes

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)

Datos de Edad de los pasajeros

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)")

Datos de edad separados entre las personas que sobrevivieron y las que murireron

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 Alt text 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

Datos de clase del pasajero y tarifa que pagó para abordar.

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")

Datos de abordaje

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