2017-09-14 34 views
1

在package partykit中,有一种方法可以通过指定预测器和分割来构建自定义树。例如:R-partykit - 自定义模型树节点和分割

data("WeatherPlay", package = "partykit") 

#create a split 
sp_o <- partysplit(3L, breaks = 75) 

#create a node 
n1 <- partynode(id = 1L, split = sp_o, kids = lapply(2L:3L, partynode)) 

#and make a "tree" out of it 
t2 <- party(
    n1, 
    data = WeatherPlay, 
    fitted = data.frame(
    "(fitted)" = fitted_node(n1, data = WeatherPlay), 
    "(response)" = WeatherPlay$play, 
    check.names = FALSE 
), 
    terms = terms(play ~ ., data = WeatherPlay), 
) 

t2 <- as.constparty(t2) 
t2 
plot(t2) 

这是可能的模型树(由mob()返回)?我可以通过节点构建树节点,然后将指定的函数适合终端节点吗?

回答

1

原则上,可以手动构建"modelparty"对象(由mob()返回)。但是,在您引用的示例中,不存在像as.constparty()这样的简单强制功能。原因在于,对于构建模型树,以及打印和特别是使用它们进行预测,需要关于模型的更多详细信息。

我会建议建立树状结构("partynode")第一,然后填写整体$info插槽(与callformulaFormulatermsfitcontroldotsnreg)。然后应该可以调用refit.modelparty()来重新安装所有终端节点中的模型。然后这可以用于填充$node$info(与coefficients,objfun,nobs,...)。

免责声明:所有这些都完全没有经过测试。但不是模仿"modelparty",您当然也可以创建自己的方式将模型存储在"party"对象中,并使用由partykit提供的更多基本构建块。

+0

谢谢你的回答。我不知道如果我不会错过一些已经实施的工具...所以我不会重新发明轮子:) –

+0

当然,没问题。我们可能会在这个方向上扩展'partykit'。我们正在研究一些可以允许插入不同分割标准的想法等等。但目前最好的方法是“推出自己的”树。 –