在partykit中提取终端节点上的信息:具有大量多变量响应的ctree

时间:2016-04-20 02:14:04

标签: r party

我正在使用partykit:ctree来探索我的数据集,这是一组大约15,000个海滩调查,调查从50个不同类别中发现的碎片数量。数据中有很多零,总碎片数量很大。我还有一系列自变量,包括一些因子,一些计数数据和一些连续数据。

这是一个非常小的样本数据集:

Counts<- as.data.frame(matrix (rpois(100,1), ncol=5))
colnames(Counts)<-c("Glass", "HardPlastic", "SoftPlastic", "PlasticBag", "Fragments")
State<-rep(c("CA","OR","WA"), each=6)
Counts$State<-c(State,"CA","OR")
County<-rep((1:9), each=2)
Counts$County<-c(County, 1,4)
Counts$Distance<-c(10, 15, 13, 19, 18, 23, 38, 40, 49, 44, 47, 45, 52, 53, 55, 59, 51, 53, 14, 33)
Year<-rep(c("2010","2011","2012"), times=7)
Counts$Year<-Year[1:20]

我使用以下代码对数据进行分区:

M.2<-ctree(Glass + HardPlastic + SoftPlastic + PlasticBag + Fragments ~ 
         as.factor (State) + as.factor (County) + Distance + as.factor (Year), data=Counts)
plot(M.2, terminal_panel = node_barplot, cex = 0.5)

这提供了一个可爱的图表,但是如何提取每个终端节点的成员资格?如果只有少数项目,我可以在图表中看到它,但是一旦可能类别的数量增加到50,就会更难以图形方式查看它。我想看到节点中包含的信息;特别是每个终端节点中包含的每个单独类别的相对概率。

我知道如果这是一个BinaryTree类,我可以使用nodes参数,但是当我查询类(M.2)时,它告诉我它来自constaparty类,而我还没有能够找到如何从这个类中获取节点信息。

我还遇到了一个次要问题,就是当我在我的示例数据集上运行ctree时,它每次都会崩溃R!它与我的实际数据集一起工作正常,但我无法弄清楚样本集的错误。

编辑:所需的输出将是:

Node15:
硬塑料30
玻璃5
软塑料23
塑料袋6
碎片12

1 个答案:

答案 0 :(得分:1)

我刚刚与软件包维护者(Torsten Hothorn)和ctree()的主要作者通过电子邮件发送,这些请求最适合这些请求。 (他目前没有参与SO。)显然,这是partykitctree()中的一个错误,他正在努力解决这个问题。目前最好使用旧的party版本 - 希望很快就会有一个固定的partykit版本。