--- a +++ b/partyMod/man/BinaryTree-class.Rd @@ -0,0 +1,140 @@ +\name{BinaryTree Class} +\docType{class} +\alias{BinaryTree-class} +\alias{weights} +\alias{weights-methods} +\alias{weights,BinaryTree-method} +\alias{show,BinaryTree-method} +\alias{where} +\alias{where-methods} +\alias{where,BinaryTree-method} +\alias{response} +\alias{response-methods} +\alias{response,BinaryTree-method} +\alias{nodes} +\alias{nodes-methods} +\alias{nodes,BinaryTree,integer-method} +\alias{nodes,BinaryTree,numeric-method} +\alias{treeresponse} +\alias{treeresponse-methods} +\alias{treeresponse,BinaryTree-method} +\title{Class "BinaryTree"} +\description{A class for representing binary trees.} +\section{Objects from the Class}{ +Objects can be created by calls of the form \code{new("BinaryTree", ...)}. +The most important slot is \code{tree}, a (recursive) list with elements +\describe{ + \item{nodeID}{ an integer giving the number of the node, starting with + \code{1} in the root node.} + \item{weights}{ the case weights (of the learning sample) corresponding to + this node.} + \item{criterion}{ a list with test statistics and p-values for each partial + hypothesis.} + \item{terminal}{ a logical specifying if this is a terminal node.} + \item{psplit}{ primary split: a list with elements \code{variableID} (the + number of the input variable splitted), \code{ordered} (a + logical whether the input variable is ordered), + \code{splitpoint} (the cutpoint or set of levels to the left), + \code{splitstatistics} saves the process of standardized + two-sample statistics the split point estimation is based on. + The logical \code{toleft} determines if observations + go left or right down the tree. For nominal splits, the slot + \code{table} is a vector being greater zero if the + corresponding level is available in the corresponding node.} + \item{ssplits}{ a list of surrogate splits, each with the same elements as + \code{psplit}.} + \item{prediction}{ the prediction of the node: the mean for numeric + responses and the conditional class probabilities for + nominal or ordered respones. For censored responses, + this is the mean of the logrank scores and useless as + such.} + \item{left}{ a list representing the left daughter node. } + \item{right}{ a list representing the right daugther node.} +} + +Please note that this data structure may be subject to change in future +releases of the package. + +} +\section{Slots}{ + \describe{ + \item{\code{data}:}{ an object of class \code{"\linkS4class{ModelEnv}"}.} + \item{\code{responses}:}{ an object of class \code{"VariableFrame"} + storing the values of the response variable(s). } + \item{\code{cond_distr_response}:}{ a function computing the conditional + distribution of the response. } + \item{\code{predict_response}:}{ a function for computing predictions. } + \item{\code{tree}:}{ a recursive list representing the tree. See above. } + \item{\code{where}:}{ an integer vector of length n (number of + observations in the learning sample) giving the + number of the terminal node the corresponding + observations is element of. } + \item{\code{prediction_weights}:}{ a function for extracting weights from + terminal nodes. } + \item{\code{get_where}:}{ a function for determining the number + of terminal nodes observations fall into. } + \item{\code{update}:}{ a function for updating weights.} + } +} +\section{Extends}{ +Class \code{"BinaryTreePartition"}, directly. +} +\section{Methods}{ +\describe{ + \item{\code{response(object, ...)}:}{extract the response variables the + tree was fitted to.} + \item{\code{treeresponse(object, newdata = NULL, ...)}:}{compute + statistics for the conditional distribution of the response as + modelled by the tree. For regression problems, this is just the mean. + For nominal or ordered responses, estimated conditional class + probabilities are returned. Kaplan-Meier curves are computed for + censored responses. Note that a list with one element for each + observation is returned.} + \item{\code{Predict(object, newdata = NULL, ...)}:}{ compute predictions.} + \item{\code{weights(object, newdata = NULL, ...)}:}{ extract the weight + vector from terminal nodes each element of the learning sample is + element of (\code{newdata = NULL}) and for new observations, + respectively.} + \item{\code{where(object, newdata = NULL, ...)}:}{ extract the number of + the terminal nodes each element of the learning sample is + element of (\code{newdata = NULL}) and for new observations, + respectively.} + \item{\code{nodes(object, where, ...)}:}{ extract the nodes with + given number (\code{where}).} + \item{\code{plot(x, ...)}:}{ a plot method for \code{BinaryTree} + objects, see \code{\link{plot.BinaryTree}}.} + \item{\code{print(x, ...)}:}{ a print method for \code{BinaryTree} + objects.} +} +} +\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))) + + ### extract weights and compute predictions + pmean <- sapply(weights(airct), function(w) weighted.mean(airq$Ozone, w)) + + ### the same as + drop(Predict(airct)) + + ### or + unlist(treeresponse(airct)) + + ### 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") +} +\keyword{classes}