#Derek Yuniwoh
# 1 & 2
library(readr)
## Warning: package 'readr' was built under R version 4.3.2
titanic3 <- read_csv("https://goo.gl/At238b")
## Rows: 1309 Columns: 14
## ── Column specification ────────────────────────────────────────────────────────
## Delimiter: ","
## chr (8): pclass, name, sex, ticket, cabin, embarked, boat, home.dest
## dbl (6): survived, age, sibsp, parch, fare, body
##
## ℹ Use `spec()` to retrieve the full column specification for this data.
## ℹ Specify the column types or set `show_col_types = FALSE` to quiet this message.
View(titanic3)
#3 build a new dataset, titanic, by selecting these features:
titanicnewset <- titanic3[, c("survived", "embarked", "sex","age", "sibsp", "parch", "fare")]
#4 perform a statistic analysis of the titanic dataset
summary(titanicnewset)
## survived embarked sex age
## Min. :0.000 Length:1309 Length:1309 Min. : 0.17
## 1st Qu.:0.000 Class :character Class :character 1st Qu.:21.00
## Median :0.000 Mode :character Mode :character Median :28.00
## Mean :0.382 Mean :29.88
## 3rd Qu.:1.000 3rd Qu.:39.00
## Max. :1.000 Max. :80.00
## NA's :263
## sibsp parch fare
## Min. :0.0000 Min. :0.000 Min. : 0.000
## 1st Qu.:0.0000 1st Qu.:0.000 1st Qu.: 7.896
## Median :0.0000 Median :0.000 Median : 14.454
## Mean :0.4989 Mean :0.385 Mean : 33.295
## 3rd Qu.:1.0000 3rd Qu.:0.000 3rd Qu.: 31.275
## Max. :8.0000 Max. :9.000 Max. :512.329
## NA's :1
#5 survived is the dependent variable, find its proportion in the dataset
prop.table(table(titanicnewset$survived))
##
## 0 1
## 0.618029 0.381971
#6 remove NAs if any
titanicnewset <- na.omit(titanicnewset)
titanicnewset_cor<- titanicnewset[,c("survived","age","sibsp","parch","fare")]
cor(titanicnewset_cor)
## survived age sibsp parch fare
## survived 1.00000000 -0.05741486 -0.01140343 0.1154360 0.2478576
## age -0.05741486 1.00000000 -0.24234489 -0.1493106 0.1772057
## sibsp -0.01140343 -0.24234489 1.00000000 0.3739597 0.1421305
## parch 0.11543601 -0.14931063 0.37395967 1.0000000 0.2176495
## fare 0.24785762 0.17720569 0.14213054 0.2176495 1.0000000
#7
titanicnewset$survived <- factor(titanicnewset$survived)
titanicnewset$embarked <- factor(titanicnewset$embarked)
titanicnewset$sex <- factor(titanicnewset$sex)
#8 find the correlation matrix between survival and the other
cor(titanicnewset_cor)
## survived age sibsp parch fare
## survived 1.00000000 -0.05741486 -0.01140343 0.1154360 0.2478576
## age -0.05741486 1.00000000 -0.24234489 -0.1493106 0.1772057
## sibsp -0.01140343 -0.24234489 1.00000000 0.3739597 0.1421305
## parch 0.11543601 -0.14931063 0.37395967 1.0000000 0.2176495
## fare 0.24785762 0.17720569 0.14213054 0.2176495 1.0000000
#9 plot survival with other features to see if any correlation exists
pairs(titanicnewset_cor)

#10 set a seed to 1000 and use it to split the dataset into 80%
#training 20% testing
set.seed(1000)
train_index <- sample(1:nrow(titanicnewset), 0.8 * nrow(titanicnewset))
#11 build your training (till index 1046) and test (till index 1308) datasets
train <- titanicnewset[train_index, ]
test <- titanicnewset[-train_index, ]
#12 rpart already installed
library(rpart)
#13 ***age NOT FOUND
fit<- rpart(survived ~ sex + age + sibsp + parch +fare + embarked , data = train,
method = "class")
#14 plot your regression tree and save plot into an image file
fit
## n= 834
##
## node), split, n, loss, yval, (yprob)
## * denotes terminal node
##
## 1) root 834 337 0 (0.5959233 0.4040767)
## 2) sex=male 529 110 0 (0.7920605 0.2079395)
## 4) age>=15 481 85 0 (0.8232848 0.1767152) *
## 5) age< 15 48 23 1 (0.4791667 0.5208333)
## 10) sibsp>=2.5 16 0 0 (1.0000000 0.0000000) *
## 11) sibsp< 2.5 32 7 1 (0.2187500 0.7812500) *
## 3) sex=female 305 78 1 (0.2557377 0.7442623) *
#15 rattle, rpart.plot, rcolorbrewer are already DOWNLOADED
#16 type the R command fancyRpartPlot(fit) to obtain a more readable plot
library(rpart.plot)
## Warning: package 'rpart.plot' was built under R version 4.3.3
library(rattle)
## Warning: package 'rattle' was built under R version 4.3.3
## Loading required package: tibble
## Warning: package 'tibble' was built under R version 4.3.2
## Loading required package: bitops
## Rattle: A free graphical interface for data science with R.
## Version 5.5.1 Copyright (c) 2006-2021 Togaware Pty Ltd.
## Type 'rattle()' to shake, rattle, and roll your data.
fancyRpartPlot(fit)

#17 examine the tree obtained. what's the most "important" feature over
#which the tree first split?
#sex
#18 use the predict function with your model fit to make predictions on the test
#dataset and save it in a variable
predicting <- predict(fit,test,type = "class")
#19 save your data frame in a data result that will have two columns
Result <- data.frame(passengersex = test$sex, survivals = predicting)
Result
## passengersex survivals
## 1 male 0
## 2 female 1
## 3 female 1
## 4 female 1
## 5 female 1
## 6 male 0
## 7 male 0
## 8 male 0
## 9 male 0
## 10 female 1
## 11 male 0
## 12 male 0
## 13 female 1
## 14 female 1
## 15 female 1
## 16 male 0
## 17 female 1
## 18 male 0
## 19 female 1
## 20 male 1
## 21 male 0
## 22 male 0
## 23 female 1
## 24 female 1
## 25 male 0
## 26 female 1
## 27 male 0
## 28 female 1
## 29 male 0
## 30 male 0
## 31 male 0
## 32 male 0
## 33 male 0
## 34 female 1
## 35 male 0
## 36 male 0
## 37 male 0
## 38 male 0
## 39 female 1
## 40 female 1
## 41 male 0
## 42 female 1
## 43 male 0
## 44 female 1
## 45 male 0
## 46 male 0
## 47 female 1
## 48 female 1
## 49 male 0
## 50 male 0
## 51 male 0
## 52 male 0
## 53 male 0
## 54 female 1
## 55 female 1
## 56 female 1
## 57 female 1
## 58 male 1
## 59 male 0
## 60 male 0
## 61 female 1
## 62 female 1
## 63 female 1
## 64 female 1
## 65 male 0
## 66 male 0
## 67 female 1
## 68 female 1
## 69 female 1
## 70 female 1
## 71 male 0
## 72 male 0
## 73 male 0
## 74 male 0
## 75 male 0
## 76 male 0
## 77 female 1
## 78 male 0
## 79 male 0
## 80 female 1
## 81 female 1
## 82 female 1
## 83 male 0
## 84 female 1
## 85 female 1
## 86 male 0
## 87 female 1
## 88 male 0
## 89 female 1
## 90 female 1
## 91 female 1
## 92 male 0
## 93 female 1
## 94 male 0
## 95 female 1
## 96 male 0
## 97 male 0
## 98 male 0
## 99 male 0
## 100 female 1
## 101 female 1
## 102 male 0
## 103 male 0
## 104 male 0
## 105 female 1
## 106 female 1
## 107 female 1
## 108 female 1
## 109 female 1
## 110 female 1
## 111 male 0
## 112 male 0
## 113 female 1
## 114 female 1
## 115 male 0
## 116 male 0
## 117 male 0
## 118 male 0
## 119 male 0
## 120 male 0
## 121 female 1
## 122 female 1
## 123 male 0
## 124 female 1
## 125 female 1
## 126 male 0
## 127 female 1
## 128 male 0
## 129 male 0
## 130 female 1
## 131 male 0
## 132 male 0
## 133 male 0
## 134 male 0
## 135 female 1
## 136 male 0
## 137 female 1
## 138 male 0
## 139 male 0
## 140 male 0
## 141 male 1
## 142 male 0
## 143 male 0
## 144 male 0
## 145 male 0
## 146 female 1
## 147 male 0
## 148 male 0
## 149 male 0
## 150 male 0
## 151 female 1
## 152 male 0
## 153 male 0
## 154 male 0
## 155 male 0
## 156 female 1
## 157 male 0
## 158 male 0
## 159 male 0
## 160 male 0
## 161 female 1
## 162 male 0
## 163 female 1
## 164 male 0
## 165 male 0
## 166 male 0
## 167 male 0
## 168 male 0
## 169 female 1
## 170 male 0
## 171 male 0
## 172 female 1
## 173 male 0
## 174 male 0
## 175 female 1
## 176 male 0
## 177 male 0
## 178 male 0
## 179 male 0
## 180 male 0
## 181 male 0
## 182 male 0
## 183 female 1
## 184 male 0
## 185 male 0
## 186 female 1
## 187 male 0
## 188 female 1
## 189 female 1
## 190 male 0
## 191 female 1
## 192 male 0
## 193 male 0
## 194 male 0
## 195 female 1
## 196 male 0
## 197 male 0
## 198 female 1
## 199 male 0
## 200 male 0
## 201 female 1
## 202 male 0
## 203 male 0
## 204 male 0
## 205 female 1
## 206 male 0
## 207 male 0
## 208 male 0
## 209 female 1
#20 save your data frame in a .csv file by using
write.csv(Result, file = "TitanicTree.csv", row.names = FALSE)
#21 submit your R code as link to Rpubs and Titanictree.csv file on
#blackboard by tuesday, april 13th 2024