## Basic usage
shs <- read.delim("../../data/shs.txt")
## rpart
require(rpart)
require(partykit)
fit0 <- rpart(Cotinine~.,data=shs)
plotcp(fit0)
alpha <- fit0$cptable[which.min(fit0$cptable[,"xerror"]),"CP"]
fit <- prune(fit0,alpha)
plot(fit)
text(fit)
plot(as.party(fit))
## party
require(party)
fit <- ctree(Cotinine~.,data=shs)
plot(fit)

## Slide 4
par(bty="n")
plot(c(0,10),c(0,10),type="n",xaxt="n",yaxt="n",xlab=expression(x[1]),ylab=expression(x[2]))
polygon(c(0,10,10,0),c(0,0,10,10),col="white")
segments(x0=7,x1=7,y0=0,y1=10)
segments(x0=0,x1=7,y0=3,y1=3)
segments(x0=2,x1=2,y0=3,y1=10)
segments(x0=5,x1=5,y0=3,y1=10)

## Slide 7
x1 <- 10*runif(1000)
x2 <- 10*runif(1000)
y <- character(1000)
y[(x1 < 2) & (x2 > 3)] <- "R1"
y[(x1 > 2) & (x1 < 5) & (x2 > 3)] <- "R2"
y[(x1 > 5) & (x1 < 7) & (x2 > 3)] <- "R3"
y[(x1 < 7) & (x2 < 3)] <- "R4"
y[(x1 > 7)] <- "R5"
fit <- rpart(y~x1+x2,maxdepth=4)
plot(fit)
fit$splits[,"index"] <- round(fit$splits[,"index"])
text(fit,digits=1)

## Slide 9
data("WeatherPlay", package = "partykit")
pn <- partynode(1L,
                split = partysplit(1L, index = 1:3),
                kids = list(
                  partynode(2L,
                            split = partysplit(3L, breaks = 75),
                            kids = list(
                              partynode(3L, info = "yes"),
                              partynode(4L, info = "no"))),
                  partynode(5L, info = "yes"),
                  partynode(6L,
                            split = partysplit(4L, index = 1:2),
                            kids = list(
                              partynode(7L, info = "yes"),
                              partynode(8L, info = "no")))))
py <- party(pn, WeatherPlay)
plot(py,ip_args=list(id=FALSE),tp_args=list(id=FALSE))

## Slide 25
fit0 <- rpart(Cotinine~.,data=shs)
fit0$cptable
plot(fit0$cptable[,"CP"],fit0$cptable[,"xerror"],xlab=expression(alpha),ylab="CV Error (10-fold)",type="o",xlim=rev(range(fit0$cptable[,"CP"])),pch=19,log="x")

## Slide 26
fit0 <- rpart(Cotinine~.,data=shs)
fit <- prune(fit0,fit0$cptable[which.min(fit0$cptable[,"xerror"]),"CP"])
plot(as.party(fit0),ip_args=list(id=FALSE),tp_args=list(id=FALSE))
plot(as.party(fit),ip_args=list(id=FALSE),tp_args=list(id=FALSE))

## Slide 29
fit <- ctree(Cotinine~.,data=shs)
plot(fit,ip_args=list(id=FALSE),tp_args=list(id=FALSE))
