首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用ctree {partykit}的多路分裂树

使用ctree {partykit}的多路分裂树
EN

Stack Overflow用户
提问于 2015-12-17 20:12:31
回答 1查看 3K关注 0票数 2

我想使用partykit的ctree函数使用条件推理树来分析我的数据。我特别使用这个函数,因为--如果我理解正确--它是唯一允许多路分裂的函数之一。我需要这个选项,因为我所有的变量都是多级(无序)分类变量。

但是,试图使用ctree_control启用多路拆分会出现以下错误:

代码语言:javascript
复制
aufprallentree <- ctree(case ~., data = aufprallen,
  control = ctree_control(minsplit = 10, minbucket = 5, multiway = TRUE))
## Error in 1:levels(x) : NA/NaN argument
## In addition: Warning messages:
## 1: In 1:levels(x) :
##   numerical expression has 4 elements: only the first used
## 2: In partysplit(as.integer(isel), index = 1:levels(x)) :
##   NAs introduced by coercion

有人知道怎么解决这个问题吗?或者如果我搞错了,ctree不允许多路分裂?

为了清晰起见,我的数据概述:(没有NAs)

代码语言:javascript
复制
str(aufprallen)
## 'data.frame':    299 obs. of  10 variables:
##  $ prep          : Factor w/ 6 levels "an","auf","hinter",..: 2 2 2 2 2 2 1 2 2 2 ...
##  $ prep_main     : Factor w/ 2 levels "auf","other": 1 1 1 1 1 1 2 1 1 1 ...
##  $ case          : Factor w/ 2 levels "acc","dat": 1 1 2 1 1 1 2 1 1 1 ...
##  $ sense         : Factor w/ 3 levels "crashdown","crashinto",..: 2 2 1 3 2 2 1 2 1 2 ...
##  $ PO_type       : Factor w/ 4 levels "object","region",..: 4 4 3 1 4 4 3 4 3 4 ...
##  $ PO_type2      : Factor w/ 3 levels "object","region",..: 1 1 3 1 1 1 3 1 3 1 ...
##  $ perfectivity  : Factor w/ 2 levels "imperfective",..: 1 1 2 2 1 1 1 1 1 1 ...
##  $ mit_Körperteil: Factor w/ 2 levels "n","y": 1 1 1 1 1 1 1 1 1 1 ...
##  $ PP_place      : Factor w/ 4 levels "back","front",..: 4 1 1 1 1 1 1 1 1 1 ...
##  $ PP_place_main : Factor w/ 3 levels "marked","rel",..: 2 3 3 3 3 3 3 3 3 3 ...

提前感谢!

EN

回答 1

Stack Overflow用户

发布于 2015-12-29 21:01:41

以下是几点意见:

  • 1:levels(x)的错误是ctree中的一个错误。代码应该是1:nlevels(x)。我只是在package上修正了这个问题--这样你就可以从那里查看SVN,如果你现在想使用这个选项,可以手动安装这个软件包。(如果您需要更详细的信息,请与我联系。)未来几周,Torsten可能还会发布新的CRAN版本。
  • 另一个可以学习多路分割的二进制分类树的函数是glmtree包中的partykit。代码是glmtree(case ~ ., data = aufprallen, family = binomial, catsplit = "multiway", minsize = 5)。用参数不稳定性检验代替关联条件推理来确定分裂变量,并采用形式似然。但在许多情况下,结果与ctree相当相似。
  • 在这两种算法中,多路分裂都是非常基本的:如果选择一个分类变量进行分裂,那么就根本不进行分割选择。相反,所有类别都有自己的子节点。有些算法试图用数据驱动的子节点数(介于2和类别数之间)来确定类别的最佳分组。
  • 即使您有两个以上级别的绝对预测变量,您也不需要多路拆分。许多算法只使用二进制分裂,因为任何多向分裂都可以用二进制拆分序列来表示。然而,在许多数据集中,事实证明,在一个分裂因子中不分离所有类别,而仅仅分离几个类别是有益的。

总的来说,我的建议是从标准的条件推理树开始,只使用二进制拆分。只有当这导致许多二进制分裂在相同的因素时,我才会继续探讨多路分裂。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34343425

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档