[R] extracting ctree() output information

Steven J. Clark sclark at nltx.com
Thu Apr 8 01:52:44 CEST 2010


Thank you for the pointer to: help("BinaryTree-class").

It probably isn't the prettiest solution, but I was able to extract what
I needed by doing something like the following:

	nodes = where(fit)
	freq = treeresponse(fit)

	for(i in 1:100)
	{
	   if(nodes[i]==40)
	   {
		print(paste(i,nodes[i],freq[i]))
	   }
	}

where the for loop from 1:100 is big enough to find at least one
instance of a datapoint that gets classified in terminal node "40" and
to print out its associated frequency distribution.  I can change the
"40" to whatever terminal node I'm after and make the for loop larger if
1:100 is too small to find at least one instance.

--Steve

-----Original Message-----
From: Achim Zeileis [mailto:Achim.Zeileis at uibk.ac.at] 
Sent: Wednesday, April 07, 2010 4:57 PM
To: Steven J. Clark
Cc: r-help at r-project.org
Subject: Re: [R] extracting ctree() output information

On Wed, 7 Apr 2010, Steven J. Clark wrote:

> Hi,
>
> I am new to R and am using the ctree() function to do customer 
> segmentation.  I am using the following code to generate the tree:
>
> treedata$Response<-factor(treedata$Conversion)
> fit<-ctree(Response ~
> .,controls=ctree_control(mincriterion=0.99,maxdepth=4),data=treedata)
> plot(fit)
> print(fit)
>
> The variable "Response" above equals 1 if the customer responded to an

> offering and 0 otherwise.  Everything works great, however I am 
> struggling to extract the information I need from the output.  When I 
> look at the output from print(fit) I see things similar to:
>
> 4) age <=42; criterion 1, statistic = 73.055
>  5)* weights = 5843
>
> What this is telling me is that 5,843 customers ended up being 
> classified into the group labeled 5.  What I would really like to 
> know, however, is what proportion of this 5,843 had Response=1 and 
> what proportion had Response=0 so that I could make some inference 
> about the
> P(Response) for customers that match the demographic characteristics 
> of each terminal node.

See
   help("BinaryTree-class")
especially the examples section. With where(fit) you can query the node
number and with treeresponse(fit) you get a list with the frequency
distribution. There are also some worked examples how you can compute
other quantities of interest.

hth,
Z

> Any help on how to extract this information would be greatly 
> appreciated
> -- thanks!
>
> 	[[alternative HTML version deleted]]
>
> ______________________________________________
> R-help at r-project.org mailing list
> https://stat.ethz.ch/mailman/listinfo/r-help
> PLEASE do read the posting guide 
> http://www.R-project.org/posting-guide.html
> and provide commented, minimal, self-contained, reproducible code.
>



More information about the R-help mailing list