set.seed(290875)
if(require("mlbench")) {
## recursive partitioning of a linear regression model
## load data
data("BostonHousing", package = "mlbench")
## and transform variables appropriately (for a linear regression)
BostonHousing$lstat <- log(BostonHousing$lstat)
BostonHousing$rm <- BostonHousing$rm^2
## as well as partitioning variables (for fluctuation testing)
BostonHousing$chas <- factor(BostonHousing$chas, levels = 0:1,
labels = c("no", "yes"))
BostonHousing$rad <- factor(BostonHousing$rad, ordered = TRUE)
## partition the linear regression model medv ~ lstat + rm
## with respect to all remaining variables:
fm <- mob(medv ~ lstat + rm | zn + indus + chas + nox + age + dis +
rad + tax + crim + b + ptratio,
control = mob_control(minsplit = 40), data = BostonHousing,
model = linearModel)
## visualize medv ~ lstat and medv ~ rm
plot(fm)
## visualize only one of the two regressors
plot(fm, tp_args = list(which = "lstat"), tnex = 2)
plot(fm, tp_args = list(which = 2), tnex = 2)
## omit fitted mean lines
plot(fm, tp_args = list(fitmean = FALSE))
## mixed numerical and categorical regressors
fm2 <- mob(medv ~ lstat + rm + chas | zn + indus + nox + age +
dis + rad,
control = mob_control(minsplit = 100), data = BostonHousing,
model = linearModel)
plot(fm2)
## recursive partitioning of a logistic regression model
data("SynthDiabetes", package = "mlbench")
fmSD <- mob(diabetes ~ glucose | pressure + triceps + insulin + mass + age,
data = SynthDiabetes, model = glinearModel,
family = binomial())
## default plot: spinograms with breaks from five point summary
plot(fmSD)
## user-defined breaks (or: alternatively use breaks from hist() via fivenum = FALSE)
plot(fmSD, tp_args = list(breaks = c(0, 100, 125, 150, 175, 200)))
## CD plots instead of spinograms
plot(fmSD, tp_args = list(cdplot = TRUE))
## different smoothing bandwidth
plot(fmSD, tp_args = list(cdplot = TRUE, bw = 15))
}
Run the code above in your browser using DataLab