# Load required packages
library(ggplot2)
library(grid)
library(pdp)

# Test function
boston_test <- function(object, ...) {
  trn <- subset(boston, select = -cmedv)
  pd1 <- partial(object, pred.var = "lstat", train = trn, ...)
  pd2 <- partial(object, pred.var = c("lstat", "rm"), chull = TRUE,
                 train = trn, ...)
  pd3 <- partial(object, pred.var = "rm", ice = TRUE, train = trn, ...)
  pd4 <- partial(object, pred.var = "rm", ice = TRUE, center = TRUE,
                 train = trn, ...)
  grid.arrange(
    autoplot(pd1, rug = TRUE, train = trn, main = "PDP for lstat"),
    autoplot(pd2, main = "PDP for lstat and rm"),
    autoplot(pd3, main = "ICE curves for rm", alpha = 0.1),
    autoplot(pd4, main = "c-ICE curves for rm", alpha = 0.1),
    ncol = 2, top = textGrob(deparse(substitute(object)),
                             gp = gpar(fontsize = 20, font = 3))
  )
}

Cubist

Package: Cubist

boston_cubist <- Cubist::cubist(x = subset(boston, select = -cmedv),
                                y = boston$cmedv, committees = 100)
boston_test(boston_cubist)

Decision trees

Package: rpart

boston_rpart <- rpart::rpart(cmedv ~ ., data = boston)
boston_test(boston_rpart)

Package: party

boston_ctree <- party::ctree(cmedv ~ ., data = boston)
boston_test(boston_ctree)

Package: partykit

boston_ctree2 <- partykit::ctree(cmedv ~ ., data = boston)
boston_test(boston_ctree2)

Bagging

Package: ipred

set.seed(101)
boston_ipred <- ipred::bagging(cmedv ~ ., data = boston, nbagg = 500)
boston_test(boston_ipred)

Random forests

Package: randomForest

set.seed(101)
boston_rf <- randomForest::randomForest(cmedv ~ ., data = boston)
boston_test(boston_rf)

Package: party

set.seed(101)
boston_crf <- party::cforest(cmedv ~ ., data = boston)
boston_test(boston_crf, quantiles = TRUE)

Package: ranger

set.seed(101)
boston_ranger <- ranger::ranger(cmedv ~ ., data = boston)
boston_test(boston_ranger)

Boosting

Package: gbm

set.seed(101)
boston_gbm <- gbm::gbm(cmedv ~ ., data = boston, distribution = "gaussian",
                       n.trees = 5000, interaction.depth = 3, shrinkage = 0.001,
                       cv.folds = 5)
best.iter <- gbm::gbm.perf(boston_gbm, method = "OOB", plot.it = FALSE)
boston_test(boston_gbm, n.trees = best.iter)

Package: xgboost

set.seed(101)
boston_xgb <- xgboost::xgboost(
  data = data.matrix(subset(boston, select = -cmedv)), label = boston$cmedv,
  objective = "reg:linear", nrounds = 5000, max_depth = 3, eta = 0.001,
  colsample_bytree = 0.8, subsample = 0.5,
  save_period = NULL, verbose = 0
)
boston_test(boston_xgb)

Neural networks

Package: nnet

set.seed(101)
boston_nnet <- nnet::nnet(cmedv ~ ., data = boston, size = 6, decay = 0.1,
                          linout = TRUE, trace = FALSE)
boston_test(boston_nnet)

Support vector machines

Package: e1071

boston_svm <- e1071::svm(cmedv ~ ., data = boston, type = "eps-regression")
boston_test(boston_svm)

Package: kernlab

boston_ksvm <- kernlab::ksvm(cmedv ~ ., data = boston, type= "eps-svr")
boston_test(boston_ksvm)

Linear/generalized linear models

Package: stats

boston_lm <- lm(cmedv ~ . ^ 2, data = boston)
boston_test(boston_lm)
boston_glm <- glm(cmedv ~ . ^ 2, data = boston)
boston_test(boston_glm)

Multivariate adaptive regression splines

Package: earth

boston_earth <- earth::earth(cmedv ~ ., degree = 3, data = boston)
boston_test(boston_earth)

Package: mda

boston_mars <- mda::mars(x = subset(boston, select = - cmedv), 
                         y = boston$cmedv, degree = 3)
boston_test(boston_mars)


bgreenwell/pdp documentation built on June 2, 2022, 2:55 p.m.