Librerias

library(stats)
library(dplyr)
## Warning: package 'dplyr' was built under R version 4.2.1
## 
## Attaching package: 'dplyr'
## The following objects are masked from 'package:stats':
## 
##     filter, lag
## The following objects are masked from 'package:base':
## 
##     intersect, setdiff, setequal, union
library(rpart)
## Warning: package 'rpart' was built under R version 4.2.1
library(rpart.plot)
## Warning: package 'rpart.plot' was built under R version 4.2.1

Importación de base de datos

df <- read.csv("C:\\Users\\aldof\\Documents\\1 Tec\\Semana Tec 1 - Bootcamp de Programación\\Tercera Clase\\titanic.csv")

Filtro

Se filtrará la base de datos para que únicamente se cuenten las columnas que se necesitan para el análisis que en este caso será conocer la probabilidad de haber sobrevivido al titanic siendo hombre.

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

Conversión

Se convertirá el tipo de variables a “factor”, para que si en la columna “sobrevivió” el valor es 0, se cambie a “Murió” o si es otro valor a “sobrevivió”, esto para que sea más fácil verlo de forma gráfica.

titanic$survived <- as.factor(ifelse(titanic$survived==0, "Murió", "Sobrevivió"))
titanic$pclass <- as.factor(titanic$pclass)
titanic$sex <- as.factor(titanic$sex)

También se eliminan los NA’s para evitar sesgos en la información

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

Árbol de decisión

Por último se crea el árbol de decisión para conocer la probabilidad.

tree <- rpart(formula =survived ~ ., data=titanic)
tree
## 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) *
rpart.plot(tree)

Conclusión

Implementando el árbol de decisiones nos podemos dar cuenta de diversos escenarios de una situación, en este caso el Titanic, y nos ayuda a tomar decisiones basados en ellos. Por ejemplo, si nos vamos a subir a un Titanic igual que el que se hundió y somos hombres, vemos la probabilidad de sobrevivir siendo mayores de 9.4 años y observamos que es de 18%, no tiene mucho sentido que nos subamos si sabemos que nos moriremos con un 82% de certeza.