--- a +++ b/partyMod/tests/Examples/party-Ex.Rout.save @@ -0,0 +1,986 @@ + +R version 3.1.0 (2014-04-10) -- "Spring Dance" +Copyright (C) 2014 The R Foundation for Statistical Computing +Platform: x86_64-unknown-linux-gnu (64-bit) + +R is free software and comes with ABSOLUTELY NO WARRANTY. +You are welcome to redistribute it under certain conditions. +Type 'license()' or 'licence()' for distribution details. + + Natural language support but running in an English locale + +R is a collaborative project with many contributors. +Type 'contributors()' for more information and +'citation()' on how to cite R or R packages in publications. + +Type 'demo()' for some demos, 'help()' for on-line help, or +'help.start()' for an HTML browser interface to help. +Type 'q()' to quit R. + +> pkgname <- "party" +> source(file.path(R.home("share"), "R", "examples-header.R")) +> options(warn = 1) +> library('party') +Loading required package: grid +Loading required package: zoo + +Attaching package: ‘zoo’ + +The following objects are masked from ‘package:base’: + + as.Date, as.Date.numeric + +Loading required package: sandwich +Loading required package: strucchange +Loading required package: modeltools +Loading required package: stats4 +> +> base::assign(".oldSearch", base::search(), pos = 'CheckExEnv') +> cleanEx() +> nameEx("BinaryTree-class") +> ### * BinaryTree-class +> +> flush(stderr()); flush(stdout()) +> +> ### Name: BinaryTree Class +> ### Title: Class "BinaryTree" +> ### Aliases: BinaryTree-class weights weights-methods +> ### weights,BinaryTree-method show,BinaryTree-method where where-methods +> ### where,BinaryTree-method response response-methods +> ### response,BinaryTree-method nodes nodes-methods +> ### nodes,BinaryTree,integer-method nodes,BinaryTree,numeric-method +> ### treeresponse treeresponse-methods treeresponse,BinaryTree-method +> ### Keywords: classes +> +> ### ** Examples +> +> +> set.seed(290875) +> +> airq <- subset(airquality, !is.na(Ozone)) +> airct <- ctree(Ozone ~ ., data = airq, ++ controls = ctree_control(maxsurrogate = 3)) +> +> ### distribution of responses in the terminal nodes +> plot(airq$Ozone ~ as.factor(where(airct))) +> +> ### get all terminal nodes from the tree +> nodes(airct, unique(where(airct))) +[[1]] +5)* weights = 48 + +[[2]] +3)* weights = 10 + +[[3]] +6)* weights = 21 + +[[4]] +9)* weights = 7 + +[[5]] +8)* weights = 30 + +> +> ### extract weights and compute predictions +> pmean <- sapply(weights(airct), function(w) weighted.mean(airq$Ozone, w)) +> +> ### the same as +> drop(Predict(airct)) + [1] 18.47917 18.47917 18.47917 18.47917 18.47917 18.47917 18.47917 18.47917 + [9] 55.60000 18.47917 18.47917 18.47917 18.47917 18.47917 18.47917 18.47917 + [17] 18.47917 18.47917 18.47917 18.47917 18.47917 18.47917 18.47917 31.14286 + [25] 55.60000 18.47917 31.14286 48.71429 48.71429 31.14286 18.47917 18.47917 + [33] 18.47917 18.47917 18.47917 81.63333 81.63333 31.14286 81.63333 48.71429 + [41] 81.63333 81.63333 81.63333 81.63333 18.47917 31.14286 31.14286 55.60000 + [49] 31.14286 81.63333 81.63333 48.71429 55.60000 81.63333 81.63333 31.14286 + [57] 48.71429 81.63333 81.63333 81.63333 31.14286 55.60000 31.14286 31.14286 + [65] 81.63333 81.63333 81.63333 81.63333 81.63333 81.63333 48.71429 31.14286 + [73] 31.14286 18.47917 55.60000 18.47917 31.14286 31.14286 18.47917 18.47917 + [81] 31.14286 55.60000 81.63333 81.63333 81.63333 81.63333 81.63333 81.63333 + [89] 81.63333 81.63333 81.63333 81.63333 48.71429 31.14286 31.14286 18.47917 + [97] 18.47917 31.14286 18.47917 55.60000 18.47917 18.47917 55.60000 18.47917 +[105] 18.47917 18.47917 31.14286 18.47917 18.47917 31.14286 18.47917 18.47917 +[113] 55.60000 18.47917 18.47917 18.47917 +> +> ### or +> unlist(treeresponse(airct)) + [1] 18.47917 18.47917 18.47917 18.47917 18.47917 18.47917 18.47917 18.47917 + [9] 55.60000 18.47917 18.47917 18.47917 18.47917 18.47917 18.47917 18.47917 + [17] 18.47917 18.47917 18.47917 18.47917 18.47917 18.47917 18.47917 31.14286 + [25] 55.60000 18.47917 31.14286 48.71429 48.71429 31.14286 18.47917 18.47917 + [33] 18.47917 18.47917 18.47917 81.63333 81.63333 31.14286 81.63333 48.71429 + [41] 81.63333 81.63333 81.63333 81.63333 18.47917 31.14286 31.14286 55.60000 + [49] 31.14286 81.63333 81.63333 48.71429 55.60000 81.63333 81.63333 31.14286 + [57] 48.71429 81.63333 81.63333 81.63333 31.14286 55.60000 31.14286 31.14286 + [65] 81.63333 81.63333 81.63333 81.63333 81.63333 81.63333 48.71429 31.14286 + [73] 31.14286 18.47917 55.60000 18.47917 31.14286 31.14286 18.47917 18.47917 + [81] 31.14286 55.60000 81.63333 81.63333 81.63333 81.63333 81.63333 81.63333 + [89] 81.63333 81.63333 81.63333 81.63333 48.71429 31.14286 31.14286 18.47917 + [97] 18.47917 31.14286 18.47917 55.60000 18.47917 18.47917 55.60000 18.47917 +[105] 18.47917 18.47917 31.14286 18.47917 18.47917 31.14286 18.47917 18.47917 +[113] 55.60000 18.47917 18.47917 18.47917 +> +> ### don't use the mean but the median as prediction in each terminal node +> pmedian <- sapply(weights(airct), function(w) ++ median(airq$Ozone[rep(1:nrow(airq), w)])) +> +> plot(airq$Ozone, pmean, col = "red") +> points(airq$Ozone, pmedian, col = "blue") +> +> +> +> cleanEx() +> nameEx("RandomForest-class") +> ### * RandomForest-class +> +> flush(stderr()); flush(stdout()) +> +> ### Name: RandomForest-class +> ### Title: Class "RandomForest" +> ### Aliases: RandomForest-class treeresponse,RandomForest-method +> ### weights,RandomForest-method where,RandomForest-method +> ### show,RandomForest-method +> ### Keywords: classes +> +> ### ** Examples +> +> +> set.seed(290875) +> +> ### honest (i.e., out-of-bag) cross-classification of +> ### true vs. predicted classes +> data("mammoexp", package = "TH.data") +> table(mammoexp$ME, predict(cforest(ME ~ ., data = mammoexp, ++ control = cforest_unbiased(ntree = 50)), ++ OOB = TRUE)) + + Never Within a Year Over a Year + Never 193 28 13 + Within a Year 60 43 1 + Over a Year 56 18 0 +> +> +> +> cleanEx() +> nameEx("Transformations") +> ### * Transformations +> +> flush(stderr()); flush(stdout()) +> +> ### Name: Transformations +> ### Title: Function for Data Transformations +> ### Aliases: ptrafo ff_trafo +> ### Keywords: manip +> +> ### ** Examples +> +> +> ### rank a variable +> ptrafo(data.frame(y = 1:20), ++ numeric_trafo = function(x) rank(x, na.last = "keep")) + + [1,] 1 + [2,] 2 + [3,] 3 + [4,] 4 + [5,] 5 + [6,] 6 + [7,] 7 + [8,] 8 + [9,] 9 +[10,] 10 +[11,] 11 +[12,] 12 +[13,] 13 +[14,] 14 +[15,] 15 +[16,] 16 +[17,] 17 +[18,] 18 +[19,] 19 +[20,] 20 +attr(,"assign") +[1] 1 +> +> ### dummy coding of a factor +> ptrafo(data.frame(y = gl(3, 9))) + 1 2 3 +1 1 0 0 +2 1 0 0 +3 1 0 0 +4 1 0 0 +5 1 0 0 +6 1 0 0 +7 1 0 0 +8 1 0 0 +9 1 0 0 +10 0 1 0 +11 0 1 0 +12 0 1 0 +13 0 1 0 +14 0 1 0 +15 0 1 0 +16 0 1 0 +17 0 1 0 +18 0 1 0 +19 0 0 1 +20 0 0 1 +21 0 0 1 +22 0 0 1 +23 0 0 1 +24 0 0 1 +25 0 0 1 +26 0 0 1 +27 0 0 1 +attr(,"assign") +[1] 1 1 1 +> +> +> +> +> cleanEx() +> nameEx("cforest") +> ### * cforest +> +> flush(stderr()); flush(stdout()) +> +> ### Name: cforest +> ### Title: Random Forest +> ### Aliases: cforest proximity +> ### Keywords: tree +> +> ### ** Examples +> +> +> set.seed(290875) +> +> ### honest (i.e., out-of-bag) cross-classification of +> ### true vs. predicted classes +> data("mammoexp", package = "TH.data") +> table(mammoexp$ME, predict(cforest(ME ~ ., data = mammoexp, ++ control = cforest_unbiased(ntree = 50)), ++ OOB = TRUE)) + + Never Within a Year Over a Year + Never 193 28 13 + Within a Year 60 43 1 + Over a Year 56 18 0 +> +> ### fit forest to censored response +> if (require("TH.data") && require("survival")) { ++ ++ data("GBSG2", package = "TH.data") ++ bst <- cforest(Surv(time, cens) ~ ., data = GBSG2, ++ control = cforest_unbiased(ntree = 50)) ++ ++ ### estimate conditional Kaplan-Meier curves ++ treeresponse(bst, newdata = GBSG2[1:2,], OOB = TRUE) ++ ++ ### if you can't resist to look at individual trees ... ++ party:::prettytree(bst@ensemble[[1]], names(bst@data@get("input"))) ++ } +Loading required package: TH.data +Loading required package: survival +Loading required package: splines +1) pnodes <= 3; criterion = 1, statistic = 37.638 + 2) horTh == {}; criterion = 0.986, statistic = 6.053 + 3) menostat == {}; criterion = 0.895, statistic = 2.635 + 4) tgrade <= 1; criterion = 0.58, statistic = 0.65 + 5)* weights = 0 + 4) tgrade > 1 + 6) progrec <= 206; criterion = 0.874, statistic = 2.337 + 7) pnodes <= 1; criterion = 0.494, statistic = 0.442 + 8) estrec <= 5; criterion = 0.579, statistic = 0.647 + 9)* weights = 0 + 8) estrec > 5 + 10) progrec <= 16; criterion = 0.688, statistic = 1.02 + 11)* weights = 0 + 10) progrec > 16 + 12)* weights = 0 + 7) pnodes > 1 + 13) pnodes <= 2; criterion = 0.324, statistic = 0.246 + 14)* weights = 0 + 13) pnodes > 2 + 15)* weights = 0 + 6) progrec > 206 + 16)* weights = 0 + 3) menostat == {} + 17) tsize <= 19; criterion = 0.541, statistic = 0.548 + 18) age <= 45; criterion = 0.979, statistic = 5.301 + 19)* weights = 0 + 18) age > 45 + 20)* weights = 0 + 17) tsize > 19 + 21) age <= 37; criterion = 0.943, statistic = 3.631 + 22)* weights = 0 + 21) age > 37 + 23) pnodes <= 2; criterion = 0.951, statistic = 3.866 + 24) age <= 49; criterion = 0.913, statistic = 2.922 + 25) tsize <= 23; criterion = 0.606, statistic = 0.728 + 26)* weights = 0 + 25) tsize > 23 + 27)* weights = 0 + 24) age > 49 + 28)* weights = 0 + 23) pnodes > 2 + 29)* weights = 0 + 2) horTh == {} + 30) progrec <= 74; criterion = 0.895, statistic = 2.634 + 31) pnodes <= 2; criterion = 0.989, statistic = 6.497 + 32) tsize <= 28; criterion = 0.769, statistic = 2.556 + 33)* weights = 0 + 32) tsize > 28 + 34)* weights = 0 + 31) pnodes > 2 + 35)* weights = 0 + 30) progrec > 74 + 36) pnodes <= 1; criterion = 0.853, statistic = 2.099 + 37) estrec <= 109; criterion = 0.482, statistic = 0.417 + 38)* weights = 0 + 37) estrec > 109 + 39)* weights = 0 + 36) pnodes > 1 + 40)* weights = 0 +1) pnodes > 3 + 41) horTh == {}; criterion = 0.981, statistic = 5.458 + 42) estrec <= 79; criterion = 0.997, statistic = 8.922 + 43) progrec <= 132; criterion = 0.981, statistic = 5.529 + 44) menostat == {}; criterion = 0.772, statistic = 1.452 + 45) progrec <= 20; criterion = 0.502, statistic = 0.46 + 46) estrec <= 1; criterion = 0.466, statistic = 0.386 + 47)* weights = 0 + 46) estrec > 1 + 48)* weights = 0 + 45) progrec > 20 + 49)* weights = 0 + 44) menostat == {} + 50) age <= 60; criterion = 0.953, statistic = 3.945 + 51)* weights = 0 + 50) age > 60 + 52)* weights = 0 + 43) progrec > 132 + 53)* weights = 0 + 42) estrec > 79 + 54) tsize <= 21; criterion = 0.641, statistic = 1.879 + 55)* weights = 0 + 54) tsize > 21 + 56)* weights = 0 + 41) horTh == {} + 57) tgrade <= 2; criterion = 0.97, statistic = 4.689 + 58) age <= 53; criterion = 0.96, statistic = 4.238 + 59) tsize <= 37; criterion = 0.827, statistic = 1.856 + 60)* weights = 0 + 59) tsize > 37 + 61)* weights = 0 + 58) age > 53 + 62) progrec <= 113; criterion = 0.78, statistic = 1.506 + 63) tsize <= 30; criterion = 0.809, statistic = 1.713 + 64)* weights = 0 + 63) tsize > 30 + 65)* weights = 0 + 62) progrec > 113 + 66)* weights = 0 + 57) tgrade > 2 + 67) progrec <= 10; criterion = 0.974, statistic = 4.963 + 68)* weights = 0 + 67) progrec > 10 + 69)* weights = 0 +> +> ### proximity, see ?randomForest +> iris.cf <- cforest(Species ~ ., data = iris, ++ control = cforest_unbiased(mtry = 2)) +> iris.mds <- cmdscale(1 - proximity(iris.cf), eig = TRUE) +> op <- par(pty="s") +> pairs(cbind(iris[,1:4], iris.mds$points), cex = 0.6, gap = 0, ++ col = c("red", "green", "blue")[as.numeric(iris$Species)], ++ main = "Iris Data: Predictors and MDS of Proximity Based on cforest") +> par(op) +> +> +> +> +> graphics::par(get("par.postscript", pos = 'CheckExEnv')) +> cleanEx() + +detaching ‘package:survival’, ‘package:splines’, ‘package:TH.data’ + +> nameEx("ctree") +> ### * ctree +> +> flush(stderr()); flush(stdout()) +> +> ### Name: Conditional Inference Trees +> ### Title: Conditional Inference Trees +> ### Aliases: ctree conditionalTree +> ### Keywords: tree +> +> ### ** Examples +> +> +> set.seed(290875) +> +> ### regression +> airq <- subset(airquality, !is.na(Ozone)) +> airct <- ctree(Ozone ~ ., data = airq, ++ controls = ctree_control(maxsurrogate = 3)) +> airct + + Conditional inference tree with 5 terminal nodes + +Response: Ozone +Inputs: Solar.R, Wind, Temp, Month, Day +Number of observations: 116 + +1) Temp <= 82; criterion = 1, statistic = 56.086 + 2) Wind <= 6.9; criterion = 0.998, statistic = 12.969 + 3)* weights = 10 + 2) Wind > 6.9 + 4) Temp <= 77; criterion = 0.997, statistic = 11.599 + 5)* weights = 48 + 4) Temp > 77 + 6)* weights = 21 +1) Temp > 82 + 7) Wind <= 10.3; criterion = 0.997, statistic = 11.712 + 8)* weights = 30 + 7) Wind > 10.3 + 9)* weights = 7 +> plot(airct) +> mean((airq$Ozone - predict(airct))^2) +[1] 403.6668 +> ### extract terminal node ID, two ways +> all.equal(predict(airct, type = "node"), where(airct)) +[1] TRUE +> +> ### classification +> irisct <- ctree(Species ~ .,data = iris) +> irisct + + Conditional inference tree with 4 terminal nodes + +Response: Species +Inputs: Sepal.Length, Sepal.Width, Petal.Length, Petal.Width +Number of observations: 150 + +1) Petal.Length <= 1.9; criterion = 1, statistic = 140.264 + 2)* weights = 50 +1) Petal.Length > 1.9 + 3) Petal.Width <= 1.7; criterion = 1, statistic = 67.894 + 4) Petal.Length <= 4.8; criterion = 0.999, statistic = 13.865 + 5)* weights = 46 + 4) Petal.Length > 4.8 + 6)* weights = 8 + 3) Petal.Width > 1.7 + 7)* weights = 46 +> plot(irisct) +> table(predict(irisct), iris$Species) + + setosa versicolor virginica + setosa 50 0 0 + versicolor 0 49 5 + virginica 0 1 45 +> +> ### estimated class probabilities, a list +> tr <- treeresponse(irisct, newdata = iris[1:10,]) +> +> ### ordinal regression +> data("mammoexp", package = "TH.data") +> mammoct <- ctree(ME ~ ., data = mammoexp) +> plot(mammoct) +> +> ### estimated class probabilities +> treeresponse(mammoct, newdata = mammoexp[1:10,]) +[[1]] +[1] 0.3990385 0.3798077 0.2211538 + +[[2]] +[1] 0.84070796 0.05309735 0.10619469 + +[[3]] +[1] 0.3990385 0.3798077 0.2211538 + +[[4]] +[1] 0.6153846 0.2087912 0.1758242 + +[[5]] +[1] 0.3990385 0.3798077 0.2211538 + +[[6]] +[1] 0.3990385 0.3798077 0.2211538 + +[[7]] +[1] 0.3990385 0.3798077 0.2211538 + +[[8]] +[1] 0.3990385 0.3798077 0.2211538 + +[[9]] +[1] 0.84070796 0.05309735 0.10619469 + +[[10]] +[1] 0.3990385 0.3798077 0.2211538 + +> +> ### survival analysis +> if (require("TH.data") && require("survival")) { ++ data("GBSG2", package = "TH.data") ++ GBSG2ct <- ctree(Surv(time, cens) ~ .,data = GBSG2) ++ plot(GBSG2ct) ++ treeresponse(GBSG2ct, newdata = GBSG2[1:2,]) ++ } +Loading required package: TH.data +Loading required package: survival +Loading required package: splines +[[1]] +Call: survfit(formula = y ~ 1, weights = weights) + +records n.max n.start events median 0.95LCL 0.95UCL + 248 248 248 88 2093 1814 NA + +[[2]] +Call: survfit(formula = y ~ 1, weights = weights) + +records n.max n.start events median 0.95LCL 0.95UCL + 166 166 166 77 1701 1174 2018 + +> +> ### if you are interested in the internals: +> ### generate doxygen documentation +> ## Not run: +> ##D +> ##D ### download src package into temp dir +> ##D tmpdir <- tempdir() +> ##D tgz <- download.packages("party", destdir = tmpdir)[2] +> ##D ### extract +> ##D untar(tgz, exdir = tmpdir) +> ##D wd <- setwd(file.path(tmpdir, "party")) +> ##D ### run doxygen (assuming it is there) +> ##D system("doxygen inst/doxygen.cfg") +> ##D setwd(wd) +> ##D ### have fun +> ##D browseURL(file.path(tmpdir, "party", "inst", +> ##D "documentation", "html", "index.html")) +> ##D +> ## End(Not run) +> +> +> +> cleanEx() + +detaching ‘package:survival’, ‘package:splines’, ‘package:TH.data’ + +> nameEx("ctree_memory") +> ### * ctree_memory +> +> flush(stderr()); flush(stdout()) +> +> ### Name: Memory Allocation +> ### Title: Memory Allocation +> ### Aliases: ctree_memory +> ### Keywords: misc +> +> ### ** Examples +> +> +> set.seed(290875) +> +> ### setup learning sample +> airq <- subset(airquality, !is.na(Ozone)) +> ls <- dpp(conditionalTree, Ozone ~ ., data = airq) +> +> ### setup memory and controls +> mem <- ctree_memory(ls) +> ct <- ctree_control(teststat = "max") +> +> ### fit 50 trees on bootstrap samples +> bs <- rmultinom(50, nrow(airq), rep(1, nrow(airq))/nrow(airq)) +> storage.mode(bs) <- "double" +> cfit <- conditionalTree@fit +> ens <- apply(bs, 2, function(w) cfit(ls, ct, weights = w, ++ fitmem = mem)) +> +> +> +> +> cleanEx() +> nameEx("mob") +> ### * mob +> +> flush(stderr()); flush(stdout()) +> +> ### Name: mob +> ### Title: Model-based Recursive Partitioning +> ### Aliases: mob mob-class coef.mob deviance.mob fitted.mob logLik.mob +> ### predict.mob print.mob residuals.mob sctest.mob summary.mob +> ### weights.mob +> ### Keywords: tree +> +> ### ** Examples +> +> +> 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: ++ fmBH <- mob(medv ~ lstat + rm | zn + indus + chas + nox + age + ++ dis + rad + tax + crim + b + ptratio, ++ control = mob_control(minsplit = 40), data = BostonHousing, ++ model = linearModel) ++ ++ ## print the resulting tree ++ fmBH ++ ## or better visualize it ++ plot(fmBH) ++ ++ ## extract coefficients in all terminal nodes ++ coef(fmBH) ++ ## look at full summary, e.g., for node 7 ++ summary(fmBH, node = 7) ++ ## results of parameter stability tests for that node ++ sctest(fmBH, node = 7) ++ ## -> no further significant instabilities (at 5% level) ++ ++ ## compute mean squared error (on training data) ++ mean((BostonHousing$medv - fitted(fmBH))^2) ++ mean(residuals(fmBH)^2) ++ deviance(fmBH)/sum(weights(fmBH)) ++ ++ ## evaluate logLik and AIC ++ logLik(fmBH) ++ AIC(fmBH) ++ ## (Note that this penalizes estimation of error variances, which ++ ## were treated as nuisance parameters in the fitting process.) ++ ++ ++ ## recursive partitioning of a logistic regression model ++ ## load data ++ data("PimaIndiansDiabetes", package = "mlbench") ++ ## partition logistic regression diabetes ~ glucose ++ ## wth respect to all remaining variables ++ fmPID <- mob(diabetes ~ glucose | pregnant + pressure + triceps + ++ insulin + mass + pedigree + age, ++ data = PimaIndiansDiabetes, model = glinearModel, ++ family = binomial()) ++ ++ ## fitted model ++ coef(fmPID) ++ plot(fmPID) ++ plot(fmPID, tp_args = list(cdplot = TRUE)) ++ } +Loading required package: mlbench +Loading required package: vcd +> +> +> +> cleanEx() + +detaching ‘package:vcd’, ‘package:mlbench’ + +> nameEx("panelfunctions") +> ### * panelfunctions +> +> flush(stderr()); flush(stdout()) +> +> ### Name: Panel Generating Functions +> ### Title: Panel-Generators for Visualization of Party Trees +> ### Aliases: node_inner node_terminal edge_simple node_surv node_barplot +> ### node_boxplot node_hist node_density node_scatterplot node_bivplot +> ### Keywords: hplot +> +> ### ** Examples +> +> +> set.seed(290875) +> +> airq <- subset(airquality, !is.na(Ozone)) +> airct <- ctree(Ozone ~ ., data = airq) +> +> ## default: boxplots +> plot(airct) +> +> ## change colors +> plot(airct, tp_args = list(col = "blue", fill = hsv(2/3, 0.5, 1))) +> ## equivalent to +> plot(airct, terminal_panel = node_boxplot(airct, col = "blue", ++ fill = hsv(2/3, 0.5, 1))) +> +> ### very simple; the mean is given in each terminal node +> plot(airct, type = "simple") +> +> ### density estimates +> plot(airct, terminal_panel = node_density) +> +> ### histograms +> plot(airct, terminal_panel = node_hist(airct, ymax = 0.06, ++ xscale = c(0, 250))) +> +> +> +> cleanEx() +> nameEx("plot.BinaryTree") +> ### * plot.BinaryTree +> +> flush(stderr()); flush(stdout()) +> +> ### Name: Plot BinaryTree +> ### Title: Visualization of Binary Regression Trees +> ### Aliases: plot.BinaryTree +> ### Keywords: hplot +> +> ### ** Examples +> +> +> set.seed(290875) +> +> airq <- subset(airquality, !is.na(Ozone)) +> airct <- ctree(Ozone ~ ., data = airq) +> +> ### regression: boxplots in each node +> plot(airct, terminal_panel = node_boxplot, drop_terminal = TRUE) +> +> if(require("TH.data")) { ++ ## classification: barplots in each node ++ data("GlaucomaM", package = "TH.data") ++ glauct <- ctree(Class ~ ., data = GlaucomaM) ++ plot(glauct) ++ plot(glauct, inner_panel = node_barplot, ++ edge_panel = function(ctreeobj, ...) { function(...) invisible() }, ++ tnex = 1) ++ ++ ## survival: Kaplan-Meier curves in each node ++ data("GBSG2", package = "TH.data") ++ library("survival") ++ gbsg2ct <- ctree(Surv(time, cens) ~ ., data = GBSG2) ++ plot(gbsg2ct) ++ plot(gbsg2ct, type = "simple") ++ } +Loading required package: TH.data +Loading required package: splines +> +> +> +> +> cleanEx() + +detaching ‘package:survival’, ‘package:splines’, ‘package:TH.data’ + +> nameEx("plot.mob") +> ### * plot.mob +> +> flush(stderr()); flush(stdout()) +> +> ### Name: plot.mob +> ### Title: Visualization of MOB Trees +> ### Aliases: plot.mob +> ### Keywords: hplot +> +> ### ** Examples +> +> +> 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("PimaIndiansDiabetes", package = "mlbench") ++ fmPID <- mob(diabetes ~ glucose | pregnant + pressure + triceps + ++ insulin + mass + pedigree + age, ++ data = PimaIndiansDiabetes, model = glinearModel, ++ family = binomial()) ++ ## default plot: spinograms with breaks from five point summary ++ plot(fmPID) ++ ## use the breaks from hist() instead ++ plot(fmPID, tp_args = list(fivenum = FALSE)) ++ ## user-defined breaks ++ plot(fmPID, tp_args = list(breaks = 0:4 * 50)) ++ ## CD plots instead of spinograms ++ plot(fmPID, tp_args = list(cdplot = TRUE)) ++ ## different smoothing bandwidth ++ plot(fmPID, tp_args = list(cdplot = TRUE, bw = 15)) ++ ++ } +Loading required package: mlbench +Loading required package: vcd +> +> +> +> cleanEx() + +detaching ‘package:vcd’, ‘package:mlbench’ + +> nameEx("readingSkills") +> ### * readingSkills +> +> flush(stderr()); flush(stdout()) +> +> ### Name: readingSkills +> ### Title: Reading Skills +> ### Aliases: readingSkills +> ### Keywords: datasets +> +> ### ** Examples +> +> +> set.seed(290875) +> readingSkills.cf <- cforest(score ~ ., data = readingSkills, ++ control = cforest_unbiased(mtry = 2, ntree = 50)) +> +> # standard importance +> varimp(readingSkills.cf) +nativeSpeaker age shoeSize + 12.69213 82.26737 13.60017 +> # the same modulo random variation +> varimp(readingSkills.cf, pre1.0_0 = TRUE) +nativeSpeaker age shoeSize + 13.06254 80.44754 14.38979 +> +> # conditional importance, may take a while... +> varimp(readingSkills.cf, conditional = TRUE) +nativeSpeaker age shoeSize + 11.870034 52.114547 1.461803 +> +> +> +> +> cleanEx() +> nameEx("reweight") +> ### * reweight +> +> flush(stderr()); flush(stdout()) +> +> ### Name: reweight +> ### Title: Re-fitting Models with New Weights +> ### Aliases: reweight reweight.linearModel reweight.glinearModel +> ### Keywords: regression +> +> ### ** Examples +> +> ## fit cars regression +> mf <- dpp(linearModel, dist ~ speed, data = cars) +> fm <- fit(linearModel, mf) +> fm +Linear model with coefficients: +(Intercept) speed + -17.579 3.932 +> +> ## re-fit, excluding the last 4 observations +> ww <- c(rep(1, 46), rep(0, 4)) +> reweight(fm, ww) +Linear model with coefficients: +(Intercept) speed + -8.723 3.210 +> +> +> +> cleanEx() +> nameEx("varimp") +> ### * varimp +> +> flush(stderr()); flush(stdout()) +> +> ### Name: varimp +> ### Title: Variable Importance +> ### Aliases: varimp varimpAUC +> ### Keywords: tree +> +> ### ** Examples +> +> +> set.seed(290875) +> readingSkills.cf <- cforest(score ~ ., data = readingSkills, ++ control = cforest_unbiased(mtry = 2, ntree = 50)) +> +> # standard importance +> varimp(readingSkills.cf) +nativeSpeaker age shoeSize + 12.69213 82.26737 13.60017 +> # the same modulo random variation +> varimp(readingSkills.cf, pre1.0_0 = TRUE) +nativeSpeaker age shoeSize + 13.06254 80.44754 14.38979 +> +> # conditional importance, may take a while... +> varimp(readingSkills.cf, conditional = TRUE) +nativeSpeaker age shoeSize + 11.870034 52.114547 1.461803 +> +> ## Not run: +> ##D data("GBSG2", package = "TH.data") +> ##D ### add a random covariate for sanity check +> ##D set.seed(29) +> ##D GBSG2$rand <- runif(nrow(GBSG2)) +> ##D object <- cforest(Surv(time, cens) ~ ., data = GBSG2, +> ##D control = cforest_unbiased(ntree = 20)) +> ##D vi <- varimp(object) +> ##D ### compare variable importances and absolute z-statistics +> ##D layout(matrix(1:2)) +> ##D barplot(vi) +> ##D barplot(abs(summary(coxph(Surv(time, cens) ~ ., data = GBSG2))$coeff[,"z"])) +> ##D ### looks more or less the same +> ##D +> ## End(Not run) +> +> +> +> ### * <FOOTER> +> ### +> options(digits = 7L) +> base::cat("Time elapsed: ", proc.time() - base::get("ptime", pos = 'CheckExEnv'),"\n") +Time elapsed: 12.888 0.188 13.098 0 0 +> grDevices::dev.off() +null device + 1 +> ### +> ### Local variables: *** +> ### mode: outline-minor *** +> ### outline-regexp: "\\(> \\)?### [*]+" *** +> ### End: *** +> quit('no')