# Load dataset
data("USArrests")
# View first few rows
head(USArrests)
## Murder Assault UrbanPop Rape
## Alabama 13.2 236 58 21.2
## Alaska 10.0 263 48 44.5
## Arizona 8.1 294 80 31.0
## Arkansas 8.8 190 50 19.5
## California 9.0 276 91 40.6
## Colorado 7.9 204 78 38.7
# Structure of dataset
str(USArrests)
## 'data.frame': 50 obs. of 4 variables:
## $ Murder : num 13.2 10 8.1 8.8 9 7.9 3.3 5.9 15.4 17.4 ...
## $ Assault : int 236 263 294 190 276 204 110 238 335 211 ...
## $ UrbanPop: int 58 48 80 50 91 78 77 72 80 60 ...
## $ Rape : num 21.2 44.5 31 19.5 40.6 38.7 11.1 15.8 31.9 25.8 ...
# Summary statistics
summary(USArrests)
## Murder Assault UrbanPop Rape
## Min. : 0.800 Min. : 45.0 Min. :32.00 Min. : 7.30
## 1st Qu.: 4.075 1st Qu.:109.0 1st Qu.:54.50 1st Qu.:15.07
## Median : 7.250 Median :159.0 Median :66.00 Median :20.10
## Mean : 7.788 Mean :170.8 Mean :65.54 Mean :21.23
## 3rd Qu.:11.250 3rd Qu.:249.0 3rd Qu.:77.75 3rd Qu.:26.18
## Max. :17.400 Max. :337.0 Max. :91.00 Max. :46.00
# Dimensions
dim(USArrests)
## [1] 50 4
# Correlation matrix
cor(USArrests)
## Murder Assault UrbanPop Rape
## Murder 1.00000000 0.8018733 0.06957262 0.5635788
## Assault 0.80187331 1.0000000 0.25887170 0.6652412
## UrbanPop 0.06957262 0.2588717 1.00000000 0.4113412
## Rape 0.56357883 0.6652412 0.41134124 1.0000000
# Histograms
hist(USArrests$Murder, main="Histogram of Murder Rates", xlab="Murder")
hist(USArrests$Assault, main="Histogram of Assault Rates", xlab="Assault")
# Boxplot
boxplot(USArrests$UrbanPop, main="Boxplot of Urban Population")
# Scatterplot Matrix
pairs(USArrests, main="Scatterplot Matrix")
# Splitting the data into train and test
set.seed(1234)
ind <- sample(2, nrow(USArrests), replace=TRUE, prob=c(0.7,0.3))
trainData <- USArrests[ind==1,]
testData <- USArrests[ind==2,]
# Decision Tree
library(party)
## Loading required package: grid
## Loading required package: mvtnorm
## Loading required package: modeltools
## Loading required package: stats4
## Loading required package: strucchange
## Loading required package: zoo
##
## Attaching package: 'zoo'
## The following objects are masked from 'package:base':
##
## as.Date, as.Date.numeric
## Loading required package: sandwich
myFormula <- Murder ~ Assault + UrbanPop + Rape
crime_ctree <- ctree(myFormula, data=trainData)
# Plot Decision Tree
plot(crime_ctree)
# Predictions
table(predict(crime_ctree), trainData$Murder > median(trainData$Murder))
##
## FALSE TRUE
## 3.17 10 0
## 5.6 9 2
## 11.7052631578947 1 18
This project explored, visualized, and applied a decision tree model on the USArrests dataset.