Visualization of Binary Regression Trees

Share:

Description

plot method for BinaryTree objects with extended facilities for plugging in panel functions.

Usage

1
2
3
4
5
6
7
8
## S3 method for class 'BinaryTree'
plot(x, main = NULL, type = c("extended", "simple"),
     terminal_panel = NULL, tp_args = list(),
     inner_panel = node_inner, ip_args = list(),
     edge_panel = edge_simple, ep_args = list(),
     drop_terminal = (type[1] == "extended"), 
     tnex = (type[1] == "extended") + 1, newpage = TRUE,  
     pop = TRUE, ...)

Arguments

x

an object of class BinaryTree.

main

an optional title for the plot.

type

a character specifying the complexity of the plot: extended tries to visualize the distribution of the response variable in each terminal node whereas simple only gives some summary information.

terminal_panel

an optional panel function of the form function(node) plotting the terminal nodes. Alternatively, a panel generating function of class "grapcon_generator" that is called with arguments x and tp_args to set up a panel function. By default, an appropriate panel function is chosen depending on the scale of the dependent variable.

tp_args

a list of arguments passed to terminal_panel if this is a "grapcon_generator" object.

inner_panel

an optional panel function of the form function(node) plotting the inner nodes. Alternatively, a panel generating function of class "grapcon_generator" that is called with arguments x and ip_args to set up a panel function.

ip_args

a list of arguments passed to inner_panel if this is a "grapcon_generator" object.

edge_panel

an optional panel function of the form function(split, ordered = FALSE, left = TRUE) plotting the edges. Alternatively, a panel generating function of class "grapcon_generator" that is called with arguments x and ip_args to set up a panel function.

ep_args

a list of arguments passed to edge_panel if this is a "grapcon_generator" object.

drop_terminal

a logical indicating whether all terminal nodes should be plotted at the bottom.

tnex

a numeric value giving the terminal node extension in relation to the inner nodes.

newpage

a logical indicating whether grid.newpage() should be called.

pop

a logical whether the viewport tree should be popped before return.

...

additional arguments passed to callies.

Details

This plot method for BinaryTree objects provides an extensible framework for the visualization of binary regression trees. The user is allowed to specify panel functions for plotting terminal and inner nodes as well as the corresponding edges. Panel functions for plotting inner nodes, edges and terminal nodes are available for the most important cases and can serve as the basis for user-supplied extensions, see node_inner and vignette("party").

More details on the ideas and concepts of panel-generating functions and "grapcon_generator" objects in general can be found in Meyer, Zeileis and Hornik (2005).

References

David Meyer, Achim Zeileis, and Kurt Hornik (2006). The Strucplot Framework: Visualizing Multi-Way Contingency Tables with vcd. Journal of Statistical Software, 17(3). http://www.jstatsoft.org/v17/i03/

See Also

node_inner, node_terminal, edge_simple, node_surv, node_barplot, node_boxplot, node_hist, node_density

Examples

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
  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")  
  }