Paso 1. Importar archivo .csv

El primer paso, importar el archvio .csv

df <- read.csv("/Users/gerardorodarte/Desktop/ITESM/Tercer semestre/Bootcamp Programación/Actividad 4/titanic.csv")

Paso 2. Entenderle a la base de datos

Imprimir un resumen para observar los valores y variables de la Base de Datos

resumen <- summary(df)
resumen
##      pclass         survived         name               sex           
##  Min.   :1.000   Min.   :0.000   Length:1310        Length:1310       
##  1st Qu.:2.000   1st Qu.:0.000   Class :character   Class :character  
##  Median :3.000   Median :0.000   Mode  :character   Mode  :character  
##  Mean   :2.295   Mean   :0.382                                        
##  3rd Qu.:3.000   3rd Qu.:1.000                                        
##  Max.   :3.000   Max.   :1.000                                        
##  NA's   :1       NA's   :1                                            
##       age              sibsp            parch          ticket         
##  Min.   : 0.1667   Min.   :0.0000   Min.   :0.000   Length:1310       
##  1st Qu.:21.0000   1st Qu.:0.0000   1st Qu.:0.000   Class :character  
##  Median :28.0000   Median :0.0000   Median :0.000   Mode  :character  
##  Mean   :29.8811   Mean   :0.4989   Mean   :0.385                     
##  3rd Qu.:39.0000   3rd Qu.:1.0000   3rd Qu.:0.000                     
##  Max.   :80.0000   Max.   :8.0000   Max.   :9.000                     
##  NA's   :264       NA's   :1        NA's   :1                         
##       fare            cabin             embarked             boat          
##  Min.   :  0.000   Length:1310        Length:1310        Length:1310       
##  1st Qu.:  7.896   Class :character   Class :character   Class :character  
##  Median : 14.454   Mode  :character   Mode  :character   Mode  :character  
##  Mean   : 33.295                                                           
##  3rd Qu.: 31.275                                                           
##  Max.   :512.329                                                           
##  NA's   :2                                                                 
##       body        home.dest        
##  Min.   :  1.0   Length:1310       
##  1st Qu.: 72.0   Class :character  
##  Median :155.0   Mode  :character  
##  Mean   :160.8                     
##  3rd Qu.:256.0                     
##  Max.   :328.0                     
##  NA's   :1189

Paso 3. Filtrar base de datos

Filtramos la base de datos para utilizar solo aquellos que queremos

Titanic <- df[,c("pclass","age", "sex", "survived")]

Paso 4. Convertir tipos de variables

Volvemos algunas variables a factores

Titanic$survived <- as.factor (ifelse(Titanic$survived==0, "Murió", "Sobrevivió"))
Titanic$pclass <- as.factor(Titanic$pclass)
Titanic$sex <- as.factor(Titanic$sex)
str(Titanic)
## 'data.frame':    1310 obs. of  4 variables:
##  $ pclass  : Factor w/ 3 levels "1","2","3": 1 1 1 1 1 1 1 1 1 1 ...
##  $ age     : num  29 0.917 2 30 25 ...
##  $ sex     : Factor w/ 3 levels "","female","male": 2 3 2 3 2 3 2 3 2 3 ...
##  $ survived: Factor w/ 2 levels "Murió","Sobrevivió": 2 2 1 1 1 2 2 1 2 1 ...

Paso 5. Eliminar NA

Eliminamos los NA de nuestras variables para que no nos afecten

sum(is.na(Titanic))
## [1] 266
Titanic <- na.omit(Titanic)

Paso 6. Crear árbol de decisión

Instalamos rpart y creamos el arbol de decisión

# install.packages("rpart")
library(rpart)

arbol <- rpart (formula = survived ~., data = Titanic)
arbol
## n= 1046 
## 
## node), split, n, loss, yval, (yprob)
##       * denotes terminal node
## 
##  1) root 1046 427 Murió (0.59177820 0.40822180)  
##    2) sex=male 658 135 Murió (0.79483283 0.20516717)  
##      4) age>=9.5 615 110 Murió (0.82113821 0.17886179) *
##      5) age< 9.5 43  18 Sobrevivió (0.41860465 0.58139535)  
##       10) pclass=3 29  11 Murió (0.62068966 0.37931034) *
##       11) pclass=1,2 14   0 Sobrevivió (0.00000000 1.00000000) *
##    3) sex=female 388  96 Sobrevivió (0.24742268 0.75257732)  
##      6) pclass=3 152  72 Murió (0.52631579 0.47368421)  
##       12) age>=1.5 145  66 Murió (0.54482759 0.45517241) *
##       13) age< 1.5 7   1 Sobrevivió (0.14285714 0.85714286) *
##      7) pclass=1,2 236  16 Sobrevivió (0.06779661 0.93220339) *

Paso 7. Imprimir

Utilizamos el paquete rpart.plot

#install.packages("rpart.plot")
library(rpart.plot)

rpart.plot(arbol)

Paso 8. Eliminar porcentajes

Para una mayor comodidad eliminamos los porcentajes

prp(arbol, extra=7, prefix="fracción\n")

Conclusiones

De esta Base de Datos y de estos gráficos podemos concluir que, en el Titanic, la 1ª clase tuvo enormes beneficios al compararlos con los de la 3ª clase, entre ellos, las probabilidades de sobrevivir, tan solo en los diagramas se expresa que los niños de primera clase de 9.5 años o menos tenían el 100% de probabilidad de salvarse, mientras que los de 3ª clase tenían solo el 38% de probabilidades.

Por otra parte, se puede concluir que, efectivamente, fueron mujeres y niños primero, esto lo podemos comprobar en el diagrama debido a que se puede observar que las mujeres que eran de 3ª clase tuvieron 93% de probabilidades de sobrevivir, esto sin importar que no fueran de primera clase, y que los niños, aun siendo de 3ª clase, tuvieron 38% de probabilidades de sobrevivir, probabilidad mayor a la de los hombres mayores de 9.5 años (18%).