Instalar paquetes y llamar librerías

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

Importar la base de datos

library(readr)
titanic <- read_csv("titanic (2).csv")
summary(titanic)
##      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
head(titanic)
## # A tibble: 6 × 14
##   pclass survived name      sex      age sibsp parch ticket  fare cabin embarked
##    <dbl>    <dbl> <chr>     <chr>  <dbl> <dbl> <dbl> <chr>  <dbl> <chr> <chr>   
## 1      1        1 Allen, M… fema… 29         0     0 24160  211.  B5    S       
## 2      1        1 Allison,… male   0.917     1     2 113781 152.  C22 … S       
## 3      1        0 Allison,… fema…  2         1     2 113781 152.  C22 … S       
## 4      1        0 Allison,… male  30         1     2 113781 152.  C22 … S       
## 5      1        0 Allison,… fema… 25         1     2 113781 152.  C22 … S       
## 6      1        1 Anderson… male  48         0     0 19952   26.6 E12   S       
## # ℹ 3 more variables: boat <chr>, body <dbl>, home.dest <chr>
str(titanic)
## spc_tbl_ [1,310 × 14] (S3: spec_tbl_df/tbl_df/tbl/data.frame)
##  $ pclass   : num [1:1310] 1 1 1 1 1 1 1 1 1 1 ...
##  $ survived : num [1:1310] 1 1 0 0 0 1 1 0 1 0 ...
##  $ name     : chr [1:1310] "Allen, Miss. Elisabeth Walton" "Allison, Master. Hudson Trevor" "Allison, Miss. Helen Loraine" "Allison, Mr. Hudson Joshua Creighton" ...
##  $ sex      : chr [1:1310] "female" "male" "female" "male" ...
##  $ age      : num [1:1310] 29 0.917 2 30 25 ...
##  $ sibsp    : num [1:1310] 0 1 1 1 1 0 1 0 2 0 ...
##  $ parch    : num [1:1310] 0 2 2 2 2 0 0 0 0 0 ...
##  $ ticket   : chr [1:1310] "24160" "113781" "113781" "113781" ...
##  $ fare     : num [1:1310] 211 152 152 152 152 ...
##  $ cabin    : chr [1:1310] "B5" "C22 C26" "C22 C26" "C22 C26" ...
##  $ embarked : chr [1:1310] "S" "S" "S" "S" ...
##  $ boat     : chr [1:1310] "2" "11" NA NA ...
##  $ body     : num [1:1310] NA NA NA 135 NA NA NA NA NA 22 ...
##  $ home.dest: chr [1:1310] "St Louis, MO" "Montreal, PQ / Chesterville, ON" "Montreal, PQ / Chesterville, ON" "Montreal, PQ / Chesterville, ON" ...
##  - attr(*, "spec")=
##   .. cols(
##   ..   pclass = col_double(),
##   ..   survived = col_double(),
##   ..   name = col_character(),
##   ..   sex = col_character(),
##   ..   age = col_double(),
##   ..   sibsp = col_double(),
##   ..   parch = col_double(),
##   ..   ticket = col_character(),
##   ..   fare = col_double(),
##   ..   cabin = col_character(),
##   ..   embarked = col_character(),
##   ..   boat = col_character(),
##   ..   body = col_double(),
##   ..   home.dest = col_character()
##   .. )
##  - attr(*, "problems")=<externalptr>

Crear árboles de decisión

titanic <-  titanic[,c("pclass","age","sex", "survived")]
titanic$survived <- as.factor(titanic$survived)
titanic$pclass <- as.factor(titanic$pclass)
titanic$sex <-  as.factor(titanic$sex)
str(titanic)
## tibble [1,310 × 4] (S3: tbl_df/tbl/data.frame)
##  $ pclass  : Factor w/ 3 levels "1","2","3": 1 1 1 1 1 1 1 1 1 1 ...
##  $ age     : num [1:1310] 29 0.917 2 30 25 ...
##  $ sex     : Factor w/ 2 levels "female","male": 1 2 1 2 1 2 1 2 1 2 ...
##  $ survived: Factor w/ 2 levels "0","1": 2 2 1 1 1 2 2 1 2 1 ...
arbol_titanic <-  rpart(survived~., data= titanic)
rpart.plot(arbol_titanic)

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

Conclusiones

En conclusión, las más altas probablidades de sobrevivir en el naufragio del titanic son:

  • 100%: si eres niño varón menor de 9.5 años de primera o segunda clase.
  • 73%: si eres mujer.

Y por el contrario, las más bajas probabilidades desobrevivir son:

  • 17%: si eres hombre mayor a 9.5 años.
  • 38%: si eres niño varón menor de 9.5 años de tercera clase.
LS0tDQp0aXRsZTogIkFyYm9sIGRlIGRlY2lzacOzbiAtIFRpdGFuaWMiDQphdXRob3I6ICJEaWVnbyBRdWV2ZWRvIFNhcmFiaWEiDQpkYXRlOiAiMjAyNi0wMi0xNyINCm91dHB1dDogDQogIGh0bWxfZG9jdW1lbnQ6DQogICAgdG9jOiBUUlVFDQogICAgdG9jX2Zsb2F0OiBUUlVFDQogICAgY29kZV9kb3dubG9hZDogVFJVRQ0KICAgIHRoZW1lOiBjb3Ntbw0KLS0tDQo8Y2VudGVyPg0KIVtdKGh0dHBzOi8vY29udGVudC1oaXN0b3JpYS5uYXRpb25hbGdlb2dyYXBoaWMuY29tLmVzL21lZGlvLzIwMjMvMDYvMjAvdGhlLXN0ZWFtc2hpcC10aXRhbmljLXJtZy1iaGMzNjY3XzAwMDAwMDAwXzliNWJkMTE3XzIzMDYyMDA4NDMzNV8xMjgweDc3NS5qcGcpDQo8L2NlbnRlcj4NCg0KDQojIDxzcGFuIHN0eWxlID0gImNvbG9yOmJsdWUiPiBJbnN0YWxhciBwYXF1ZXRlcyB5IGxsYW1hciBsaWJyZXLDrWFzIDwvc3Bhbj4NCg0KYGBge3IgbWVzc2FnZT1GQUxTRSwgd2FybmluZz1GQUxTRX0NCiNpbnN0YWxsLnBhY2thZ2VzKCJycGFydCIpDQpsaWJyYXJ5KHJwYXJ0KQ0KI2luc3RhbGwucGFja2FnZXMoInJwYXJ0LnBsb3QiKQ0KbGlicmFyeShycGFydC5wbG90KQ0KYGBgDQoNCg0KIyA8c3BhbiBzdHlsZSA9ICJjb2xvcjpibHVlIj4gSW1wb3J0YXIgbGEgYmFzZSBkZSBkYXRvcyA8L3NwYW4+DQoNCg0KYGBge3IgbWVzc2FnZT1GQUxTRSwgd2FybmluZz1GQUxTRX0NCmxpYnJhcnkocmVhZHIpDQp0aXRhbmljIDwtIHJlYWRfY3N2KCJ0aXRhbmljICgyKS5jc3YiKQ0KYGBgDQoNCmBgYHtyfQ0Kc3VtbWFyeSh0aXRhbmljKQ0KaGVhZCh0aXRhbmljKQ0Kc3RyKHRpdGFuaWMpDQpgYGANCg0KIyA8c3BhbiBzdHlsZSA9ICJjb2xvcjpibHVlIj4gQ3JlYXIgw6FyYm9sZXMgZGUgZGVjaXNpw7NuIDwvc3Bhbj4NCg0KYGBge3J9DQp0aXRhbmljIDwtICB0aXRhbmljWyxjKCJwY2xhc3MiLCJhZ2UiLCJzZXgiLCAic3Vydml2ZWQiKV0NCnRpdGFuaWMkc3Vydml2ZWQgPC0gYXMuZmFjdG9yKHRpdGFuaWMkc3Vydml2ZWQpDQp0aXRhbmljJHBjbGFzcyA8LSBhcy5mYWN0b3IodGl0YW5pYyRwY2xhc3MpDQp0aXRhbmljJHNleCA8LSAgYXMuZmFjdG9yKHRpdGFuaWMkc2V4KQ0Kc3RyKHRpdGFuaWMpDQphcmJvbF90aXRhbmljIDwtICBycGFydChzdXJ2aXZlZH4uLCBkYXRhPSB0aXRhbmljKQ0KcnBhcnQucGxvdChhcmJvbF90aXRhbmljKQ0KcHJwKGFyYm9sX3RpdGFuaWMsIGV4dHJhPTcsIHByZWZpeD0gImZyYWNjacOzblxuIikNCmBgYA0KDQojIDxzcGFuIHN0eWxlID0gImNvbG9yOmJsdWUiPiBDb25jbHVzaW9uZXMgPC9zcGFuPg0KDQpFbiBjb25jbHVzacOzbiwgbGFzIG3DoXMgYWx0YXMgcHJvYmFibGlkYWRlcyBkZSBzb2JyZXZpdmlyIGVuIGVsIG5hdWZyYWdpbyBkZWwgdGl0YW5pYyBzb246ICANCg0KKiAxMDAlOiBzaSBlcmVzIG5pw7FvICB2YXLDs24gbWVub3IgZGUgOS41IGHDsW9zICBkZSBwcmltZXJhIG8gc2VndW5kYSBjbGFzZS4NCiogNzMlOiBzaSBlcmVzIG11amVyLg0KDQpZIHBvciBlbCBjb250cmFyaW8sIGxhcyBtw6FzIGJhamFzIHByb2JhYmlsaWRhZGVzIGRlc29icmV2aXZpciBzb246DQoNCiogMTclOiBzaSBlcmVzIGhvbWJyZSBtYXlvciBhIDkuNSBhw7Fvcy4NCiogMzglOiBzaSBlcmVzIG5pw7FvIHZhcsOzbiBtZW5vciBkZSA5LjUgYcOxb3MgZGUgdGVyY2VyYSBjbGFzZS4NCg0KDQo=