train<-data.frame(ClaimID=c(1,2,3), RearEnd = c(TRUE, FALSE, TRUE), Fraud = c(TRUE, FALSE, TRUE))
train
##   ClaimID RearEnd Fraud
## 1       1    TRUE  TRUE
## 2       2   FALSE FALSE
## 3       3    TRUE  TRUE
library(rpart)
## Warning: package 'rpart' was built under R version 4.3.3
mytree<- rpart(Fraud~RearEnd, data = train, method = "class")
mytree
## n= 3 
## 
## node), split, n, loss, yval, (yprob)
##       * denotes terminal node
## 
## 1) root 3 1 TRUE (0.3333333 0.6666667) *
mytree<- rpart(Fraud~RearEnd,
               data = train,
               method = "class",
               minsplit = 2,
               minbucket = 1)
mytree
## n= 3 
## 
## node), split, n, loss, yval, (yprob)
##       * denotes terminal node
## 
## 1) root 3 1 TRUE (0.3333333 0.6666667)  
##   2) RearEnd< 0.5 1 0 FALSE (1.0000000 0.0000000) *
##   3) RearEnd>=0.5 2 0 TRUE (0.0000000 1.0000000) *
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.
library(rpart.plot)
## Warning: package 'rpart.plot' was built under R version 4.3.3
library(RColorBrewer)
fancyRpartPlot(mytree, caption = NULL)

mytree<- rpart(Fraud~RearEnd,
               data = train,
               method = "class",
               parms = list(split='information'),
               minsplit = 2,
               minbucket = 1)
mytree
## n= 3 
## 
## node), split, n, loss, yval, (yprob)
##       * denotes terminal node
## 
## 1) root 3 1 TRUE (0.3333333 0.6666667)  
##   2) RearEnd< 0.5 1 0 FALSE (1.0000000 0.0000000) *
##   3) RearEnd>=0.5 2 0 TRUE (0.0000000 1.0000000) *
fancyRpartPlot(mytree, caption = NULL)

train<-data.frame(ClaimID=c(1,2,3), RearEnd = c(TRUE, FALSE, TRUE), Fraud = c(TRUE, FALSE, FALSE))
train
##   ClaimID RearEnd Fraud
## 1       1    TRUE  TRUE
## 2       2   FALSE FALSE
## 3       3    TRUE FALSE
library(rpart)
mytree<- rpart(Fraud~RearEnd, data = train, method = "class")
mytree
## n= 3 
## 
## node), split, n, loss, yval, (yprob)
##       * denotes terminal node
## 
## 1) root 3 1 FALSE (0.6666667 0.3333333) *
mytree<- rpart(Fraud~RearEnd,
               data = train,
               method = "class",
               minsplit = 2,
               minbucket = 1,
               cp=-1)
mytree
## n= 3 
## 
## node), split, n, loss, yval, (yprob)
##       * denotes terminal node
## 
## 1) root 3 1 FALSE (0.6666667 0.3333333)  
##   2) RearEnd< 0.5 1 0 FALSE (1.0000000 0.0000000) *
##   3) RearEnd>=0.5 2 1 FALSE (0.5000000 0.5000000) *
fancyRpartPlot(mytree, caption = NULL)

train<-data.frame(ClaimID=c(1:7),
                  RearEnd = c(TRUE, TRUE, FALSE, FALSE, FALSE, FALSE, FALSE),
                  Whiplash = c(TRUE,TRUE, TRUE, TRUE, TRUE, FALSE, FALSE),
                  Fraud = c(TRUE,TRUE,TRUE,FALSE, FALSE, FALSE, FALSE))
train
##   ClaimID RearEnd Whiplash Fraud
## 1       1    TRUE     TRUE  TRUE
## 2       2    TRUE     TRUE  TRUE
## 3       3   FALSE     TRUE  TRUE
## 4       4   FALSE     TRUE FALSE
## 5       5   FALSE     TRUE FALSE
## 6       6   FALSE    FALSE FALSE
## 7       7   FALSE    FALSE FALSE
mytree<- rpart(Fraud~RearEnd,
               data = train,
               method = "class",
               parms = list(split='information'),
               minsplit = 2,
               minbucket = 1)
mytree
## n= 7 
## 
## node), split, n, loss, yval, (yprob)
##       * denotes terminal node
## 
## 1) root 7 3 FALSE (0.5714286 0.4285714)  
##   2) RearEnd< 0.5 5 1 FALSE (0.8000000 0.2000000) *
##   3) RearEnd>=0.5 2 0 TRUE (0.0000000 1.0000000) *
fancyRpartPlot(mytree, caption = NULL)

lossmatrix<- matrix(c(0,1,2,0), byrow = TRUE, nrow = 2)
lossmatrix
##      [,1] [,2]
## [1,]    0    1
## [2,]    2    0
mytree<- rpart(Fraud~RearEnd + Whiplash,
               data = train,
               method = "class",
               maxdepth = 1,
               minsplit = 2,
               minbucket = 1,
               parms = list(loss = lossmatrix))
mytree
## n= 7 
## 
## node), split, n, loss, yval, (yprob)
##       * denotes terminal node
## 
## 1) root 7 4 TRUE (0.5714286 0.4285714)  
##   2) RearEnd< 0.5 5 2 FALSE (0.8000000 0.2000000) *
##   3) RearEnd>=0.5 2 0 TRUE (0.0000000 1.0000000) *
fancyRpartPlot(mytree, caption = NULL)

train<-data.frame(ClaimID=c(1,2,3,4,5),
                  Activity = factor( x = c("active", "very active", "very active", "inactive", "very inactive"),
                                     levels = c("very inactive", "inactive", "active", "very active")),
                  Fraud = c(FALSE, TRUE, TRUE, FALSE, TRUE))
train
##   ClaimID      Activity Fraud
## 1       1        active FALSE
## 2       2   very active  TRUE
## 3       3   very active  TRUE
## 4       4      inactive FALSE
## 5       5 very inactive  TRUE
mytree<- rpart(Fraud~Activity,
               data = train,
               method = "class",
               minsplit = 2,
               minbucket = 1)
fancyRpartPlot(mytree, caption = NULL)

train<-data.frame(ClaimID=c(1,2,3,4,5),
                  Activity = factor( x = c("active", "very active", "very active", "inactive", "very inactive"),
                                     levels = c("very inactive", "inactive", "active", "very active"), order = TRUE),
                  Fraud = c(FALSE, TRUE, TRUE, FALSE, TRUE))
train
##   ClaimID      Activity Fraud
## 1       1        active FALSE
## 2       2   very active  TRUE
## 3       3   very active  TRUE
## 4       4      inactive FALSE
## 5       5 very inactive  TRUE
mytree<- rpart(Fraud~Activity,
               data = train,
               method = "class",
               minsplit = 2,
               minbucket = 1)
fancyRpartPlot(mytree, caption = NULL)

train<-data.frame(ClaimID=c(1:10),
                  RearEnd = c(TRUE, TRUE, TRUE, FALSE, FALSE, FALSE, FALSE, TRUE, TRUE, FALSE),
                  Whiplash = c(TRUE,TRUE, TRUE, TRUE, TRUE, FALSE, FALSE, FALSE, FALSE, TRUE),
                  Activity = factor( x = c("active", "very active", "very active",
                                           "inactive", "very inactive", "inactive", "very inactive", "inactive",
                                           "active" , "very active"), levels = c("very inactive", "inactive", "active", "very active"),
                                           ordered = TRUE),
                  Fraud = c(FALSE, TRUE, TRUE, FALSE, FALSE, TRUE, TRUE, FALSE, FALSE, TRUE))
train
##    ClaimID RearEnd Whiplash      Activity Fraud
## 1        1    TRUE     TRUE        active FALSE
## 2        2    TRUE     TRUE   very active  TRUE
## 3        3    TRUE     TRUE   very active  TRUE
## 4        4   FALSE     TRUE      inactive FALSE
## 5        5   FALSE     TRUE very inactive FALSE
## 6        6   FALSE    FALSE      inactive  TRUE
## 7        7   FALSE    FALSE very inactive  TRUE
## 8        8    TRUE    FALSE      inactive FALSE
## 9        9    TRUE    FALSE        active FALSE
## 10      10   FALSE     TRUE   very active  TRUE
mytree<- rpart(Fraud~RearEnd + Whiplash + Activity,
               data = train,
               method = "class",
               minsplit = 2,
               minbucket = 1,
               cp=-1)
fancyRpartPlot(mytree, caption = NULL)

names(mytree)
##  [1] "frame"               "where"               "call"               
##  [4] "terms"               "cptable"             "method"             
##  [7] "parms"               "control"             "functions"          
## [10] "numresp"             "splits"              "csplit"             
## [13] "variable.importance" "y"                   "ordered"
mytree$variable.importance
##  Activity  Whiplash   RearEnd 
## 2.7142857 2.0000000 0.8571429
print(mytree)
## n= 10 
## 
## node), split, n, loss, yval, (yprob)
##       * denotes terminal node
## 
##  1) root 10 5 FALSE (0.5000000 0.5000000)  
##    2) Activity=very inactive,inactive,active 7 2 FALSE (0.7142857 0.2857143)  
##      4) RearEnd>=0.5 3 0 FALSE (1.0000000 0.0000000) *
##      5) RearEnd< 0.5 4 2 FALSE (0.5000000 0.5000000)  
##       10) Whiplash>=0.5 2 0 FALSE (1.0000000 0.0000000) *
##       11) Whiplash< 0.5 2 0 TRUE (0.0000000 1.0000000) *
##    3) Activity=very active 3 0 TRUE (0.0000000 1.0000000) *
mytree<-prune(mytree, cp = 0.21)
fancyRpartPlot(mytree)